aboutsummaryrefslogtreecommitdiff
path: root/src/lib/bookmarks/bookmarkswidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/bookmarks/bookmarkswidget.cpp')
-rw-r--r--src/lib/bookmarks/bookmarkswidget.cpp96
1 files changed, 96 insertions, 0 deletions
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 <http://www.gnu.org/licenses/>.
+ **
+ ******************************************************************************/
+
+#include "bookmarkswidget.h"
+#include "ui_bookmarksform.h"
+#include <QTreeWidget>
+#include <QUrl>
+
+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));
+}