aboutsummaryrefslogtreecommitdiff
path: root/lib/bookmarks/bookmarksview.cpp
diff options
context:
space:
mode:
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