aboutsummaryrefslogtreecommitdiff
path: root/lib/bookmarks/bookmarkswidget.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-01-07 00:48:27 +0100
committerAqua-sama <aqua@iserlohn-fortress.net>2018-01-07 00:48:27 +0100
commite0f64f9330fc30553dc9d8dcf308079f5d391526 (patch)
tree8c21a08f25208150ed4f0bcbf8496334c2e08bcc /lib/bookmarks/bookmarkswidget.cpp
parentUpdated ReadMe and pkgbuild (diff)
downloadsmolbote-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.cpp89
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