aboutsummaryrefslogtreecommitdiff
path: root/lib/bookmarks/bookmarkswidget.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-09-25 14:44:01 +0200
committerAqua-sama <aqua@iserlohn-fortress.net>2018-09-25 14:44:01 +0200
commit9203de811f049c8e604a9c3065781157fa506155 (patch)
tree96096d8cbeefd58c988ddb97dcd51fa21873ffb6 /lib/bookmarks/bookmarkswidget.cpp
parentBookmarks: add BookmarkItem and BookmarkModel (diff)
downloadsmolbote-9203de811f049c8e604a9c3065781157fa506155.tar.xz
Bookmarks: integrate model/view
- fix addBookmark and search signals - fix drag'n'drop - add xbel::write
Diffstat (limited to 'lib/bookmarks/bookmarkswidget.cpp')
-rw-r--r--lib/bookmarks/bookmarkswidget.cpp129
1 files changed, 21 insertions, 108 deletions
diff --git a/lib/bookmarks/bookmarkswidget.cpp b/lib/bookmarks/bookmarkswidget.cpp
index 8e6677c..a7ea6d1 100644
--- a/lib/bookmarks/bookmarkswidget.cpp
+++ b/lib/bookmarks/bookmarkswidget.cpp
@@ -50,26 +50,20 @@ BookmarksWidget::BookmarksWidget(const QString &path, QWidget *parent)
// 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);
+ model = new BookmarkModel(this);
QFile bookmarksFile(path);
if(bookmarksFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
XbelReader xbel(&bookmarksFile);
- xbel.read(model);
+ xbel.read(model->root());
bookmarksFile.close();
}
- treeView->setModel(model);
+ ui->treeView->setModel(model);
- expandChildren(treeView, model, QModelIndex());
+ expandChildren(ui->treeView, model, QModelIndex());
- connect(treeView, &QTreeView::activated, this, [this, model](const QModelIndex &index) {
+ connect(ui->treeView, &QTreeView::activated, this, [this](const QModelIndex &index) {
if(index.column() == 1)
emit openUrl(index.data(Qt::DisplayRole).toUrl());
else {
@@ -82,84 +76,6 @@ BookmarksWidget::BookmarksWidget(const QString &path, QWidget *parent)
//
m_bookmarksPath = path;
-
- // read bookmarks
- {
- QFile bookmarksFile(m_bookmarksPath);
- if(bookmarksFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
- XbelReader xbel(&bookmarksFile);
- xbel.read(ui->treeWidget);
- //qDebug("Reading bookmarks [%s] %s", qUtf8Printable(path), m_model->read(&xbel) ? "ok" : "failed");
- bookmarksFile.close();
- }
- }
-
- // open bookmark action
- connect(ui->treeWidget, &QTreeWidget::itemActivated, this, [this](QTreeWidgetItem *item, int column) {
- Q_UNUSED(column);
- if(ui->treeWidget->itemType(item) == BookmarksView::Bookmark)
- emit openUrl(QUrl::fromUserInput(item->text(1)));
- });
-
- // add bookmark action
- connect(ui->addBookmark_toolButton, &QToolButton::clicked, this, [this]() {
- auto *parentItem = ui->treeWidget->currentItem();
- if(ui->treeWidget->itemType(parentItem) == BookmarksView::Bookmark)
- parentItem = parentItem->parent();
-
- auto *bookmark = ui->treeWidget->createBookmark(parentItem);
- bookmark->setText(0, tr("title"));
- bookmark->setText(1, tr("href"));
-
- this->m_isChanged = true;
- });
-
- // add folder action
- connect(ui->addFolder_toolButton, &QToolButton::clicked, this, [this]() {
- auto *parentItem = ui->treeWidget->currentItem();
- if(ui->treeWidget->itemType(parentItem) == BookmarksView::Bookmark)
- parentItem = parentItem->parent();
-
- auto *folder = ui->treeWidget->createFolder(parentItem);
- folder->setText(0, tr("title"));
-
- this->m_isChanged = true;
- });
-
- // delete item action
- connect(ui->deleteItem_toolButton, &QToolButton::clicked, this, [this]() {
- delete ui->treeWidget->currentItem();
- this->m_isChanged = true;
- });
-
- // edit item action
- connect(ui->treeWidget, &QTreeWidget::currentItemChanged, this, [this](QTreeWidgetItem *current, QTreeWidgetItem *previous) {
- // save the previous item
- if(previous) {
- if(ui->treeWidget->itemType(previous) == BookmarksView::Folder) {
- previous->setText(0, ui->folderTitle->text());
- ui->folder_groupBox->setVisible(false);
- } else if(ui->treeWidget->itemType(previous) == BookmarksView::Bookmark) {
- previous->setText(0, ui->bookmarkTitle->text());
- previous->setText(1, ui->bookmarkHref->text());
- ui->bookmark_groupBox->setVisible(false);
- }
- }
-
- // edit current item
- if(current) {
- if(ui->treeWidget->itemType(current) == BookmarksView::Folder) {
- ui->folderTitle->setText(current->text(0));
- ui->folder_groupBox->setVisible(true);
- } else if(ui->treeWidget->itemType(current) == BookmarksView::Bookmark) {
- ui->bookmarkTitle->setText(current->text(0));
- ui->bookmarkHref->setText(current->text(1));
- ui->bookmark_groupBox->setVisible(true);
- }
- }
-
- this->m_isChanged = true;
- });
}
BookmarksWidget::~BookmarksWidget()
@@ -173,34 +89,31 @@ void BookmarksWidget::save()
return;
}
- QFile bookmarksFile(m_bookmarksPath);
- if(bookmarksFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
- XbelWriter xbel(&bookmarksFile);
- xbel.write(ui->treeWidget);
- bookmarksFile.flush();
- bookmarksFile.close();
-
- m_isChanged = false;
- }
+// QFile bookmarksFile(m_bookmarksPath);
+// if(bookmarksFile.open(QIODevice::WriteOnly | QIODevice::Text)) {
+// XbelWriter xbel(&bookmarksFile);
+// xbel.write(ui->treeWidget);
+// bookmarksFile.flush();
+// bookmarksFile.close();
+//
+// m_isChanged = false;
+// }
}
void BookmarksWidget::addBookmark(const QString &title, const QString &url)
{
- auto *bookmark = ui->treeWidget->createBookmark(nullptr);
- bookmark->setText(0, title);
- bookmark->setText(1, url);
-
+ model->appendBookmark(title, url, QModelIndex());
m_isChanged = true;
}
void BookmarksWidget::search(const QString &term, std::function<void(QStringList &)> callback) const
{
- QStringList ret;
- const QList<QTreeWidgetItem *> res = ui->treeWidget->findItems(term, Qt::MatchContains | Qt::MatchRecursive, 1);
- for(const QTreeWidgetItem *i : res) {
- if(!i->text(1).isEmpty())
- ret.append(i->text(1));
- }
+ QStringList ret = model->search(term);
+// const QList<QTreeWidgetItem *> res = ui->treeWidget->findItems(term, Qt::MatchContains | Qt::MatchRecursive, 1);
+// for(const QTreeWidgetItem *i : res) {
+// if(!i->text(1).isEmpty())
+// ret.append(i->text(1));
+// }
callback(ret);
}