1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3#ifndef BOOKMARKMANAGER_H
4#define BOOKMARKMANAGER_H
5
6#include <QtCore/QMutex>
7#include <QtWidgets/QTreeView>
8
9#include "ui_bookmarkwidget.h"
10
11QT_BEGIN_NAMESPACE
12
13class BookmarkManagerWidget;
14class BookmarkModel;
15class BookmarkFilterModel;
16class QKeyEvent;
17class QSortFilterProxyModel;
18class QToolBar;
19
20class BookmarkManager : public QObject
21{
22 Q_OBJECT
23 class BookmarkWidget;
24 class BookmarkTreeView;
25 class BookmarkListView;
26 Q_DISABLE_COPY(BookmarkManager)
27
28public:
29 static BookmarkManager* instance();
30 static void destroy();
31
32 QWidget* bookmarkDockWidget() const;
33 void setBookmarksMenu(QMenu* menu);
34 void setBookmarksToolbar(QToolBar *toolBar);
35
36public slots:
37 void addBookmark(const QString &title, const QString &url);
38
39signals:
40 void escapePressed();
41 void setSource(const QUrl &url);
42 void setSourceInNewTab(const QUrl &url);
43
44private:
45 BookmarkManager();
46 ~BookmarkManager() override;
47
48 void removeItem(const QModelIndex &index);
49 bool eventFilter(QObject *object, QEvent *event) override;
50 void buildBookmarksMenu(const QModelIndex &index, QMenu *menu);
51 void showBookmarkDialog(const QString &name, const QString &url);
52
53private slots:
54 void setupFinished();
55 void storeBookmarks();
56
57 void addBookmarkActivated();
58 void removeBookmarkActivated();
59 void manageBookmarks();
60 void refreshBookmarkMenu();
61 void refreshBookmarkToolBar();
62 void renameBookmark(const QModelIndex &index);
63
64 void setSourceFromAction();
65 void setSourceFromIndex(const QModelIndex &index, bool newTab);
66
67 void focusInEventOccurred();
68 void managerWidgetAboutToClose();
69 void textChanged(const QString &text);
70 void customContextMenuRequested(const QPoint &point);
71
72private:
73 bool typeAndSearch = false;
74
75 static QMutex mutex;
76 static BookmarkManager *bookmarkManager;
77
78 QMenu *bookmarkMenu = nullptr;
79 QToolBar *m_toolBar = nullptr;
80
81 BookmarkModel *bookmarkModel;
82 BookmarkFilterModel *bookmarkFilterModel = nullptr;
83 QSortFilterProxyModel *typeAndSearchModel = nullptr;
84
85 BookmarkWidget *bookmarkWidget;
86 BookmarkTreeView *bookmarkTreeView;
87 BookmarkManagerWidget *bookmarkManagerWidget = nullptr;
88};
89
90class BookmarkManager::BookmarkWidget : public QWidget
91{
92 Q_OBJECT
93public:
94 BookmarkWidget(QWidget *parent = nullptr)
95 : QWidget(parent) { ui.setupUi(this); }
96 virtual ~BookmarkWidget() override {}
97
98 Ui::BookmarkWidget ui;
99
100signals:
101 void focusInEventOccurred();
102
103private:
104 void focusInEvent(QFocusEvent *event) override;
105};
106
107class BookmarkManager::BookmarkTreeView : public QTreeView
108{
109 Q_OBJECT
110public:
111 BookmarkTreeView(QWidget *parent = nullptr);
112 ~BookmarkTreeView() override {}
113
114 void subclassKeyPressEvent(QKeyEvent *event);
115
116signals:
117 void editingDone();
118
119protected slots:
120 void commitData(QWidget *editor) override;
121
122private slots:
123 void setExpandedData(const QModelIndex &index);
124};
125
126QT_END_NAMESPACE
127
128#endif // BOOKMARKMANAGER_H
129

source code of qttools/src/assistant/assistant/bookmarkmanager.h