Mercurial > projects > qtd
comparison demos/browser/bookmarks.d @ 74:37caa90ce503
more porting
author | mandel |
---|---|
date | Fri, 22 May 2009 23:43:58 +0000 |
parents | 7bfd46c330dc |
children | 0654fc9bac95 |
comparison
equal
deleted
inserted
replaced
73:7bfd46c330dc | 74:37caa90ce503 |
---|---|
77 /*! | 77 /*! |
78 Bookmark manager, owner of the bookmarks, loads, saves and basic tasks | 78 Bookmark manager, owner of the bookmarks, loads, saves and basic tasks |
79 */ | 79 */ |
80 class BookmarksManager : public QObject | 80 class BookmarksManager : public QObject |
81 { | 81 { |
82 mixin Signal!("entryAdded", BookmarkNode item); | 82 mixin Signal!("entryAdded", BookmarkNode /*item*/); |
83 mixin Signal!("entryRemoved", BookmarkNode parent, int row, BookmarkNode item); | 83 mixin Signal!("entryRemoved", BookmarkNode /*parent*/, int /*row*/, BookmarkNode /*item*/); |
84 mixin Signal!("entryChanged", BookmarkNode item); | 84 mixin Signal!("entryChanged", BookmarkNode /*item*/); |
85 | 85 |
86 public: | 86 public: |
87 | 87 |
88 this(QObject parent = null) | 88 this(QObject parent = null) |
89 { | 89 { |
109 assert(parent); | 109 assert(parent); |
110 InsertBookmarksCommand command = new InsertBookmarksCommand(this, parent, node, row); | 110 InsertBookmarksCommand command = new InsertBookmarksCommand(this, parent, node, row); |
111 m_commands.push(command); | 111 m_commands.push(command); |
112 } | 112 } |
113 | 113 |
114 | 114 void removeBookmark(BookmarkNode node) |
115 void removeBookmark(BookmarkNode node); | |
116 { | 115 { |
117 if (!m_loaded) | 116 if (!m_loaded) |
118 return; | 117 return; |
119 | 118 |
120 assert(node); | 119 assert(node); |
122 int row = parent.children().indexOf(node); | 121 int row = parent.children().indexOf(node); |
123 RemoveBookmarksCommand command = new RemoveBookmarksCommand(this, parent, row); | 122 RemoveBookmarksCommand command = new RemoveBookmarksCommand(this, parent, row); |
124 m_commands.push(command); | 123 m_commands.push(command); |
125 } | 124 } |
126 | 125 |
127 void setTitle(BookmarkNode node, QString newTitle); | 126 void setTitle(BookmarkNode node, QString newTitle) |
128 { | 127 { |
129 if (!m_loaded) | 128 if (!m_loaded) |
130 return; | 129 return; |
131 | 130 |
132 assert(node); | 131 assert(node); |
133 ChangeBookmarkCommand command = new ChangeBookmarkCommand(this, node, newTitle, true); | 132 ChangeBookmarkCommand command = new ChangeBookmarkCommand(this, node, newTitle, true); |
134 m_commands.push(command); | 133 m_commands.push(command); |
135 } | 134 } |
136 | 135 |
137 | 136 void setUrl(BookmarkNode node, QString newUrl) |
138 void setUrl(BookmarkNode node, QString newUrl); | |
139 { | 137 { |
140 if (!m_loaded) | 138 if (!m_loaded) |
141 return; | 139 return; |
142 | 140 |
143 assert(node); | 141 assert(node); |
144 ChangeBookmarkCommand command = new ChangeBookmarkCommand(this, node, newUrl, false); | 142 ChangeBookmarkCommand command = new ChangeBookmarkCommand(this, node, newUrl, false); |
145 m_commands.push(command); | 143 m_commands.push(command); |
146 } | 144 } |
147 | 145 |
148 | |
149 void changeExpanded() | 146 void changeExpanded() |
150 { | 147 { |
151 m_saveTimer.changeOccurred(); | 148 m_saveTimer.changeOccurred(); |
152 } | 149 } |
153 | 150 |
154 BookmarkNode bookmarks(); | 151 BookmarkNode bookmarks() |
155 { | 152 { |
156 if (!m_loaded) | 153 if (!m_loaded) |
157 load(); | 154 load(); |
158 return m_bookmarkRootNode; | 155 return m_bookmarkRootNode; |
159 } | 156 } |
160 | 157 |
161 BookmarkNode menu(); | 158 BookmarkNode menu() |
162 { | 159 { |
163 if (!m_loaded) | 160 if (!m_loaded) |
164 load(); | 161 load(); |
165 | 162 |
166 for (int i = m_bookmarkRootNode.children().count() - 1; i >= 0; --i) { | 163 for (int i = m_bookmarkRootNode.children().count() - 1; i >= 0; --i) { |
170 } | 167 } |
171 assert(false); | 168 assert(false); |
172 return 0; | 169 return 0; |
173 } | 170 } |
174 | 171 |
175 BookmarkNode toolbar(); | 172 BookmarkNode toolbar() |
176 { | 173 { |
177 if (!m_loaded) | 174 if (!m_loaded) |
178 load(); | 175 load(); |
179 | 176 |
180 for (int i = m_bookmarkRootNode.children().count() - 1; i >= 0; --i) { | 177 for (int i = m_bookmarkRootNode.children().count() - 1; i >= 0; --i) { |
265 "%3").arg(reader.lineNumber()).arg(reader.columnNumber()).arg(reader.errorString())); | 262 "%3").arg(reader.lineNumber()).arg(reader.columnNumber()).arg(reader.errorString())); |
266 } | 263 } |
267 | 264 |
268 BookmarkNode toolbar = null; | 265 BookmarkNode toolbar = null; |
269 BookmarkNode menu = null; | 266 BookmarkNode menu = null; |
270 QList<BookmarkNode> others; | 267 BookmarkNode[] others; |
271 for (int i = m_bookmarkRootNode.children().count() - 1; i >= 0; --i) { | 268 for (int i = m_bookmarkRootNode.children().count() - 1; i >= 0; --i) { |
272 BookmarkNode node = m_bookmarkRootNode.children().at(i); | 269 BookmarkNode node = m_bookmarkRootNode.children().at(i); |
273 if (node.type() == BookmarkNode.Folder) { | 270 if (node.type() == BookmarkNode.Folder) { |
274 // Automatically convert | 271 // Automatically convert |
275 if (node.title == tr("Toolbar Bookmarks") && !toolbar) { | 272 if (node.title == tr("Toolbar Bookmarks") && !toolbar) { |
321 { | 318 { |
322 public: | 319 public: |
323 | 320 |
324 this(BookmarksManager m_bookmarkManagaer, BookmarkNode parent, int row) | 321 this(BookmarksManager m_bookmarkManagaer, BookmarkNode parent, int row) |
325 { | 322 { |
326 super(BookmarksManager.tr("Remove Bookmark")) | 323 super(BookmarksManager.tr("Remove Bookmark")); |
327 m_row = row; | 324 m_row = row; |
328 m_bookmarkManagaer = m_bookmarkManagaer; | 325 m_bookmarkManagaer = m_bookmarkManagaer; |
329 m_node = parent.children().value(row); | 326 m_node = parent.children().value(row); |
330 m_parent = parent; | 327 m_parent = parent; |
331 m_done = false; | 328 m_done = false; |
339 } | 336 } |
340 | 337 |
341 void undo() | 338 void undo() |
342 { | 339 { |
343 m_parent.add(m_node, m_row); | 340 m_parent.add(m_node, m_row); |
344 emit m_bookmarkManagaer.entryAdded(m_node); | 341 m_bookmarkManagaer.entryAdded.emit(m_node); |
345 m_done = false; | 342 m_done = false; |
346 } | 343 } |
347 | 344 |
348 void redo() | 345 void redo() |
349 { | 346 { |
350 m_parent.remove(m_node); | 347 m_parent.remove(m_node); |
351 emit m_bookmarkManagaer.entryRemoved(m_parent, m_row, m_node); | 348 m_bookmarkManagaer.entryRemoved.emit(m_parent, m_row, m_node); |
352 m_done = true; | 349 m_done = true; |
353 } | 350 } |
354 | 351 |
355 protected: | 352 protected: |
356 | 353 |
400 { | 397 { |
401 if (m_title) | 398 if (m_title) |
402 m_node.title = m_oldValue; | 399 m_node.title = m_oldValue; |
403 else | 400 else |
404 m_node.url = m_oldValue; | 401 m_node.url = m_oldValue; |
405 emit m_bookmarkManagaer.entryChanged(m_node); | 402 m_bookmarkManagaer.entryChanged.emit(m_node); |
406 } | 403 } |
407 | 404 |
408 void redo() | 405 void redo() |
409 { | 406 { |
410 if (m_title) | 407 if (m_title) |
411 m_node.title = m_newValue; | 408 m_node.title = m_newValue; |
412 else | 409 else |
413 m_node.url = m_newValue; | 410 m_node.url = m_newValue; |
414 emit m_bookmarkManagaer.entryChanged(m_node); | 411 m_bookmarkManagaer.entryChanged.emit(m_node); |
415 } | 412 } |
416 | 413 |
417 private: | 414 private: |
418 | 415 |
419 BookmarksManager m_bookmarkManagaer; | 416 BookmarksManager m_bookmarkManagaer; |
442 beginInsertRows(index(parent), row, row); | 439 beginInsertRows(index(parent), row, row); |
443 parent.add(item, row); | 440 parent.add(item, row); |
444 endInsertRows(); | 441 endInsertRows(); |
445 } | 442 } |
446 | 443 |
447 | 444 void entryRemoved(BookmarkNode parent, int row, BookmarkNode item) |
448 void entryRemoved(BookmarkNode parent, int row, BookmarkNode item); | |
449 { | 445 { |
450 // item was already removed, re-add so beginRemoveRows works | 446 // item was already removed, re-add so beginRemoveRows works |
451 parent.add(item, row); | 447 parent.add(item, row); |
452 beginRemoveRows(index(parent), row, row); | 448 beginRemoveRows(index(parent), row, row); |
453 parent.remove(item); | 449 parent.remove(item); |
454 endRemoveRows(); | 450 endRemoveRows(); |
455 } | 451 } |
456 | 452 |
457 void entryChanged(BookmarkNode item); | 453 void entryChanged(BookmarkNode item) |
458 { | 454 { |
459 QModelIndex idx = index(item); | 455 QModelIndex idx = index(item); |
460 emit dataChanged(idx, idx); | 456 dataChanged.emit(idx, idx); |
461 } | 457 } |
462 | 458 |
463 public: | 459 public: |
464 | 460 |
465 enum Roles { | 461 enum Roles { |
466 TypeRole = Qt.UserRole + 1, | 462 TypeRole = Qt.UserRole + 1, |
467 UrlRole = Qt.UserRole + 2, | 463 UrlRole = Qt.UserRole + 2, |
468 UrlStringRole = Qt.UserRole + 3, | 464 UrlStringRole = Qt.UserRole + 3, |
469 SeparatorRole = Qt.UserRole + 4 | 465 SeparatorRole = Qt.UserRole + 4 |
470 } | 466 }; |
471 | 467 |
472 BookmarksModel(BookmarksManager bookmarkManager, QObject parent = null) | 468 this(BookmarksManager bookmarkManager, QObject parent = null) |
473 { | 469 { |
474 super(parent) | 470 super(parent); |
475 m_endMacro = false; | 471 m_endMacro = false; |
476 m_bookmarksManager = bookmarkManager; | 472 m_bookmarksManager = bookmarkManager; |
477 bookmarkManager.entryAdded.connect(&this.entryAdded); | 473 bookmarkManager.entryAdded.connect(&this.entryAdded); |
478 bookmarkManager.entryRemoved.connect(&this.entryRemoved); | 474 bookmarkManager.entryRemoved.connect(&this.entryRemoved); |
479 bookmarkManager.entryChanged.connect(&this.entryChanged); | 475 bookmarkManager.entryChanged.connect(&this.entryChanged); |
480 } | 476 } |
481 | 477 |
482 | 478 BookmarksManager bookmarksManager() |
483 BookmarksManager bookmarksManager() { return m_bookmarksManager; } | 479 { |
484 | 480 return m_bookmarksManager; |
485 QVariant headerData(int section, Qt.Orientation orientation, int role = Qt.DisplayRole); | 481 } |
482 | |
483 QVariant headerData(int section, Qt.Orientation orientation, int role = Qt.DisplayRole) | |
486 { | 484 { |
487 if (orientation == Qt.Horizontal && role == Qt.DisplayRole) { | 485 if (orientation == Qt.Horizontal && role == Qt.DisplayRole) { |
488 switch (section) { | 486 switch (section) { |
489 case 0: return tr("Title"); | 487 case 0: return tr("Title"); |
490 case 1: return tr("Address"); | 488 case 1: return tr("Address"); |
491 } | 489 } |
492 } | 490 } |
493 return QAbstractItemModel.headerData(section, orientation, role); | 491 return QAbstractItemModel.headerData(section, orientation, role); |
494 } | 492 } |
495 | |
496 | 493 |
497 QVariant data(QModelIndex index, int role = Qt.DisplayRole) | 494 QVariant data(QModelIndex index, int role = Qt.DisplayRole) |
498 { | 495 { |
499 if (!index.isValid() || index.model() != this) | 496 if (!index.isValid() || index.model() != this) |
500 return QVariant(); | 497 return QVariant(); |
549 return 0; | 546 return 0; |
550 | 547 |
551 if (!parent.isValid()) | 548 if (!parent.isValid()) |
552 return m_bookmarksManager.bookmarks().children().count(); | 549 return m_bookmarksManager.bookmarks().children().count(); |
553 | 550 |
554 BookmarkNode item = static_cast<BookmarkNode>(parent.internalPointer()); | 551 BookmarkNode item = cast(BookmarkNode) parent.internalPointer(); |
555 return item.children().count(); | 552 return item.children().count(); |
556 } | 553 } |
557 | 554 |
558 QModelIndex index(int, int, QModelIndex& = QModelIndex()) | 555 QModelIndex index(int row, int column, QModelIndex parent = QModelIndex()) |
559 { | 556 { |
560 if (row < 0 || column < 0 || row >= rowCount(parent) || column >= columnCount(parent)) | 557 if (row < 0 || column < 0 || row >= rowCount(parent) || column >= columnCount(parent)) |
561 return QModelIndex(); | 558 return QModelIndex(); |
562 | 559 |
563 // get the parent node | 560 // get the parent node |
564 BookmarkNode parentNode = node(parent); | 561 BookmarkNode parentNode = node(parent); |
565 return createIndex(row, column, parentNode.children().at(row)); | 562 return createIndex(row, column, parentNode.children().at(row)); |
566 } | 563 } |
567 | 564 |
568 QModelIndex parent(QModelIndex& index= QModelIndex()) | 565 QModelIndex parent(QModelIndex index = QModelIndex()) |
569 { | 566 { |
570 if (!index.isValid()) | 567 if (!index.isValid()) |
571 return QModelIndex(); | 568 return QModelIndex(); |
572 | 569 |
573 BookmarkNode itemNode = node(index); | 570 BookmarkNode itemNode = node(index); |
599 if (hasChildren(index)) | 596 if (hasChildren(index)) |
600 flags |= Qt.ItemIsDropEnabled; | 597 flags |= Qt.ItemIsDropEnabled; |
601 return flags; | 598 return flags; |
602 } | 599 } |
603 | 600 |
604 Qt.DropActions supportedDropActions (); | 601 Qt.DropActions supportedDropActions() |
605 { | 602 { |
606 return Qt.CopyAction | Qt.MoveAction; | 603 return Qt.CopyAction | Qt.MoveAction; |
607 } | 604 } |
608 | 605 |
609 | 606 bool removeRows(int row, int count, QModelIndex parent = QModelIndex()) |
610 bool removeRows(int row, int count, QModelIndex parent = QModelIndex()); | |
611 { | 607 { |
612 if (row < 0 || count <= 0 || row + count > rowCount(parent)) | 608 if (row < 0 || count <= 0 || row + count > rowCount(parent)) |
613 return false; | 609 return false; |
614 | 610 |
615 BookmarkNode bookmarkNode = node(parent); | 611 BookmarkNode bookmarkNode = node(parent); |
658 } | 654 } |
659 | 655 |
660 return true; | 656 return true; |
661 } | 657 } |
662 | 658 |
663 | 659 QMimeData mimeData(QModelIndexList indexes) |
664 QMimeData mimeData(QModelIndexList indexes); | |
665 { | 660 { |
666 QMimeData mimeData = new QMimeData(); | 661 QMimeData mimeData = new QMimeData(); |
667 QByteArray data; | 662 QByteArray data; |
668 auto stream = new QDataStream(&data, QIODevice.WriteOnly); | 663 auto stream = new QDataStream(&data, QIODevice.WriteOnly); |
669 foreach (QModelIndex index, indexes) { | 664 foreach (QModelIndex index; indexes) { |
670 if (index.column() != 0 || !index.isValid()) | 665 if (index.column() != 0 || !index.isValid()) |
671 continue; | 666 continue; |
672 QByteArray encodedData; | 667 QByteArray encodedData; |
673 auto buffer = new QBuffer(&encodedData); | 668 auto buffer = new QBuffer(&encodedData); |
674 buffer.open(QBuffer.ReadWrite); | 669 buffer.open(QBuffer.ReadWrite); |
679 } | 674 } |
680 mimeData.setData(MIMETYPE, data); | 675 mimeData.setData(MIMETYPE, data); |
681 return mimeData; | 676 return mimeData; |
682 } | 677 } |
683 | 678 |
684 | 679 const char[] MIMETYPE = QLatin1String("application/bookmarks.xbel"); |
685 const char[] MIMETYPE = QLatin1String("application/bookmarks.xbel") | |
686 | 680 |
687 QStringList mimeTypes() | 681 QStringList mimeTypes() |
688 { | 682 { |
689 QStringList types; | 683 QStringList types; |
690 types << MIMETYPE; | 684 types << MIMETYPE; |
698 | 692 |
699 if (!data.hasFormat(MIMETYPE) || column > 0) | 693 if (!data.hasFormat(MIMETYPE) || column > 0) |
700 return false; | 694 return false; |
701 | 695 |
702 QByteArray ba = data.data(MIMETYPE); | 696 QByteArray ba = data.data(MIMETYPE); |
703 QDataStream stream(&ba, QIODevice.ReadOnly); | 697 QDataStream stream = new QDataStream(&ba, QIODevice.ReadOnly); |
704 if (stream.atEnd()) | 698 if (stream.atEnd()) |
705 return false; | 699 return false; |
706 | 700 |
707 QUndoStack undoStack = m_bookmarksManager.undoRedoStack(); | 701 QUndoStack undoStack = m_bookmarksManager.undoRedoStack(); |
708 undoStack.beginMacro(QLatin1String("Move Bookmarks")); | 702 undoStack.beginMacro(QLatin1String("Move Bookmarks")); |
709 | 703 |
710 while (!stream.atEnd()) { | 704 while (!stream.atEnd()) { |
711 QByteArray encodedData; | 705 QByteArray encodedData; |
712 stream >> encodedData; | 706 stream >> encodedData; |
713 QBuffer buffer(&encodedData); | 707 QBuffer buffer = new QBuffer(&encodedData); |
714 buffer.open(QBuffer.ReadOnly); | 708 buffer.open(QBuffer.ReadOnly); |
715 | 709 |
716 XbelReader reader; | 710 XbelReader reader; |
717 BookmarkNode rootNode = reader.read(&buffer); | 711 BookmarkNode rootNode = reader.read(&buffer); |
718 QList<BookmarkNode> children = rootNode.children(); | 712 BookmarkNode[] children = rootNode.children(); |
719 for (int i = 0; i < children.count(); ++i) { | 713 for (int i = 0; i < children.count(); ++i) { |
720 BookmarkNode bookmarkNode = children.at(i); | 714 BookmarkNode bookmarkNode = children.at(i); |
721 rootNode.remove(bookmarkNode); | 715 rootNode.remove(bookmarkNode); |
722 row = qMax(0, row); | 716 row = qMax(0, row); |
723 BookmarkNode parentNode = node(parent); | 717 BookmarkNode parentNode = node(parent); |
737 return (parentNode.type() == BookmarkNode.Folder); | 731 return (parentNode.type() == BookmarkNode.Folder); |
738 } | 732 } |
739 | 733 |
740 BookmarkNode node(QModelIndex index) | 734 BookmarkNode node(QModelIndex index) |
741 { | 735 { |
742 BookmarkNode itemNode = static_cast<BookmarkNode>(index.internalPointer()); | 736 BookmarkNode itemNode = cast(BookmarkNode) index.internalPointer(); |
743 if (!itemNode) | 737 if (!itemNode) |
744 return m_bookmarksManager.bookmarks(); | 738 return m_bookmarksManager.bookmarks(); |
745 return itemNode; | 739 return itemNode; |
746 } | 740 } |
747 | 741 |
762 // Menu that is dynamically populated from the bookmarks | 756 // Menu that is dynamically populated from the bookmarks |
763 import modelmenu; | 757 import modelmenu; |
764 | 758 |
765 class BookmarksMenu : public ModelMenu | 759 class BookmarksMenu : public ModelMenu |
766 { | 760 { |
767 mixin Signal!("openUrl", QUrl url); | 761 mixin Signal!("openUrl", QUrl /*url*/); |
768 | 762 |
769 public: | 763 public: |
770 | 764 |
771 BookmarksMenu(QWidget parent = null) | 765 this(QWidget parent = null) |
772 { | 766 { |
773 super(parent); | 767 super(parent); |
774 m_bookmarksManager = 0; | 768 m_bookmarksManager = 0; |
775 this.activated.connect(&this.activated); | 769 this.activated.connect(&this.activated); |
776 setMaxRows(-1); | 770 setMaxRows(-1); |
777 setHoverRole(BookmarksModel.UrlStringRole); | 771 setHoverRole(BookmarksModel.UrlStringRole); |
778 setSeparatorRole(BookmarksModel.SeparatorRole); | 772 setSeparatorRole(BookmarksModel.SeparatorRole); |
779 } | 773 } |
780 | 774 |
781 void setInitialActions(QList<QAction> actions); | 775 void setInitialActions(QAction[] actions) |
782 { | 776 { |
783 m_initialActions = actions; | 777 m_initialActions = actions; |
784 for (int i = 0; i < m_initialActions.count(); ++i) | 778 for (int i = 0; i < m_initialActions.count(); ++i) |
785 addAction(m_initialActions.at(i)); | 779 addAction(m_initialActions.at(i)); |
786 } | 780 } |
803 | 797 |
804 private: | 798 private: |
805 | 799 |
806 void activated(QModelIndex index) | 800 void activated(QModelIndex index) |
807 { | 801 { |
808 emit openUrl(index.data(BookmarksModel.UrlRole).toUrl()); | 802 openUrl.emit(index.data(BookmarksModel.UrlRole).toUrl()); |
809 } | 803 } |
810 | 804 |
811 private: | 805 private: |
812 | 806 |
813 BookmarksManager m_bookmarksManager; | 807 BookmarksManager m_bookmarksManager; |
814 QList<QAction> m_initialActions; | 808 QAction[] m_initialActions; |
815 } | 809 } |
816 | 810 |
817 /* | 811 /* |
818 Proxy model that filters out the bookmarks so only the folders | 812 Proxy model that filters out the bookmarks so only the folders |
819 are left behind. Used in the add bookmark dialog combobox. | 813 are left behind. Used in the add bookmark dialog combobox. |
852 class AddBookmarkDialog : public QDialog, public Ui_AddBookmarkDialog | 846 class AddBookmarkDialog : public QDialog, public Ui_AddBookmarkDialog |
853 { | 847 { |
854 public: | 848 public: |
855 | 849 |
856 this(QString url, QString title, QWidget parent = null, BookmarksManager bookmarkManager = null) | 850 this(QString url, QString title, QWidget parent = null, BookmarksManager bookmarkManager = null) |
857 : QDialog(parent) | 851 //: QDialog(parent) |
858 { | 852 { |
859 m_url = url; | 853 m_url = url; |
860 m_bookmarksManager = bookmarkManager; | 854 m_bookmarksManager = bookmarkManager; |
861 | 855 |
862 setWindowFlags(Qt.Sheet); | 856 setWindowFlags(Qt.Sheet); |
910 import ui_bookmarks; | 904 import ui_bookmarks; |
911 | 905 |
912 //class TreeProxyModel; | 906 //class TreeProxyModel; |
913 class BookmarksDialog : public QDialog, public Ui_BookmarksDialog | 907 class BookmarksDialog : public QDialog, public Ui_BookmarksDialog |
914 { | 908 { |
915 mixin Signal!("openUrl", QUrl url); | 909 mixin Signal!("openUrl", QUrl /*url*/); |
916 | 910 |
917 public: | 911 public: |
918 | 912 |
919 this(QWidget parent = null, BookmarksManager manager = null) | 913 this(QWidget parent = null, BookmarksManager manager = null) |
920 : QDialog(parent) | 914 //: QDialog(parent) |
921 { | 915 { |
922 m_bookmarksManager = manager; | 916 m_bookmarksManager = manager; |
923 if (!m_bookmarksManager) | 917 if (!m_bookmarksManager) |
924 m_bookmarksManager = BrowserApplication.bookmarksManager(); | 918 m_bookmarksManager = BrowserApplication.bookmarksManager(); |
925 setupUi(this); | 919 setupUi(this); |
973 void open() | 967 void open() |
974 { | 968 { |
975 QModelIndex index = tree.currentIndex(); | 969 QModelIndex index = tree.currentIndex(); |
976 if (!index.parent().isValid()) | 970 if (!index.parent().isValid()) |
977 return; | 971 return; |
978 emit openUrl(index.sibling(index.row(), 1).data(BookmarksModel.UrlRole).toUrl()); | 972 openUrl.emit(index.sibling(index.row(), 1).data(BookmarksModel.UrlRole).toUrl()); |
979 } | 973 } |
980 | 974 |
981 void newFolder() | 975 void newFolder() |
982 { | 976 { |
983 QModelIndex currentIndex = tree.currentIndex(); | 977 QModelIndex currentIndex = tree.currentIndex(); |
1029 BookmarksManager m_bookmarksManager; | 1023 BookmarksManager m_bookmarksManager; |
1030 BookmarksModel m_bookmarksModel; | 1024 BookmarksModel m_bookmarksModel; |
1031 TreeProxyModel m_proxyModel; | 1025 TreeProxyModel m_proxyModel; |
1032 } | 1026 } |
1033 | 1027 |
1028 | |
1034 import qt.gui.QToolBar; | 1029 import qt.gui.QToolBar; |
1030 | |
1035 | 1031 |
1036 class BookmarksToolBar : public QToolBar | 1032 class BookmarksToolBar : public QToolBar |
1037 { | 1033 { |
1038 mixin Signal!("openUrl", QUrl url); | 1034 mixin Signal!("openUrl", QUrl /*url*/); |
1039 | 1035 |
1040 public: | 1036 public: |
1041 | 1037 |
1042 this(BookmarksModel model, QWidget parent = null) | 1038 this(BookmarksModel model, QWidget parent = null) |
1043 { | 1039 { |
1050 m_bookmarksModel.rowsRemoved.connect(&this.build); | 1046 m_bookmarksModel.rowsRemoved.connect(&this.build); |
1051 m_bookmarksModel.dataChanged.connect(&this.build); | 1047 m_bookmarksModel.dataChanged.connect(&this.build); |
1052 setAcceptDrops(true); | 1048 setAcceptDrops(true); |
1053 } | 1049 } |
1054 | 1050 |
1055 void setRootIndex(QModelIndex index); | 1051 void setRootIndex(QModelIndex index) |
1056 { | 1052 { |
1057 m_root = index; | 1053 m_root = index; |
1058 build(); | 1054 build(); |
1059 } | 1055 } |
1060 | 1056 |
1075 | 1071 |
1076 void dropEvent(QDropEvent event) | 1072 void dropEvent(QDropEvent event) |
1077 { | 1073 { |
1078 const QMimeData mimeData = event.mimeData(); | 1074 const QMimeData mimeData = event.mimeData(); |
1079 if (mimeData.hasUrls() && mimeData.hasText()) { | 1075 if (mimeData.hasUrls() && mimeData.hasText()) { |
1080 QList<QUrl> urls = mimeData.urls(); | 1076 QUrl[] urls = mimeData.urls(); |
1081 QAction action = actionAt(event.pos()); | 1077 QAction action = actionAt(event.pos()); |
1082 QString dropText; | 1078 QString dropText; |
1083 if (action) | 1079 if (action) |
1084 dropText = action.text(); | 1080 dropText = action.text(); |
1085 int row = -1; | 1081 int row = -1; |
1111 private: | 1107 private: |
1112 | 1108 |
1113 void triggered(QAction action) | 1109 void triggered(QAction action) |
1114 { | 1110 { |
1115 QVariant v = action.data(); | 1111 QVariant v = action.data(); |
1116 if (v.canConvert<QUrl>()) { | 1112 if (v.canConvert!(QUrl)()) { |
1117 emit openUrl(v.toUrl()); | 1113 openUrl.emit(v.toUrl()); |
1118 } | 1114 } |
1119 } | 1115 } |
1120 | 1116 |
1121 void activated(QModelIndex index) | 1117 void activated(QModelIndex index) |
1122 { | 1118 { |
1123 emit openUrl(index.data(BookmarksModel.UrlRole).toUrl()); | 1119 openUrl.emit(index.data(BookmarksModel.UrlRole).toUrl()); |
1124 } | 1120 } |
1125 | 1121 |
1126 void build() | 1122 void build() |
1127 { | 1123 { |
1128 clear(); | 1124 clear(); |