diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-02-07 21:08:39 +0100 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-02-07 21:08:39 +0100 |
commit | f779510603e01de438e337c82c439cc6649cd7c3 (patch) | |
tree | 98254e5ab079edcc6e207d692af28378573d4f0f /lib/bookmarks/bookmarksview.cpp | |
parent | Bookmarks bugfixes (diff) | |
download | smolbote-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.cpp | 49 |
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 |