From 02980eb506e2b624d539a2dfb29bbe1834dd07a0 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Mon, 4 Sep 2017 16:20:09 +0200 Subject: Split off Bookmarks into static lib --- src/lib/bookmarks/bookmarkswidget.cpp | 96 +++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 src/lib/bookmarks/bookmarkswidget.cpp (limited to 'src/lib/bookmarks/bookmarkswidget.cpp') diff --git a/src/lib/bookmarks/bookmarkswidget.cpp b/src/lib/bookmarks/bookmarkswidget.cpp new file mode 100644 index 0000000..38716ce --- /dev/null +++ b/src/lib/bookmarks/bookmarkswidget.cpp @@ -0,0 +1,96 @@ +/******************************************************************************* + ** + ** smolbote: yet another qute browser + ** Copyright (C) 2017 Xian Nox + ** + ** This program is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** This program is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with this program. If not, see . + ** + ******************************************************************************/ + +#include "bookmarkswidget.h" +#include "ui_bookmarksform.h" +#include +#include + +BookmarksWidget::BookmarksWidget(const QString &path, QWidget *parent) : + DockingWidget(tr("Bookmarks"), parent), + ui(new Ui::BookmarksDialog) +{ + // make sure this dialog does not get deleted on close + setAttribute(Qt::WA_DeleteOnClose, false); + + 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->addSeparator_toolButton->setText("---"); + 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->deleteItem_toolButton->setShortcut(QKeySequence::Delete); + connect(ui->deleteItem_toolButton, SIGNAL(clicked(bool)), this, SLOT(deleteCurrentItem())); + + m_path = path; + xbel = new Xbel(ui->treeWidget); + xbel->read(m_path); + + 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->addSeparator_toolButton, &QToolButton::clicked, [this]() { + xbel->addSeparator(ui->treeWidget->currentItem()); + }); +} + +BookmarksWidget::~BookmarksWidget() +{ + qDebug("Destroying BookmarksManager"); + + if(ui->treeWidget->topLevelItemCount() > 0) { + xbel->write(m_path); + } + + delete xbel; + delete ui; +} + +void BookmarksWidget::deleteCurrentItem() +{ + delete ui->treeWidget->currentItem(); +} + +void BookmarksWidget::openItem(QTreeWidgetItem *item, int column) +{ + Q_UNUSED(column) + emit openUrl(QUrl::fromUserInput(item->text(1))); +} + +void BookmarksWidget::showItemDetails() +{ + QTreeWidgetItem *item = ui->treeWidget->currentItem(); + if(!item) { + ui->title_lineEdit->setText(""); + ui->href_label->setText(""); + return; + } + ui->title_lineEdit->setText(item->text(0)); + ui->href_lineEdit->setText(item->text(1)); +} -- cgit v1.2.1