diff options
Diffstat (limited to 'lib/bookmarks/bookmarkswidget.cpp')
-rw-r--r-- | lib/bookmarks/bookmarkswidget.cpp | 56 |
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; } |