aboutsummaryrefslogtreecommitdiff
path: root/lib/bookmarks/bookmarksview.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-02-07 21:08:39 +0100
committerAqua-sama <aqua@iserlohn-fortress.net>2018-02-07 21:08:39 +0100
commitf779510603e01de438e337c82c439cc6649cd7c3 (patch)
tree98254e5ab079edcc6e207d692af28378573d4f0f /lib/bookmarks/bookmarksview.cpp
parentBookmarks bugfixes (diff)
downloadsmolbote-f779510603e01de438e337c82c439cc6649cd7c3.tar.xz
Rewrote bookmark manager to use QTreeWidget over QTreeView
- cut out all the boilerplate that was BookmarkItem/BookmarksModel - deleting items no longer crash; proper drag'n'drop - Split Xbel into XbelReader and XbelWriter
Diffstat (limited to 'lib/bookmarks/bookmarksview.cpp')
-rw-r--r--lib/bookmarks/bookmarksview.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/lib/bookmarks/bookmarksview.cpp b/lib/bookmarks/bookmarksview.cpp
new file mode 100644
index 0000000..e427c2f
--- /dev/null
+++ b/lib/bookmarks/bookmarksview.cpp
@@ -0,0 +1,49 @@
+/*
+ * This file is part of smolbote. It's copyrighted by the contributors recorded
+ * in the version control history of the file, available from its original
+ * location: https://neueland.iserlohn-fortress.net/smolbote.hg
+ *
+ * SPDX-License-Identifier: GPL-3.0
+ */
+
+#include "bookmarksview.h"
+
+inline QTreeWidgetItem *createTreeWidgetItem(QTreeWidget *widget, QTreeWidgetItem *parentItem)
+{
+ if(parentItem)
+ return new QTreeWidgetItem(parentItem);
+ else
+ return new QTreeWidgetItem(widget);
+}
+
+BookmarksView::BookmarksView(QWidget *parent)
+ : QTreeWidget(parent)
+{
+ QStyle *qStyle = style();
+ folderIcon.addPixmap(qStyle->standardPixmap(QStyle::SP_DirClosedIcon), QIcon::Normal, QIcon::Off);
+ folderIcon.addPixmap(qStyle->standardPixmap(QStyle::SP_DirOpenIcon), QIcon::Normal, QIcon::On);
+ bookmarkIcon.addPixmap(qStyle->standardPixmap(QStyle::SP_FileIcon));
+}
+
+QTreeWidgetItem *BookmarksView::createBookmark(QTreeWidgetItem *parentItem)
+{
+ QTreeWidgetItem *item = createTreeWidgetItem(this, parentItem);
+ item->setFlags(item->flags().setFlag(Qt::ItemIsDropEnabled, false) | Qt::ItemIsEditable | Qt::ItemIsDragEnabled);
+ item->setData(0, Qt::UserRole, Type::Bookmark);
+ item->setIcon(0, bookmarkIcon);
+ return item;
+}
+
+QTreeWidgetItem *BookmarksView::createFolder(QTreeWidgetItem *parentItem)
+{
+ QTreeWidgetItem *item = createTreeWidgetItem(this, parentItem);
+ item->setFlags(item->flags() | Qt::ItemIsEditable | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled);
+ item->setData(0, Qt::UserRole, Type::Folder);
+ item->setIcon(0, folderIcon);
+ return item;
+}
+
+BookmarksView::Type BookmarksView::itemType(QTreeWidgetItem *item) const
+{
+ return item->data(0, Qt::UserRole).value<Type>();
+} \ No newline at end of file