Mercurial > projects > qtd
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); |