From 32693ab1efcd708f0eba06c33fb5b52a59fd377b Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Mon, 20 Mar 2017 16:27:03 +0100 Subject: Fixed opening bookmarks with multiple windows --- src/forms/bookmarkswidget.cpp | 122 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 src/forms/bookmarkswidget.cpp (limited to 'src/forms/bookmarkswidget.cpp') diff --git a/src/forms/bookmarkswidget.cpp b/src/forms/bookmarkswidget.cpp new file mode 100644 index 0000000..8985fff --- /dev/null +++ b/src/forms/bookmarkswidget.cpp @@ -0,0 +1,122 @@ +/** LICENSE ******************************************************************** + ** + ** 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 "browser.h" +#include + +BookmarksWidget::BookmarksWidget(QWidget *parent) : + QWidget(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); + + window = nullptr; + dock = new QDockWidget(tr("Bookmarks"), 0); + dock->setWidget(this); + dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); + + 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())); + + xbel = new Xbel(ui->treeWidget); + xbel->read(sSettings->value("bookmarks.path").toString()); + + 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(sSettings->value("bookmarks.path").toString()); + } + + delete xbel; + delete ui; +} + +void BookmarksWidget::show() +{ + // show() gets called by a QAction in MainWindow + window = qobject_cast(sender()->parent()); + if(window) { + + // dockable widgets + dock->setParent(window); + window->addDockWidget(Qt::RightDockWidgetArea, dock); + + } else { + qWarning("BookmarksWidget not called by MainWindow"); + } + + QWidget::show(); +} + +void BookmarksWidget::deleteCurrentItem() +{ + delete ui->treeWidget->currentItem(); +} + +void BookmarksWidget::openItem(QTreeWidgetItem *item, int column) +{ + Q_UNUSED(column) + + if(window) { + window->addNewTab(QUrl::fromUserInput(item->text(1))); + } else { + qWarning("Trying to open a link without a MainWindow set"); + } +} + +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