/* * This file is part of smolbote. It's copyrighted by the contributors recorded * in the version control history of the file, available from its original * location: git://neueland.iserlohn-fortress.net/smolbote.git * * SPDX-License-Identifier: GPL-3.0 */ #include "bookmarkswidget.h" #include "ui_bookmarksform.h" #include BookmarksWidget::BookmarksWidget(const QString &path, QWidget *parent) : QWidget(parent) , ui(new Ui::BookmarksDialog) { // make sure this dialog does not get deleted on close setAttribute(Qt::WA_DeleteOnClose, false); setWindowTitle(tr("Bookmarks")); ui->setupUi(this); 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); editEntry_shortcut = new QShortcut(QKeySequence("F2"), this); m_model = new BookmarksModel(style(), this); ui->treeView->setModel(m_model); xbel = new Xbel(path); qDebug("Reading bookmarks [%s] %s", qUtf8Printable(path), m_model->read(xbel) ? "ok" : "failed"); m_model->expandItems(ui->treeView); connect(ui->treeView, &QTreeView::activated, this, [this](const QModelIndex &index) { if(ui->treeView->isPersistentEditorOpen(index)) ui->treeView->closePersistentEditor(index); else emit openUrl(m_model->data(index, BookmarksModel::OpenUrlRole).toUrl()); }); connect(ui->addBookmark_toolButton, &QToolButton::clicked, this, [this]() { QModelIndex idx = ui->treeView->currentIndex(); m_model->insertItem(BookmarkItem::Bookmark, idx); }); connect(ui->addFolder_toolButton, &QToolButton::clicked, this, [this]() { QModelIndex idx = ui->treeView->currentIndex(); m_model->insertItem(BookmarkItem::Folder, idx); }); connect(editEntry_shortcut, &QShortcut::activated, this, [this]() { QModelIndex idx = ui->treeView->currentIndex(); ui->treeView->openPersistentEditor(idx); }); } BookmarksWidget::~BookmarksWidget() { delete xbel; delete ui; } void BookmarksWidget::save() { if(m_model->isModified()) qDebug("Writing bookmarks %s", m_model->write(xbel) ? "ok" : "failed"); else qDebug("Writing bookmarks skipped"); } QAbstractItemModel *BookmarksWidget::model() const { Q_CHECK_PTR(m_model); return m_model; } void BookmarksWidget::closeOthers() { emit closeOthersSignal(); }