aboutsummaryrefslogtreecommitdiff
path: root/lib/bookmarks/bookmarkswidget.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-09-24 14:55:35 +0200
committerAqua-sama <aqua@iserlohn-fortress.net>2018-09-24 14:55:35 +0200
commit579c713959c150a276f42b3f69ccfb89d9e6eebb (patch)
tree7c4f2082e2ff5dcdee7fcfe7887e7bbc82ec8bf6 /lib/bookmarks/bookmarkswidget.cpp
parentAdd bookmark auto-save (5min) (diff)
downloadsmolbote-579c713959c150a276f42b3f69ccfb89d9e6eebb.tar.xz
Bookmarks: add BookmarkItem and BookmarkModel
- read-only xbel - only enabled in debug build
Diffstat (limited to 'lib/bookmarks/bookmarkswidget.cpp')
-rw-r--r--lib/bookmarks/bookmarkswidget.cpp56
1 files changed, 55 insertions, 1 deletions
diff --git a/lib/bookmarks/bookmarkswidget.cpp b/lib/bookmarks/bookmarkswidget.cpp
index c56fe6c..8e6677c 100644
--- a/lib/bookmarks/bookmarkswidget.cpp
+++ b/lib/bookmarks/bookmarkswidget.cpp
@@ -11,6 +11,26 @@
#include "xbel.h"
#include <QUrl>
+#ifdef QT_DEBUG
+#include <QTreeView>
+#include "bookmarkmodel.h"
+#include "bookmarkitem.h"
+#include "forms/editbookmarkdialog.h"
+
+inline void expandChildren(QTreeView *view, BookmarkModel *model, const QModelIndex &rootIndex)
+{
+ for(int i = 0; i < model->rowCount(rootIndex); ++i) {
+ QModelIndex idx = model->index(i, 0, rootIndex);
+ if(model->isItemExpanded(idx))
+ view->expand(idx);
+
+ // check if index has children
+ if(model->rowCount(idx) > 0)
+ expandChildren(view, model, idx);
+ }
+}
+#endif
+
BookmarksWidget::BookmarksWidget(const QString &path, QWidget *parent)
: QWidget(parent)
, ui(new Ui::BookmarksDialog)
@@ -27,6 +47,40 @@ BookmarksWidget::BookmarksWidget(const QString &path, QWidget *parent)
ui->deleteItem_toolButton->setIcon(style()->standardPixmap(QStyle::SP_TrashIcon));
ui->deleteItem_toolButton->setShortcut(QKeySequence::Delete);
+ // Testing model/view
+#ifdef QT_DEBUG
+ {
+ auto *treeView = new QTreeView(this);
+ treeView->setDragEnabled(true);
+ treeView->setAcceptDrops(true);
+ treeView->setDropIndicatorShown(true);
+ treeView->setDragDropMode(QAbstractItemView::InternalMove);
+ ui->verticalLayout->addWidget(treeView);
+ auto *model = new BookmarkModel(this);
+
+ QFile bookmarksFile(path);
+ if(bookmarksFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ XbelReader xbel(&bookmarksFile);
+ xbel.read(model);
+ bookmarksFile.close();
+ }
+
+ treeView->setModel(model);
+
+ expandChildren(treeView, model, QModelIndex());
+
+ connect(treeView, &QTreeView::activated, this, [this, model](const QModelIndex &index) {
+ if(index.column() == 1)
+ emit openUrl(index.data(Qt::DisplayRole).toUrl());
+ else {
+ auto *dlg = new EditBookmarkDialog(model, index, this);
+ dlg->exec();
+ }
+ });
+ }
+#endif
+ //
+
m_bookmarksPath = path;
// read bookmarks
@@ -115,7 +169,7 @@ BookmarksWidget::~BookmarksWidget()
void BookmarksWidget::save()
{
- if (!m_isChanged) {
+ if(!m_isChanged) {
return;
}