Falkon Develop
Cross-platform Qt-based web browser
bookmarkssidebar.cpp
Go to the documentation of this file.
1/* ============================================================
2* Falkon - Qt web browser
3* Copyright (C) 2010-2014 David Rosca <nowrep@gmail.com>
4*
5* This program is free software: you can redistribute it and/or modify
6* it under the terms of the GNU General Public License as published by
7* the Free Software Foundation, either version 3 of the License, or
8* (at your option) any later version.
9*
10* This program is distributed in the hope that it will be useful,
11* but WITHOUT ANY WARRANTY; without even the implied warranty of
12* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13* GNU General Public License for more details.
14*
15* You should have received a copy of the GNU General Public License
16* along with this program. If not, see <http://www.gnu.org/licenses/>.
17* ============================================================ */
18#include "bookmarkssidebar.h"
19#include "ui_bookmarkssidebar.h"
20#include "bookmarkstools.h"
21#include "bookmarkitem.h"
22#include "bookmarks.h"
23#include "mainapplication.h"
24#include "iconprovider.h"
25
26#include <QMenu>
27
29 : QWidget(parent)
30 , ui(new Ui::BookmarksSideBar)
31 , m_window(window)
32 , m_bookmarks(mApp->bookmarks())
33{
34 ui->setupUi(this);
36
37 connect(ui->tree, &BookmarksTreeView::bookmarkActivated, this, &BookmarksSidebar::bookmarkActivated);
38 connect(ui->tree, &BookmarksTreeView::bookmarkCtrlActivated, this, &BookmarksSidebar::bookmarkCtrlActivated);
39 connect(ui->tree, &BookmarksTreeView::bookmarkShiftActivated, this, &BookmarksSidebar::bookmarkShiftActivated);
40 connect(ui->tree, &BookmarksTreeView::contextMenuRequested, this, &BookmarksSidebar::createContextMenu);
41
42 connect(ui->search, &QLineEdit::textChanged, ui->tree, &BookmarksTreeView::search);
43}
44
46{
47 delete ui;
48}
49
50void BookmarksSidebar::bookmarkActivated(BookmarkItem* item)
51{
52 openBookmark(item);
53}
54
55void BookmarksSidebar::bookmarkCtrlActivated(BookmarkItem* item)
56{
57 openBookmarkInNewTab(item);
58}
59
60void BookmarksSidebar::bookmarkShiftActivated(BookmarkItem* item)
61{
62 openBookmarkInNewWindow(item);
63}
64
65void BookmarksSidebar::openBookmark(BookmarkItem* item)
66{
67 item = item ? item : ui->tree->selectedBookmark();
68 BookmarksTools::openBookmark(m_window, item);
69}
70
71void BookmarksSidebar::openBookmarkInNewTab(BookmarkItem* item)
72{
73 item = item ? item : ui->tree->selectedBookmark();
75}
76
77void BookmarksSidebar::openBookmarkInNewWindow(BookmarkItem* item)
78{
79 item = item ? item : ui->tree->selectedBookmark();
81}
82
83void BookmarksSidebar::openBookmarkInNewPrivateWindow(BookmarkItem* item)
84{
85 item = item ? item : ui->tree->selectedBookmark();
87}
88
89void BookmarksSidebar::deleteBookmarks()
90{
91 const QList<BookmarkItem*> items = ui->tree->selectedBookmarks();
92
93 for (BookmarkItem* item : items) {
94 if (m_bookmarks->canBeModified(item)) {
95 m_bookmarks->removeBookmark(item);
96 }
97 }
98}
99
100void BookmarksSidebar::createContextMenu(const QPoint &pos)
101{
102 QMenu menu;
103 QAction* actNewTab = menu.addAction(IconProvider::newTabIcon(), tr("Open in new tab"));
104 QAction* actNewWindow = menu.addAction(IconProvider::newWindowIcon(), tr("Open in new window"));
105 QAction* actNewPrivateWindow = menu.addAction(IconProvider::privateBrowsingIcon(), tr("Open in new private window"));
106
107 menu.addSeparator();
108 QAction* actDelete = menu.addAction(QIcon::fromTheme(QSL("edit-delete")), tr("Delete"));
109
110 connect(actNewTab, SIGNAL(triggered()), this, SLOT(openBookmarkInNewTab()));
111 connect(actNewWindow, SIGNAL(triggered()), this, SLOT(openBookmarkInNewWindow()));
112 connect(actNewPrivateWindow, SIGNAL(triggered()), this, SLOT(openBookmarkInNewPrivateWindow()));
113 connect(actDelete, &QAction::triggered, this, &BookmarksSidebar::deleteBookmarks);
114
115 bool canBeDeleted = false;
116 const QList<BookmarkItem*> items = ui->tree->selectedBookmarks();
117
118 for (BookmarkItem* item : items) {
119 if (m_bookmarks->canBeModified(item)) {
120 canBeDeleted = true;
121 break;
122 }
123 }
124
125 if (!canBeDeleted) {
126 actDelete->setDisabled(true);
127 }
128
129 if (!ui->tree->selectedBookmark() || !ui->tree->selectedBookmark()->isUrl()) {
130 actNewTab->setDisabled(true);
131 actNewWindow->setDisabled(true);
132 actNewPrivateWindow->setDisabled(true);
133 }
134
135 menu.exec(pos);
136}
137
138void BookmarksSidebar::showEvent(QShowEvent *event)
139{
140 QWidget::showEvent(event);
141 ui->search->setFocus();
142}
bool canBeModified(BookmarkItem *item) const
Definition: bookmarks.cpp:104
bool removeBookmark(BookmarkItem *item)
Definition: bookmarks.cpp:157
~BookmarksSidebar() override
BookmarksSidebar(BrowserWindow *window, QWidget *parent=nullptr)
static void openBookmarkInNewTab(BrowserWindow *window, BookmarkItem *item)
static void openBookmark(BrowserWindow *window, BookmarkItem *item)
static void openBookmarkInNewPrivateWindow(BookmarkItem *item)
static void openBookmarkInNewWindow(BookmarkItem *item)
void bookmarkShiftActivated(BookmarkItem *item)
void bookmarkCtrlActivated(BookmarkItem *item)
void bookmarkActivated(BookmarkItem *item)
void search(const QString &string)
void contextMenuRequested(const QPoint &point)
static QIcon privateBrowsingIcon()
static QIcon newWindowIcon()
static QIcon newTabIcon()
#define mApp
#define QSL(x)
Definition: qzcommon.h:40