/*******************************************************************************
**
** 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) :
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()));
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());
DockingWidget::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));
}