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();