From 9203de811f049c8e604a9c3065781157fa506155 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Tue, 25 Sep 2018 14:44:01 +0200 Subject: Bookmarks: integrate model/view - fix addBookmark and search signals - fix drag'n'drop - add xbel::write --- lib/bookmarks/bookmarkswidget.cpp | 129 +++++++------------------------------- 1 file changed, 21 insertions(+), 108 deletions(-) (limited to 'lib/bookmarks/bookmarkswidget.cpp') 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 callback) const { - QStringList ret; - const QList 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 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); } -- cgit v1.2.1