diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-01-07 00:48:27 +0100 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-01-07 00:48:27 +0100 |
commit | e0f64f9330fc30553dc9d8dcf308079f5d391526 (patch) | |
tree | 8c21a08f25208150ed4f0bcbf8496334c2e08bcc /lib/bookmarks/bookmarkswidget.cpp | |
parent | Updated ReadMe and pkgbuild (diff) | |
download | smolbote-e0f64f9330fc30553dc9d8dcf308079f5d391526.tar.xz |
Added BookmarksModel
TODO: Editing bookmarks
TODO: Saving bookmarks
BUG: Completer doesn't search through folders
Diffstat (limited to 'lib/bookmarks/bookmarkswidget.cpp')
-rw-r--r-- | lib/bookmarks/bookmarkswidget.cpp | 89 |
1 files changed, 31 insertions, 58 deletions
diff --git a/lib/bookmarks/bookmarkswidget.cpp b/lib/bookmarks/bookmarkswidget.cpp index 0b13254..daec3f4 100644 --- a/lib/bookmarks/bookmarkswidget.cpp +++ b/lib/bookmarks/bookmarkswidget.cpp @@ -8,7 +8,6 @@ #include "bookmarkswidget.h" #include "ui_bookmarksform.h" -#include <QTreeWidget> #include <QUrl> BookmarksWidget::BookmarksWidget(const QString &path, QWidget *parent) : @@ -20,38 +19,24 @@ BookmarksWidget::BookmarksWidget(const QString &path, QWidget *parent) : setWindowTitle(tr("Bookmarks")); ui->setupUi(this); - ui->treeWidget->header()->setSectionResizeMode(QHeaderView::Stretch); - - QStyle *style = ui->treeWidget->style(); - ui->addFolder_toolButton->setIcon(style->standardPixmap(QStyle::SP_DirIcon)); - ui->addBookmark_toolButton->setIcon(style->standardPixmap(QStyle::SP_FileIcon)); - ui->deleteItem_toolButton->setIcon(style->standardPixmap(QStyle::SP_TrashIcon)); - - connect(ui->treeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(showItemDetails())); - connect(ui->treeWidget, SIGNAL(itemActivated(QTreeWidgetItem*,int)), this, SLOT(openItem(QTreeWidgetItem*,int))); + ui->treeView->header()->setSectionResizeMode(QHeaderView::Stretch); + ui->addFolder_toolButton->setIcon(style()->standardPixmap(QStyle::SP_DirIcon)); + ui->addBookmark_toolButton->setIcon(style()->standardPixmap(QStyle::SP_FileIcon)); + ui->deleteItem_toolButton->setIcon(style()->standardPixmap(QStyle::SP_TrashIcon)); ui->deleteItem_toolButton->setShortcut(QKeySequence::Delete); - m_path = path; - xbel = new Xbel(ui->treeWidget); - qDebug("Reading bookmarks [%s] %s", qUtf8Printable(m_path), xbel->read(m_path) ? "ok" : "failed"); + m_model = new BookmarksModel(style(), this); + ui->treeView->setModel(m_model); - connect(ui->addFolder_toolButton, &QToolButton::clicked, this, [&]() { - xbel->addFolder(ui->treeWidget->currentItem()); - }); - connect(ui->addBookmark_toolButton, &QToolButton::clicked, this, [&]() { - xbel->addBookmark(ui->treeWidget->currentItem()); - }); - connect(ui->deleteItem_toolButton, &QToolButton::clicked, this, [&]() { - delete ui->treeWidget->currentItem(); - }); + xbel = new Xbel(path); + BookmarkItem *rootNode = xbel->read(); + m_model->setRoot(rootNode); + expandNodes(rootNode); + //qDebug("Reading bookmarks [%s] %s", qUtf8Printable(m_path), xbel->read(m_path) ? "ok" : "failed"); - // editing bookmarks - connect(ui->title_lineEdit, &QLineEdit::returnPressed, this, [&]() { - ui->treeWidget->currentItem()->setText(0, ui->title_lineEdit->text()); - }); - connect(ui->href_lineEdit, &QLineEdit::returnPressed, this, [&]() { - ui->treeWidget->currentItem()->setText(1, ui->href_lineEdit->text()); + connect(ui->treeView, &QTreeView::activated, this, [this](const QModelIndex &index) { + emit openUrl(m_model->data(index, BookmarksModel::OpenUrlRole).toUrl()); }); } @@ -63,41 +48,29 @@ BookmarksWidget::~BookmarksWidget() void BookmarksWidget::save() { - qDebug("Writing bookmarks [%s] %s", qUtf8Printable(m_path), xbel->write(m_path) ? "ok" : "failed"); + // TODO: check if saving is needed + //qDebug("Writing bookmarks [%s] %s", qUtf8Printable(m_path), xbel->write(m_path) ? "ok" : "failed"); } QAbstractItemModel *BookmarksWidget::model() const { - return ui->treeWidget->model(); -} - -QStringList BookmarksWidget::searchItem(QTreeWidgetItem *item, const QString &term) -{ - if(item->text(1).contains(term)) { - return { item->text(1) }; - } - - QStringList ret; - for(int i = 0; i < item->childCount(); ++i) { - ret += searchItem(item->child(i), term); - } - return ret; -} - -void BookmarksWidget::openItem(QTreeWidgetItem *item, int column) -{ - Q_UNUSED(column) - emit openUrl(QUrl::fromUserInput(item->text(1))); + Q_CHECK_PTR(m_model); + return m_model; } -void BookmarksWidget::showItemDetails() +void BookmarksWidget::expandNodes(BookmarkItem *node) { - QTreeWidgetItem *item = ui->treeWidget->currentItem(); - if(!item) { - ui->title_lineEdit->setText(""); - ui->href_label->setText(""); - return; + // iterate through children + for(int i = 0; i < node->childCount(); ++i) { + BookmarkItem *childNode = node->child(i); + + // and if it's a folder + if(childNode->type() == BookmarkItem::Folder) { + QModelIndex index = m_model->index(childNode); + ui->treeView->setExpanded(index, !childNode->folded); + + // only folders have children, so go through them + expandNodes(childNode); + } } - ui->title_lineEdit->setText(item->text(0)); - ui->href_lineEdit->setText(item->text(1)); -} +}
\ No newline at end of file |