comparison demos/browser/bookmarks.d @ 94:87bb4e622f9e

more porting
author mandel
date Thu, 28 May 2009 22:11:52 +0000
parents 85c59c4e5f19
children dcd36d8db2da
comparison
equal deleted inserted replaced
93:55fd7080c4b9 94:87bb4e622f9e
43 43
44 44
45 import qt.core.QObject; 45 import qt.core.QObject;
46 import qt.core.QAbstractItemModel; 46 import qt.core.QAbstractItemModel;
47 47
48 import qt.gui.QUndoCommand;
49 48
50 import qt.core.QBuffer; 49 import qt.core.QBuffer;
51 import qt.core.QFile; 50 import qt.core.QFile;
52 import qt.core.QMimeData; 51 import qt.core.QMimeData;
53 52 import qt.core.QPersistentModelIndex;
53
54 import qt.gui.QUndoStack;
55 import qt.gui.QUndoCommand;
54 import qt.gui.QDesktopServices; 56 import qt.gui.QDesktopServices;
55 import qt.gui.QDragEnterEvent; 57 import qt.gui.QDragEnterEvent;
56 import qt.gui.QFileDialog; 58 import qt.gui.QFileDialog;
57 import qt.gui.QHeaderView; 59 import qt.gui.QHeaderView;
58 import qt.gui.QIcon; 60 import qt.gui.QIcon;
59 import qt.gui.QMessageBox; 61 import qt.gui.QMessageBox;
60 import qt.gui.QToolButton; 62 import qt.gui.QToolButton;
61 63
62 import QtWebKit.QWebSettings; 64 import qt.webkit.QWebSettings;
63 65
64 import qt.core.QDebug; 66 //import qt.core.QDebug;
65 67
66 import bookmarks; 68 import bookmarks;
67 import autosaver; 69 import autosaver;
68 import browserapplication; 70 import browserapplication;
69 import history; 71 import history;
236 238
237 XbelWriter writer; 239 XbelWriter writer;
238 string dir = QDesktopServices.storageLocation(QDesktopServices.DataLocation); 240 string dir = QDesktopServices.storageLocation(QDesktopServices.DataLocation);
239 string bookmarkFile = dir ~ "/bookmarks.xbel"; 241 string bookmarkFile = dir ~ "/bookmarks.xbel";
240 if (!writer.write(bookmarkFile, m_bookmarkRootNode)) 242 if (!writer.write(bookmarkFile, m_bookmarkRootNode))
241 qWarning() << "BookmarkManager: error saving to" << bookmarkFile; 243 qWarning("BookmarkManager: error saving to" ~ bookmarkFile);
242 } 244 }
243 245
244 private: 246 private:
245 247
246 void load() 248 void load()
501 case Qt.EditRole: 503 case Qt.EditRole:
502 case Qt.DisplayRole: 504 case Qt.DisplayRole:
503 if (bookmarkNode.type() == BookmarkNode.Separator) { 505 if (bookmarkNode.type() == BookmarkNode.Separator) {
504 switch (index.column()) { 506 switch (index.column()) {
505 case 0: return QString(50, 0xB7); 507 case 0: return QString(50, 0xB7);
506 case 1: return QString(); 508 case 1: return null;
507 } 509 }
508 } 510 }
509 511
510 switch (index.column()) { 512 switch (index.column()) {
511 case 0: return bookmarkNode.title; 513 case 0: return bookmarkNode.title;
512 case 1: return bookmarkNode.url; 514 case 1: return bookmarkNode.url;
513 } 515 }
514 break; 516 break;
515 case BookmarksModel.UrlRole: 517 case BookmarksModel.UrlRole:
516 return QUrl(bookmarkNode.url); 518 return new QUrl(bookmarkNode.url);
517 break; 519 break;
518 case BookmarksModel.UrlStringRole: 520 case BookmarksModel.UrlStringRole:
519 return bookmarkNode.url; 521 return bookmarkNode.url;
520 break; 522 break;
521 case BookmarksModel.TypeRole: 523 case BookmarksModel.TypeRole:
577 int parentRow = grandParentNode.children().indexOf(parentNode); 579 int parentRow = grandParentNode.children().indexOf(parentNode);
578 assert(parentRow >= 0); 580 assert(parentRow >= 0);
579 return createIndex(parentRow, 0, parentNode); 581 return createIndex(parentRow, 0, parentNode);
580 } 582 }
581 583
582 Qt.ItemFlags flags(QModelIndex index) 584 int flags(QModelIndex index)
583 { 585 {
584 if (!index.isValid()) 586 if (!index.isValid())
585 return Qt.NoItemFlags; 587 return Qt.NoItemFlags;
586 588
587 Qt.ItemFlags flags = Qt.ItemIsSelectable | Qt.ItemIsEnabled; 589 int flags = Qt_ItemFlag.ItemIsSelectable | Qt_ItemFlag.ItemIsEnabled;
588 590
589 BookmarkNode bookmarkNode = node(index); 591 BookmarkNode bookmarkNode = node(index);
590 592
591 if (bookmarkNode != m_bookmarksManager.menu() && bookmarkNode != m_bookmarksManager.toolbar()) { 593 if (bookmarkNode != m_bookmarksManager.menu() && bookmarkNode != m_bookmarksManager.toolbar()) {
592 flags |= Qt.ItemIsDragEnabled; 594 flags |= Qt_ItemFlag.ItemIsDragEnabled;
593 if (bookmarkNode.type() != BookmarkNode.Separator) 595 if (bookmarkNode.type() != BookmarkNode.Separator)
594 flags |= Qt.ItemIsEditable; 596 flags |= Qt_ItemFlag.ItemIsEditable;
595 } 597 }
596 if (hasChildren(index)) 598 if (hasChildren(index))
597 flags |= Qt.ItemIsDropEnabled; 599 flags |= Qt_ItemFlag.ItemIsDropEnabled;
598 return flags; 600 return flags;
599 } 601 }
600 602
601 Qt.DropActions supportedDropActions() 603 int supportedDropActions()
602 { 604 {
603 return Qt.CopyAction | Qt.MoveAction; 605 return Qt_DropActiont.CopyAction | Qt_DropAction.MoveAction;
604 } 606 }
605 607
606 bool removeRows(int row, int count, QModelIndex parent = QModelIndex()) 608 bool removeRows(int row, int count, QModelIndex parent = QModelIndex())
607 { 609 {
608 if (row < 0 || count <= 0 || row + count > rowCount(parent)) 610 if (row < 0 || count <= 0 || row + count > rowCount(parent))
621 m_endMacro = false; 623 m_endMacro = false;
622 } 624 }
623 return true; 625 return true;
624 } 626 }
625 627
626 bool setData(QModelIndex index, QVariant value, int role = Qt.EditRole) 628 bool setData(QModelIndex index, QVariant value, int role = Qt_ItemDataRole.EditRole)
627 { 629 {
628 if (!index.isValid() || (flags(index) & Qt.ItemIsEditable) == 0) 630 if (!index.isValid() || (flags(index) & Qt_ItemFlag.ItemIsEditable) == 0)
629 return false; 631 return false;
630 632
631 BookmarkNode item = node(index); 633 BookmarkNode item = node(index);
632 634
633 switch (role) { 635 switch (role) {
634 case Qt.EditRole: 636 case Qt_ItemFlag.EditRole:
635 case Qt.DisplayRole: 637 case Qt_ItemFlag.DisplayRole:
636 if (index.column() == 0) { 638 if (index.column() == 0) {
637 m_bookmarksManager.setTitle(item, value.toString()); 639 m_bookmarksManager.setTitle(item, value.toString());
638 break; 640 break;
639 } 641 }
640 if (index.column() == 1) { 642 if (index.column() == 1) {
654 } 656 }
655 657
656 return true; 658 return true;
657 } 659 }
658 660
659 QMimeData mimeData(QModelIndexList indexes) 661 QMimeData mimeData(QModelIndex[] indexes)
660 { 662 {
661 QMimeData mimeData = new QMimeData(); 663 auto mimeData = new QMimeData();
662 QByteArray data; 664 auto data = new QByteArray;
663 auto stream = new QDataStream(&data, QIODevice.WriteOnly); 665 auto stream = new QDataStream(data, QIODevice.WriteOnly);
664 foreach (QModelIndex index; indexes) { 666 foreach (QModelIndex index; indexes) {
665 if (index.column() != 0 || !index.isValid()) 667 if (index.column() != 0 || !index.isValid())
666 continue; 668 continue;
667 QByteArray encodedData; 669 auto encodedData = new QByteArray;
668 auto buffer = new QBuffer(&encodedData); 670 auto buffer = new QBuffer(encodedData);
669 buffer.open(QBuffer.ReadWrite); 671 buffer.open(QBuffer.ReadWrite);
670 XbelWriter writer; 672 auto writer = new XbelWriter;
671 const BookmarkNode parentNode = node(index); 673 BookmarkNode parentNode = node(index);
672 writer.write(&buffer, parentNode); 674 writer.write(buffer, parentNode);
673 stream << encodedData; 675 stream << encodedData;
674 } 676 }
675 mimeData.setData(MIMETYPE, data); 677 mimeData.setData(MIMETYPE, data);
676 return mimeData; 678 return mimeData;
677 } 679 }
681 string[] mimeTypes() 683 string[] mimeTypes()
682 { 684 {
683 return [ MIMETYPE ]; 685 return [ MIMETYPE ];
684 } 686 }
685 687
686 bool dropMimeData(QMimeData data, Qt.DropAction action, int row, int column, QModelIndex parent) 688 bool dropMimeData(QMimeData data, Qt_DropAction action, int row, int column, QModelIndex parent)
687 { 689 {
688 if (action == Qt.IgnoreAction) 690 if (action == Qt_DropAction.IgnoreAction)
689 return true; 691 return true;
690 692
691 if (!data.hasFormat(MIMETYPE) || column > 0) 693 if (!data.hasFormat(MIMETYPE) || column > 0)
692 return false; 694 return false;
693 695
694 QByteArray ba = data.data(MIMETYPE); 696 QByteArray ba = data.data(MIMETYPE);
695 QDataStream stream = new QDataStream(&ba, QIODevice.ReadOnly); 697 QDataStream stream = new QDataStream(ba, QIODevice.ReadOnly);
696 if (stream.atEnd()) 698 if (stream.atEnd())
697 return false; 699 return false;
698 700
699 QUndoStack undoStack = m_bookmarksManager.undoRedoStack(); 701 QUndoStack undoStack = m_bookmarksManager.undoRedoStack();
700 undoStack.beginMacro("Move Bookmarks"); 702 undoStack.beginMacro("Move Bookmarks");
701 703
702 while (!stream.atEnd()) { 704 while (!stream.atEnd()) {
703 QByteArray encodedData; 705 auto encodedData = new QByteArray;
704 stream >> encodedData; 706 stream >> encodedData;
705 QBuffer buffer = new QBuffer(&encodedData); 707 auto buffer = new QBuffer(encodedData);
706 buffer.open(QBuffer.ReadOnly); 708 buffer.open(QBuffer.ReadOnly);
707 709
708 auto reader = new XbelReader; 710 auto reader = new XbelReader;
709 BookmarkNode rootNode = reader.read(&buffer); 711 BookmarkNode rootNode = reader.read(buffer);
710 BookmarkNode[] children = rootNode.children(); 712 BookmarkNode[] children = rootNode.children();
711 for (int i = 0; i < children.count(); ++i) { 713 for (int i = 0; i < children.count(); ++i) {
712 BookmarkNode bookmarkNode = children[i]; 714 BookmarkNode bookmarkNode = children[i];
713 rootNode.remove(bookmarkNode); 715 rootNode.remove(bookmarkNode);
714 row = qMax(0, row); 716 row = qMax(0, row);
839 Add bookmark dialog 841 Add bookmark dialog
840 */ 842 */
841 843
842 import ui_addbookmarkdialog; 844 import ui_addbookmarkdialog;
843 845
844 class AddBookmarkDialog : public QDialog, public Ui_AddBookmarkDialog 846 class AddBookmarkDialog : public QDialog //, public Ui_AddBookmarkDialog
845 { 847 {
848 AddBookmarkDialog ui;
849
846 public: 850 public:
847 851
848 this(string url, string title, QWidget parent = null, BookmarksManager bookmarkManager = null) 852 this(string url, string title, QWidget parent = null, BookmarksManager bookmarkManager = null)
849 //: QDialog(parent) 853 {
850 { 854 super(parent);
851 m_url = url; 855 m_url = url;
852 m_bookmarksManager = bookmarkManager; 856 m_bookmarksManager = bookmarkManager;
853 857
854 setWindowFlags(Qt.Sheet); 858 setWindowFlags(Qt.Sheet);
855 if (!m_bookmarksManager) 859 if (!m_bookmarksManager)
856 m_bookmarksManager = BrowserApplication.bookmarksManager(); 860 m_bookmarksManager = BrowserApplication.bookmarksManager();
857 setupUi(this); 861 ui.setupUi(this);
858 QTreeView view = new QTreeView(this); 862 QTreeView view = new QTreeView(this);
859 m_proxyModel = new AddBookmarkProxyModel(this); 863 m_proxyModel = new AddBookmarkProxyModel(this);
860 BookmarksModel model = m_bookmarksManager.bookmarksModel(); 864 BookmarksModel model = m_bookmarksManager.bookmarksModel();
861 m_proxyModel.setSourceModel(model); 865 m_proxyModel.setSourceModel(model);
862 view.setModel(m_proxyModel); 866 view.setModel(m_proxyModel);
900 } 904 }
901 905
902 import ui_bookmarks; 906 import ui_bookmarks;
903 907
904 //class TreeProxyModel; 908 //class TreeProxyModel;
905 class BookmarksDialog : public QDialog, public Ui_BookmarksDialog 909 class BookmarksDialog : public QDialog //, public Ui_BookmarksDialog
906 { 910 {
911 BookmarksDialog ui;
912
907 mixin Signal!("openUrl", QUrl /*url*/); 913 mixin Signal!("openUrl", QUrl /*url*/);
908 914
909 public: 915 public:
910 916
911 this(QWidget parent = null, BookmarksManager manager = null) 917 this(QWidget parent = null, BookmarksManager manager = null)
912 //: QDialog(parent) 918 {
913 { 919 super(parent);
914 m_bookmarksManager = manager; 920 m_bookmarksManager = manager;
915 if (!m_bookmarksManager) 921 if (!m_bookmarksManager)
916 m_bookmarksManager = BrowserApplication.bookmarksManager(); 922 m_bookmarksManager = BrowserApplication.bookmarksManager();
917 setupUi(this); 923 ui.setupUi(this);
918 924
919 tree.setUniformRowHeights(true); 925 tree.setUniformRowHeights(true);
920 tree.setSelectionBehavior(QAbstractItemView.SelectRows); 926 tree.setSelectionBehavior(QAbstractItemView.SelectRows);
921 tree.setSelectionMode(QAbstractItemView.ContiguousSelection); 927 tree.setSelectionMode(QAbstractItemView.ContiguousSelection);
922 tree.setTextElideMode(Qt.ElideMiddle); 928 tree.setTextElideMode(Qt.ElideMiddle);
1123 for (int i = 0; i < m_bookmarksModel.rowCount(m_root); ++i) { 1129 for (int i = 0; i < m_bookmarksModel.rowCount(m_root); ++i) {
1124 QModelIndex idx = m_bookmarksModel.index(i, 0, m_root); 1130 QModelIndex idx = m_bookmarksModel.index(i, 0, m_root);
1125 if (m_bookmarksModel.hasChildren(idx)) { 1131 if (m_bookmarksModel.hasChildren(idx)) {
1126 QToolButton button = new QToolButton(this); 1132 QToolButton button = new QToolButton(this);
1127 button.setPopupMode(QToolButton.InstantPopup); 1133 button.setPopupMode(QToolButton.InstantPopup);
1128 button.setArrowType(Qt.DownArrow); 1134 button.setArrowType(Qt_ArrowType.DownArrow);
1129 button.setText(idx.data().toString()); 1135 button.setText(idx.data().toString());
1130 ModelMenu menu = new ModelMenu(this); 1136 ModelMenu menu = new ModelMenu(this);
1131 menu.activated.connect(&this.activated); 1137 menu.activated.connect(&this.activated);
1132 menu.setModel(m_bookmarksModel); 1138 menu.setModel(m_bookmarksModel);
1133 menu.setRootIndex(idx); 1139 menu.setRootIndex(idx);