19#include "ui_bookmarksmanager.h"
36 , m_bookmarks(
mApp->bookmarks())
37 , m_selectedBookmark(nullptr)
38 , m_blockDescriptionChangedSignal(false)
39 , m_adjustHeaderSizesOnShow(true)
47 connect(ui->tree, SIGNAL(bookmarksSelected(QList<BookmarkItem*>)),
this, SLOT(bookmarksSelected(QList<BookmarkItem*>)));
51 updateEditBox(
nullptr);
52 connect(ui->title, &QLineEdit::textEdited,
this, &BookmarksManager::bookmarkEdited);
53 connect(ui->address, &QLineEdit::textEdited,
this, &BookmarksManager::bookmarkEdited);
54 connect(ui->keyword, &QLineEdit::textEdited,
this, &BookmarksManager::bookmarkEdited);
55 connect(ui->description, &QPlainTextEdit::textChanged,
this, &BookmarksManager::descriptionEdited);
72 ui->tree->search(
string);
75void BookmarksManager::bookmarkActivated(
BookmarkItem* item)
80void BookmarksManager::bookmarkCtrlActivated(
BookmarkItem* item)
82 openBookmarkInNewTab(item);
85void BookmarksManager::bookmarkShiftActivated(
BookmarkItem* item)
87 openBookmarkInNewWindow(item);
90void BookmarksManager::bookmarksSelected(
const QList<BookmarkItem*> &items)
92 if (items.size() != 1) {
93 m_selectedBookmark =
nullptr;
94 updateEditBox(
nullptr);
97 m_selectedBookmark = items.at(0);
98 updateEditBox(m_selectedBookmark);
102void BookmarksManager::createContextMenu(
const QPoint &pos)
110 QAction *actNewBookmark = menu.addAction(tr(
"New Bookmark"),
this, SLOT(addBookmark()));
111 QAction *actNewFolder = menu.addAction(tr(
"New Folder"),
this, &BookmarksManager::addFolder);
112 QAction *actNewSeparator = menu.addAction(tr(
"New Separator"),
this, &BookmarksManager::addSeparator);
114 QAction* actDelete = menu.addAction(QIcon::fromTheme(
QSL(
"edit-delete")), tr(
"Delete"));
116 connect(actNewTab, SIGNAL(triggered()),
this, SLOT(openBookmarkInNewTab()));
117 connect(actNewWindow, SIGNAL(triggered()),
this, SLOT(openBookmarkInNewWindow()));
118 connect(actNewPrivateWindow, SIGNAL(triggered()),
this, SLOT(openBookmarkInNewPrivateWindow()));
119 connect(actDelete, &QAction::triggered,
this, &BookmarksManager::deleteBookmarks);
121 bool canBeDeleted =
false;
122 const QList<BookmarkItem*> items = ui->tree->selectedBookmarks();
132 actDelete->setDisabled(
true);
135 if (!m_selectedBookmark || !m_selectedBookmark->
isUrl()) {
136 actNewTab->setDisabled(
true);
137 actNewWindow->setDisabled(
true);
138 actNewPrivateWindow->setDisabled(
true);
141 if (!m_selectedBookmark) {
142 actNewBookmark->setDisabled(
true);
143 actNewFolder->setDisabled(
true);
144 actNewSeparator->setDisabled(
true);
152 item = item ? item : m_selectedBookmark;
156void BookmarksManager::openBookmarkInNewTab(
BookmarkItem* item)
158 item = item ? item : m_selectedBookmark;
162void BookmarksManager::openBookmarkInNewWindow(
BookmarkItem* item)
164 item = item ? item : m_selectedBookmark;
168void BookmarksManager::openBookmarkInNewPrivateWindow(
BookmarkItem* item)
170 item = item ? item : m_selectedBookmark;
174void BookmarksManager::addBookmark()
182void BookmarksManager::addFolder()
189void BookmarksManager::addSeparator()
195void BookmarksManager::deleteBookmarks()
197 const QList<BookmarkItem*> items = ui->tree->selectedBookmarks();
206void BookmarksManager::bookmarkEdited()
208 Q_ASSERT(ui->tree->selectedBookmarks().count() == 1);
210 BookmarkItem* item = ui->tree->selectedBookmarks().at(0);
212 item->
setUrl(QUrl::fromEncoded(ui->address->text().toUtf8()));
219void BookmarksManager::descriptionEdited()
223 if (!m_blockDescriptionChangedSignal) {
228void BookmarksManager::enableUpdates()
230 setUpdatesEnabled(
true);
235 setUpdatesEnabled(
false);
236 m_blockDescriptionChangedSignal =
true;
238 bool editable = bookmarkEditable(item);
239 bool showAddressAndKeyword = item && item->
isUrl();
243 ui->address->clear();
244 ui->keyword->clear();
245 ui->description->clear();
248 ui->title->setText(item->
title());
249 ui->address->setText(QString::fromUtf8(item->
url().toEncoded()));
250 ui->keyword->setText(item->
keyword());
251 ui->description->setPlainText(item->
description());
253 ui->title->setCursorPosition(0);
254 ui->address->setCursorPosition(0);
255 ui->keyword->setCursorPosition(0);
256 ui->description->moveCursor(QTextCursor::Start);
259 ui->title->setReadOnly(!editable);
260 ui->address->setReadOnly(!editable);
261 ui->keyword->setReadOnly(!editable);
262 ui->description->setReadOnly(!editable);
264 ui->labelAddress->setVisible(showAddressAndKeyword);
265 ui->address->setVisible(showAddressAndKeyword);
266 ui->labelKeyword->setVisible(showAddressAndKeyword);
267 ui->keyword->setVisible(showAddressAndKeyword);
270 auto* l =
static_cast<QFormLayout*
>(ui->editBox->layout());
272 if (showAddressAndKeyword) {
274 l->insertRow(1, ui->labelAddress, ui->address);
275 l->insertRow(2, ui->labelKeyword, ui->keyword);
279 l->removeWidget(ui->labelAddress);
280 l->removeWidget(ui->labelKeyword);
281 l->removeWidget(ui->address);
282 l->removeWidget(ui->keyword);
285 m_blockDescriptionChangedSignal =
false;
288 QTimer::singleShot(10,
this, &BookmarksManager::enableUpdates);
291bool BookmarksManager::bookmarkEditable(
BookmarkItem* item)
const
303 row = m_bookmarks->
model()->
index(m_selectedBookmark).row();
308 ui->tree->selectBookmark(item);
309 ui->tree->ensureBookmarkVisible(item);
313 ui->title->setFocus();
314 ui->title->selectAll();
318BookmarkItem* BookmarksManager::parentForNewBookmark()
const
320 if (m_selectedBookmark && m_selectedBookmark->
isFolder()) {
321 return m_selectedBookmark;
324 if (!m_selectedBookmark || m_selectedBookmark->
parent() == m_bookmarks->
rootItem()) {
328 return m_selectedBookmark->
parent();
331void BookmarksManager::keyPressEvent(QKeyEvent* event)
333 switch (event->key()) {
339 QWidget::keyPressEvent(event);
345 m_window =
mApp->getWindow();
347 return m_window.data();
350void BookmarksManager::showEvent(QShowEvent* event)
352 QWidget::showEvent(event);
354 if (m_adjustHeaderSizesOnShow) {
355 ui->tree->header()->resizeSection(0, ui->tree->header()->width() / 1.9);
356 m_adjustHeaderSizesOnShow =
false;
void setDescription(const QString &description)
QString description() const
void setKeyword(const QString &keyword)
BookmarkItem * parent() const
void setUrl(const QUrl &url)
void setTitle(const QString &title)
BookmarkItem * rootItem() const
void changeBookmark(BookmarkItem *item)
BookmarkItem * unsortedFolder() const
bool canBeModified(BookmarkItem *item) const
bool removeBookmark(BookmarkItem *item)
void insertBookmark(BookmarkItem *parent, int row, BookmarkItem *item)
BookmarksModel * model() const
void setMainWindow(BrowserWindow *window)
BookmarksManager(BrowserWindow *window, QWidget *parent=nullptr)
~BookmarksManager() override
void search(const QString &string)
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
void bookmarkShiftActivated(BookmarkItem *item)
void bookmarkCtrlActivated(BookmarkItem *item)
void bookmarkActivated(BookmarkItem *item)
void contextMenuRequested(const QPoint &point)
@ BookmarksManagerViewType
static QIcon privateBrowsingIcon()
static QIcon newWindowIcon()
static QIcon newTabIcon()