comparison demos/browser/bookmarks.d @ 113:8636c819ce4d

more porting
author mandel
date Wed, 03 Jun 2009 14:35:25 +0000
parents dcd36d8db2da
children 4320ed0343dd
comparison
equal deleted inserted replaced
112:e416c5215366 113:8636c819ce4d
55 import qt.gui.QFileDialog; 55 import qt.gui.QFileDialog;
56 import qt.gui.QHeaderView; 56 import qt.gui.QHeaderView;
57 import qt.gui.QIcon; 57 import qt.gui.QIcon;
58 import qt.gui.QMessageBox; 58 import qt.gui.QMessageBox;
59 import qt.gui.QToolButton; 59 import qt.gui.QToolButton;
60 import qt.gui.QTreeView;
60 import qt.xml.QXmlStreamReader; 61 import qt.xml.QXmlStreamReader;
61 import qt.webkit.QWebSettings; 62 import qt.webkit.QWebSettings;
62 63
63 import tango.text.convert.Format; 64 import tango.text.convert.Format;
64 65
65 //import qt.core.QDebug; 66 //import qt.core.QDebug;
66 67
67 import bookmarks;
68 import autosaver; 68 import autosaver;
69 import browserapplication; 69 import browserapplication;
70 import history; 70 import history;
71 import xbel; 71 import xbel;
72 72
538 case BookmarksModel.Roles.SeparatorRole: 538 case BookmarksModel.Roles.SeparatorRole:
539 return new QVariant(bookmarkNode.type() == BookmarkNode.Type.Separator); 539 return new QVariant(bookmarkNode.type() == BookmarkNode.Type.Separator);
540 break; 540 break;
541 case Qt_ItemDataRole.DecorationRole: 541 case Qt_ItemDataRole.DecorationRole:
542 if (index.column() == 0) { 542 if (index.column() == 0) {
543 //TODO: is cast(void*) ok?
543 if (bookmarkNode.type() == BookmarkNode.Type.Folder) 544 if (bookmarkNode.type() == BookmarkNode.Type.Folder)
544 return new QVariant(QApplication.style().standardIcon(QStyle.SP_DirIcon)); 545 return new QVariant(cast(void*) QApplication.style().standardIcon(QStyle.SP_DirIcon));
545 return new QVariant(BrowserApplication.instance().icon(bookmarkNode.url)); 546 return new QVariant(cast(void*) BrowserApplication.instance().icon(new QUrl(bookmarkNode.url)));
546 } 547 }
547 } 548 }
548 549
549 return new QVariant(); 550 return new QVariant();
550 } 551 }
714 QUndoStack undoStack = m_bookmarksManager.undoRedoStack(); 715 QUndoStack undoStack = m_bookmarksManager.undoRedoStack();
715 undoStack.beginMacro("Move Bookmarks"); 716 undoStack.beginMacro("Move Bookmarks");
716 717
717 while (!stream.atEnd()) { 718 while (!stream.atEnd()) {
718 auto encodedData = new QByteArray; 719 auto encodedData = new QByteArray;
719 stream >> encodedData; 720 //stream >> encodedData; //TODO
720 721
721 auto buffer = new QBuffer(encodedData); 722 auto buffer = new QBuffer(encodedData);
722 buffer.open(QBuffer.ReadOnly); 723 buffer.open(QBuffer.ReadOnly);
723 724
724 auto reader = new XbelReader; 725 auto reader = new XbelReader;
739 740
740 bool hasChildren(QModelIndex parent = QModelIndex()) 741 bool hasChildren(QModelIndex parent = QModelIndex())
741 { 742 {
742 if (!parent.isValid()) 743 if (!parent.isValid())
743 return true; 744 return true;
744 const BookmarkNode parentNode = node(parent); 745 BookmarkNode parentNode = node(parent);
745 return (parentNode.type() == BookmarkNode.Type.Folder); 746 return (parentNode.type() == BookmarkNode.Type.Folder);
746 } 747 }
747 748
748 BookmarkNode node(QModelIndex index) 749 BookmarkNode node(QModelIndex index)
749 { 750 {
778 779
779 this(QWidget parent = null) 780 this(QWidget parent = null)
780 { 781 {
781 super(parent); 782 super(parent);
782 m_bookmarksManager = null; 783 m_bookmarksManager = null;
783 this.activated.connect(&this.activated); 784 this.activated.connect(&this.activatedIndex);
784 setMaxRows(-1); 785 setMaxRows(-1);
785 setHoverRole(BookmarksModel.Roles.UrlStringRole); 786 setHoverRole(BookmarksModel.Roles.UrlStringRole);
786 setSeparatorRole(BookmarksModel.Roles.SeparatorRole); 787 setSeparatorRole(BookmarksModel.Roles.SeparatorRole);
787 } 788 }
788 789
809 return true; 810 return true;
810 } 811 }
811 812
812 private: 813 private:
813 814
814 void activated(QModelIndex index) 815 void activatedIndex(QModelIndex index)
815 { 816 {
816 openUrl.emit(index.data(BookmarksModel.Roles.UrlRole).toUrl()); 817 openUrl.emit(index.data(BookmarksModel.Roles.UrlRole).toUrl());
817 } 818 }
818 819
819 private: 820 private:
857 858
858 import ui_addbookmarkdialog; 859 import ui_addbookmarkdialog;
859 860
860 class AddBookmarkDialog : public QDialog //, public Ui_AddBookmarkDialog 861 class AddBookmarkDialog : public QDialog //, public Ui_AddBookmarkDialog
861 { 862 {
862 AddBookmarkDialog ui; 863 mixin Ui_AddBookmarkDialog;
863 864
864 public: 865 public:
865 866
866 this(string url, string title, QWidget parent = null, BookmarksManager bookmarkManager = null) 867 this(string url, string title, QWidget parent = null, BookmarksManager bookmarkManager = null)
867 { 868 {
870 m_bookmarksManager = bookmarkManager; 871 m_bookmarksManager = bookmarkManager;
871 872
872 setWindowFlags(Qt.Sheet); 873 setWindowFlags(Qt.Sheet);
873 if (!m_bookmarksManager) 874 if (!m_bookmarksManager)
874 m_bookmarksManager = BrowserApplication.bookmarksManager(); 875 m_bookmarksManager = BrowserApplication.bookmarksManager();
875 ui.setupUi(this); 876 setupUi(this);
876 QTreeView view = new QTreeView(this); 877 auto view = new QTreeView(this);
877 m_proxyModel = new AddBookmarkProxyModel(this); 878 m_proxyModel = new AddBookmarkProxyModel(this);
878 BookmarksModel model = m_bookmarksManager.bookmarksModel(); 879 BookmarksModel model = m_bookmarksManager.bookmarksModel();
879 m_proxyModel.setSourceModel(model); 880 m_proxyModel.setSourceModel(model);
880 view.setModel(m_proxyModel); 881 view.setModel(m_proxyModel);
881 view.expandAll(); 882 view.expandAll();
901 QModelIndex index = location.view().currentIndex(); 902 QModelIndex index = location.view().currentIndex();
902 index = m_proxyModel.mapToSource(index); 903 index = m_proxyModel.mapToSource(index);
903 if (!index.isValid()) 904 if (!index.isValid())
904 index = m_bookmarksManager.bookmarksModel().index(0, 0); 905 index = m_bookmarksManager.bookmarksModel().index(0, 0);
905 BookmarkNode parent = m_bookmarksManager.bookmarksModel().node(index); 906 BookmarkNode parent = m_bookmarksManager.bookmarksModel().node(index);
906 BookmarkNode bookmark = new BookmarkNode(BookmarkNode.Bookmark); 907 BookmarkNode bookmark = new BookmarkNode(BookmarkNode.Type.Bookmark);
907 bookmark.url = m_url; 908 bookmark.url = m_url;
908 bookmark.title = name.text(); 909 bookmark.title = name.text();
909 m_bookmarksManager.addBookmark(parent, bookmark); 910 m_bookmarksManager.addBookmark(parent, bookmark);
910 QDialog.accept(); 911 QDialog.accept();
911 } 912 }
920 import ui_bookmarks; 921 import ui_bookmarks;
921 922
922 //class TreeProxyModel; 923 //class TreeProxyModel;
923 class BookmarksDialog : public QDialog //, public Ui_BookmarksDialog 924 class BookmarksDialog : public QDialog //, public Ui_BookmarksDialog
924 { 925 {
925 BookmarksDialog ui; 926 mixin Ui_BookmarksDialog;
926 927
927 mixin Signal!("openUrl", QUrl /*url*/); 928 mixin Signal!("openUrl", QUrl /*url*/);
928 929
929 public: 930 public:
930 931
932 { 933 {
933 super(parent); 934 super(parent);
934 m_bookmarksManager = manager; 935 m_bookmarksManager = manager;
935 if (!m_bookmarksManager) 936 if (!m_bookmarksManager)
936 m_bookmarksManager = BrowserApplication.bookmarksManager(); 937 m_bookmarksManager = BrowserApplication.bookmarksManager();
937 ui.setupUi(this); 938 setupUi(this);
938 939
939 tree.setUniformRowHeights(true); 940 tree.setUniformRowHeights(true);
940 tree.setSelectionBehavior(QAbstractItemView.SelectRows); 941 tree.setSelectionBehavior(QAbstractItemView.SelectRows);
941 tree.setSelectionMode(QAbstractItemView.ContiguousSelection); 942 tree.setSelectionMode(QAbstractItemView.ContiguousSelection);
942 tree.setTextElideMode(Qt.ElideMiddle); 943 tree.setTextElideMode(Qt.ElideMiddle);
948 tree.setModel(m_proxyModel); 949 tree.setModel(m_proxyModel);
949 tree.setDragDropMode(QAbstractItemView.InternalMove); 950 tree.setDragDropMode(QAbstractItemView.InternalMove);
950 tree.setExpanded(m_proxyModel.index(0, 0), true); 951 tree.setExpanded(m_proxyModel.index(0, 0), true);
951 tree.setAlternatingRowColors(true); 952 tree.setAlternatingRowColors(true);
952 auto fm = new QFontMetrics(font()); 953 auto fm = new QFontMetrics(font());
953 int header = fm.width(QLatin1Char('m')) * 40; 954 int header = fm.width("m") * 40;
954 tree.header().resizeSection(0, header); 955 tree.header().resizeSection(0, header);
955 tree.header().setStretchLastSection(true); 956 tree.header().setStretchLastSection(true);
956 tree.activated.connect(&this.open); 957 tree.activated.connect(&this.open);
957 tree.setContextMenuPolicy(Qt.CustomContextMenu); 958 tree.setContextMenuPolicy(Qt.CustomContextMenu);
958 tree.customContextMenuRequested.connect(&this.customContextMenuRequested); 959 tree.customContextMenuRequested.connect(&this.customContextMenuRequested);
973 { 974 {
974 auto menu = new QMenu; 975 auto menu = new QMenu;
975 QModelIndex index = tree.indexAt(pos); 976 QModelIndex index = tree.indexAt(pos);
976 index = index.sibling(index.row(), 0); 977 index = index.sibling(index.row(), 0);
977 if (index.isValid() && !tree.model().hasChildren(index)) { 978 if (index.isValid() && !tree.model().hasChildren(index)) {
978 menu.addAction(tr("Open"), this, SLOT(open())); 979 auto action = new QAction(tr("Open"), this);
980 action.triggered.connect(&this.open);
981 menu.addAction(action);
979 menu.addSeparator(); 982 menu.addSeparator();
980 } 983 }
981 menu.addAction(tr("Delete"), tree, SLOT(removeOne())); 984 auto action = new QAction(tr("Delete"), this);
985 action.triggered.connect(&tree.removeOne);
986 menu.addAction(action);
982 menu.exec(QCursor.pos()); 987 menu.exec(QCursor.pos());
983 } 988 }
984 989
985 void open() 990 void open()
986 { 991 {
1006 } 1011 }
1007 1012
1008 private: 1013 private:
1009 void expandNodes(BookmarkNode node) 1014 void expandNodes(BookmarkNode node)
1010 { 1015 {
1011 for (int i = 0; i < node.children().count(); ++i) { 1016 for (int i = 0; i < node.children().length; ++i) {
1012 BookmarkNode childNode = node.children()[i]; 1017 BookmarkNode childNode = node.children()[i];
1013 if (childNode.expanded) { 1018 if (childNode.expanded) {
1014 QModelIndex idx = m_bookmarksModel.index(childNode); 1019 QModelIndex idx = m_bookmarksModel.index(childNode);
1015 idx = m_proxyModel.mapFromSource(idx); 1020 idx = m_proxyModel.mapFromSource(idx);
1016 tree.setExpanded(idx, true); 1021 tree.setExpanded(idx, true);
1047 import qt.gui.QToolBar; 1052 import qt.gui.QToolBar;
1048 1053
1049 1054
1050 class BookmarksToolBar : public QToolBar 1055 class BookmarksToolBar : public QToolBar
1051 { 1056 {
1052 mixin Signal!("openUrl", QUrl /*url*/); 1057 mixin Signal!("openUrl", QUrl /*url*/);
1053 1058
1054 public: 1059 public:
1055 1060
1056 this(BookmarksModel model, QWidget parent = null) 1061 this(BookmarksModel model, QWidget parent = null)
1057 { 1062 {
1082 void dragEnterEvent(QDragEnterEvent event) 1087 void dragEnterEvent(QDragEnterEvent event)
1083 { 1088 {
1084 QMimeData mimeData = event.mimeData(); 1089 QMimeData mimeData = event.mimeData();
1085 if (mimeData.hasUrls()) 1090 if (mimeData.hasUrls())
1086 event.acceptProposedAction(); 1091 event.acceptProposedAction();
1087 QToolBar.dragEnterEvent(event); 1092 super.dragEnterEvent(event);
1088 } 1093 }
1089 1094
1090 void dropEvent(QDropEvent event) 1095 void dropEvent(QDropEvent event)
1091 { 1096 {
1092 QMimeData mimeData = event.mimeData(); 1097 QMimeData mimeData = event.mimeData();
1108 row = -1; 1113 row = -1;
1109 } 1114 }
1110 break; 1115 break;
1111 } 1116 }
1112 } 1117 }
1113 BookmarkNode bookmark = new BookmarkNode(BookmarkNode.Bookmark); 1118 BookmarkNode bookmark = new BookmarkNode(BookmarkNode.Type.Bookmark);
1114 bookmark.url = urls[0].toString(); 1119 bookmark.url = urls[0].toString();
1115 bookmark.title = mimeData.text(); 1120 bookmark.title = mimeData.text();
1116 1121
1117 BookmarkNode parent = m_bookmarksModel.node(parentIndex); 1122 BookmarkNode parent = m_bookmarksModel.node(parentIndex);
1118 BookmarksManager bookmarksManager = m_bookmarksModel.bookmarksManager(); 1123 BookmarksManager bookmarksManager = m_bookmarksModel.bookmarksManager();
1125 private: 1130 private:
1126 1131
1127 void triggered(QAction action) 1132 void triggered(QAction action)
1128 { 1133 {
1129 QVariant v = action.data(); 1134 QVariant v = action.data();
1130 if (v.canConvert!(QUrl)()) { 1135 if (v.canConvert(QVariant.Type.Url)) {
1131 openUrl.emit(v.toUrl()); 1136 openUrl.emit(v.toUrl());
1132 } 1137 }
1133 } 1138 }
1134 1139
1135 void activated(QModelIndex index) 1140 void activated(QModelIndex index)
1164 } 1169 }
1165 1170
1166 private: 1171 private:
1167 1172
1168 BookmarksModel m_bookmarksModel; 1173 BookmarksModel m_bookmarksModel;
1169 QPersistentModelIndex m_root; 1174 /*TODO: needed? QPersistentModelIndex*/ QModelIndex m_root;
1170 } 1175 }