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 | |
11 | QT_BEGIN_NAMESPACE |
12 | |
13 | class BookmarkManagerWidget; |
14 | class BookmarkModel; |
15 | class BookmarkFilterModel; |
16 | class QKeyEvent; |
17 | class QSortFilterProxyModel; |
18 | class QToolBar; |
19 | |
20 | class BookmarkManager : public QObject |
21 | { |
22 | Q_OBJECT |
23 | class BookmarkWidget; |
24 | class BookmarkTreeView; |
25 | class BookmarkListView; |
26 | Q_DISABLE_COPY(BookmarkManager) |
27 | |
28 | public: |
29 | static BookmarkManager* instance(); |
30 | static void destroy(); |
31 | |
32 | QWidget* bookmarkDockWidget() const; |
33 | void (QMenu* ); |
34 | void setBookmarksToolbar(QToolBar *toolBar); |
35 | |
36 | public slots: |
37 | void addBookmark(const QString &title, const QString &url); |
38 | |
39 | signals: |
40 | void escapePressed(); |
41 | void setSource(const QUrl &url); |
42 | void setSourceInNewTab(const QUrl &url); |
43 | |
44 | private: |
45 | BookmarkManager(); |
46 | ~BookmarkManager() override; |
47 | |
48 | void removeItem(const QModelIndex &index); |
49 | bool eventFilter(QObject *object, QEvent *event) override; |
50 | void (const QModelIndex &index, QMenu *); |
51 | void showBookmarkDialog(const QString &name, const QString &url); |
52 | |
53 | private slots: |
54 | void setupFinished(); |
55 | void storeBookmarks(); |
56 | |
57 | void addBookmarkActivated(); |
58 | void removeBookmarkActivated(); |
59 | void manageBookmarks(); |
60 | void (); |
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 (const QPoint &point); |
71 | |
72 | private: |
73 | bool typeAndSearch = false; |
74 | |
75 | static QMutex mutex; |
76 | static BookmarkManager *bookmarkManager; |
77 | |
78 | QMenu * = 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 | |
90 | class BookmarkManager::BookmarkWidget : public QWidget |
91 | { |
92 | Q_OBJECT |
93 | public: |
94 | BookmarkWidget(QWidget *parent = nullptr) |
95 | : QWidget(parent) { ui.setupUi(this); } |
96 | virtual ~BookmarkWidget() override {} |
97 | |
98 | Ui::BookmarkWidget ui; |
99 | |
100 | signals: |
101 | void focusInEventOccurred(); |
102 | |
103 | private: |
104 | void focusInEvent(QFocusEvent *event) override; |
105 | }; |
106 | |
107 | class BookmarkManager::BookmarkTreeView : public QTreeView |
108 | { |
109 | Q_OBJECT |
110 | public: |
111 | BookmarkTreeView(QWidget *parent = nullptr); |
112 | ~BookmarkTreeView() override {} |
113 | |
114 | void subclassKeyPressEvent(QKeyEvent *event); |
115 | |
116 | signals: |
117 | void editingDone(); |
118 | |
119 | protected slots: |
120 | void commitData(QWidget *editor) override; |
121 | |
122 | private slots: |
123 | void setExpandedData(const QModelIndex &index); |
124 | }; |
125 | |
126 | QT_END_NAMESPACE |
127 | |
128 | #endif // BOOKMARKMANAGER_H |
129 | |