digiKam
Loading...
Searching...
No Matches
bookmarksmngr.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2017-05-15
7 * Description : low level manager for bookmarks
8 *
9 * SPDX-FileCopyrightText: 2017-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 * ============================================================ */
14
15#pragma once
16
17// Qt includes
18
19#include <QObject>
20#include <QAbstractItemModel>
21#include <QUndoCommand>
22#include <QSortFilterProxyModel>
23
24// Local includes
25
26#include "searchtextbar.h"
27
28namespace Digikam
29{
30
31class BookmarksManager;
32class BookmarkNode;
33
34class RemoveBookmarksCommand : public QUndoCommand
35{
36public:
37
38 explicit RemoveBookmarksCommand(BookmarksManager* const mngr,
39 BookmarkNode* const parent,
40 int row);
41 ~RemoveBookmarksCommand() override;
42
43 void undo() override;
44 void redo() override;
45
46protected:
47
48 int m_row = 0;
50 BookmarkNode* m_node = nullptr;
52 bool m_done = false;
53};
54
55//---------------------------------------------------------------------------------
56
58{
59public:
60
61 explicit InsertBookmarksCommand(BookmarksManager* const mngr,
62 BookmarkNode* const parent,
63 BookmarkNode* const node,
64 int row);
65
66 void undo() override;
67 void redo() override;
68};
69
70//---------------------------------------------------------------------------------
71
72class ChangeBookmarkCommand : public QUndoCommand
73{
74public:
75
77 {
78 Url = 0,
80 Desc
81 };
82
83public:
84
85 explicit ChangeBookmarkCommand(BookmarksManager* const mngr,
86 BookmarkNode* const node,
87 const QString& newValue,
88 BookmarkData type);
89 ~ChangeBookmarkCommand() override;
90
91 void undo() override;
92 void redo() override;
93
94private:
95
96 class Private;
97 Private* const d = nullptr;
98};
99
103class BookmarksModel : public QAbstractItemModel
104{
105 Q_OBJECT
106
107public:
108
109 enum Roles
110 {
111 TypeRole = Qt::UserRole + 1,
112 UrlRole = Qt::UserRole + 2,
113 UrlStringRole = Qt::UserRole + 3,
114 SeparatorRole = Qt::UserRole + 4,
115 DateAddedRole = Qt::UserRole + 5
116 };
117
118public:
119
120 explicit BookmarksModel(BookmarksManager* const mngr, QObject* const parent = nullptr);
121 ~BookmarksModel() override;
122
124 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
125 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
126 int columnCount(const QModelIndex& parent = QModelIndex()) const override;
127 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
128 QModelIndex index(int, int, const QModelIndex& = QModelIndex()) const override;
129 QModelIndex parent(const QModelIndex& index= QModelIndex()) const override;
130 Qt::ItemFlags flags(const QModelIndex& index) const override;
131 Qt::DropActions supportedDropActions () const override;
132 QMimeData* mimeData(const QModelIndexList& indexes) const override;
133 QStringList mimeTypes() const override;
134 bool hasChildren(const QModelIndex& parent = QModelIndex()) const override;
135 BookmarkNode* node(const QModelIndex& index) const;
136 QModelIndex index(BookmarkNode* node) const;
137
138 bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row,
139 int column, const QModelIndex& parent) override;
140
141 bool removeRows(int row, int count, const QModelIndex& parent = QModelIndex()) override;
142 bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override;
143
144public Q_SLOTS:
145
146 void entryAdded(BookmarkNode* item);
147 void entryRemoved(BookmarkNode* parent, int row, BookmarkNode* item);
148 void entryChanged(BookmarkNode* item);
149
150private:
151
152 class Private;
153 Private* const d = nullptr;
154};
155
160class AddBookmarkProxyModel : public QSortFilterProxyModel
161{
162 Q_OBJECT
163
164public:
165
166 explicit AddBookmarkProxyModel(QObject* const parent = nullptr);
167
168 int columnCount(const QModelIndex& parent = QModelIndex()) const override;
169
170protected:
171
172 bool filterAcceptsRow(int srow, const QModelIndex& sparent) const override;
173};
174
175//---------------------------------------------------------------------------------
176
177class TreeProxyModel : public QSortFilterProxyModel
178{
179 Q_OBJECT
180
181public:
182
183 explicit TreeProxyModel(QObject* const parent = nullptr);
184
185 int columnCount(const QModelIndex&) const override;
186
187Q_SIGNALS:
188
190
191protected:
192
193 bool filterAcceptsRow(int srow, const QModelIndex& sparent) const override;
194
195private:
196
197 void emitResult(bool v);
198};
199
203class BookmarksManager : public QObject
204{
205 Q_OBJECT
206
207public:
208
209 explicit BookmarksManager(const QString& bookmarksFile, QObject* const parent = nullptr);
210 ~BookmarksManager() override;
211
212 void addBookmark(BookmarkNode* const parent, BookmarkNode* const node, int row = -1);
213 void removeBookmark(BookmarkNode* const node);
214 void setTitle(BookmarkNode* const node, const QString& newTitle);
215 void setUrl(BookmarkNode* const node, const QString& newUrl);
216 void setComment(BookmarkNode* const node, const QString& newDesc);
217 void changeExpanded();
218
221 QUndoStack* undoRedoStack() const;
222
223 void save();
224 void load();
225
226Q_SIGNALS:
227
229 void entryRemoved(BookmarkNode* parent, int row, BookmarkNode* item);
231
232public Q_SLOTS:
233
234 void importBookmarks();
235 void exportBookmarks();
236
237private:
238
239 class Private;
240 Private* const d = nullptr;
241
244};
245
246} // namespace Digikam
Definition bookmarksmngr.h:161
bool filterAcceptsRow(int srow, const QModelIndex &sparent) const override
Definition bookmarksmngr.cpp:702
int columnCount(const QModelIndex &parent=QModelIndex()) const override
Definition bookmarksmngr.cpp:697
Definition bookmarknode.h:31
Definition bookmarksmngr.h:204
void setTitle(BookmarkNode *const node, const QString &newTitle)
Definition bookmarksmngr.cpp:865
void entryChanged(BookmarkNode *item)
void setUrl(BookmarkNode *const node, const QString &newUrl)
Definition bookmarksmngr.cpp:879
~BookmarksManager() override
Definition bookmarksmngr.cpp:787
void save()
Definition bookmarksmngr.cpp:820
void setComment(BookmarkNode *const node, const QString &newDesc)
Definition bookmarksmngr.cpp:893
void importBookmarks()
Definition bookmarksmngr.cpp:932
BookmarkNode * bookmarks()
Definition bookmarksmngr.cpp:907
void entryRemoved(BookmarkNode *parent, int row, BookmarkNode *item)
void addBookmark(BookmarkNode *const parent, BookmarkNode *const node, int row=-1)
Definition bookmarksmngr.cpp:837
void removeBookmark(BookmarkNode *const node)
Definition bookmarksmngr.cpp:850
void entryAdded(BookmarkNode *item)
void exportBookmarks()
Definition bookmarksmngr.cpp:959
void load()
Definition bookmarksmngr.cpp:797
BookmarksModel * bookmarksModel()
Definition bookmarksmngr.cpp:917
QUndoStack * undoRedoStack() const
Definition bookmarksmngr.cpp:927
void changeExpanded()
Definition bookmarksmngr.cpp:793
Definition bookmarksmngr.h:104
int columnCount(const QModelIndex &parent=QModelIndex()) const override
Definition bookmarksmngr.cpp:428
QStringList mimeTypes() const override
Definition bookmarksmngr.cpp:540
~BookmarksModel() override
Definition bookmarksmngr.cpp:239
BookmarksManager * bookmarksManager() const
Definition bookmarksmngr.cpp:244
BookmarkNode * node(const QModelIndex &index) const
Definition bookmarksmngr.cpp:678
bool hasChildren(const QModelIndex &parent=QModelIndex()) const override
Definition bookmarksmngr.cpp:489
bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
Definition bookmarksmngr.cpp:575
void entryChanged(BookmarkNode *item)
Definition bookmarksmngr.cpp:286
bool removeRows(int row, int count, const QModelIndex &parent=QModelIndex()) override
Definition bookmarksmngr.cpp:293
Roles
Definition bookmarksmngr.h:110
@ TypeRole
Definition bookmarksmngr.h:111
@ UrlStringRole
Definition bookmarksmngr.h:113
@ SeparatorRole
Definition bookmarksmngr.h:114
@ DateAddedRole
Definition bookmarksmngr.h:115
@ UrlRole
Definition bookmarksmngr.h:112
QModelIndex parent(const QModelIndex &index=QModelIndex()) const override
Definition bookmarksmngr.cpp:464
Qt::DropActions supportedDropActions() const override
Definition bookmarksmngr.cpp:535
void entryRemoved(BookmarkNode *parent, int row, BookmarkNode *item)
Definition bookmarksmngr.cpp:276
QMimeData * mimeData(const QModelIndexList &indexes) const override
Definition bookmarksmngr.cpp:548
void entryAdded(BookmarkNode *item)
Definition bookmarksmngr.cpp:261
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
Definition bookmarksmngr.cpp:338
QModelIndex index(int, int, const QModelIndex &=QModelIndex()) const override
Definition bookmarksmngr.cpp:450
int rowCount(const QModelIndex &parent=QModelIndex()) const override
Definition bookmarksmngr.cpp:433
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
Definition bookmarksmngr.cpp:628
Qt::ItemFlags flags(const QModelIndex &index) const override
Definition bookmarksmngr.cpp:504
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
Definition bookmarksmngr.cpp:317
Definition bookmarksmngr.h:73
void undo() override
Definition bookmarksmngr.cpp:159
BookmarkData
Definition bookmarksmngr.h:77
@ Desc
Definition bookmarksmngr.h:80
@ Title
Definition bookmarksmngr.h:79
@ Url
Definition bookmarksmngr.h:78
~ChangeBookmarkCommand() override
Definition bookmarksmngr.cpp:154
void redo() override
Definition bookmarksmngr.cpp:185
Definition bookmarksmngr.h:58
void redo() override
Definition bookmarksmngr.cpp:97
void undo() override
Definition bookmarksmngr.cpp:92
Definition bookmarksmngr.h:35
void redo() override
Definition bookmarksmngr.cpp:71
int m_row
Definition bookmarksmngr.h:48
~RemoveBookmarksCommand() override
Definition bookmarksmngr.cpp:54
BookmarkNode * m_node
Definition bookmarksmngr.h:50
void undo() override
Definition bookmarksmngr.cpp:62
bool m_done
Definition bookmarksmngr.h:52
BookmarksManager * m_bookmarkManager
Definition bookmarksmngr.h:49
BookmarkNode * m_parent
Definition bookmarksmngr.h:51
Definition bookmarksmngr.h:178
bool filterAcceptsRow(int srow, const QModelIndex &sparent) const override
Definition bookmarksmngr.cpp:725
void signalFilterAccepts(bool)
int columnCount(const QModelIndex &) const override
Definition bookmarksmngr.cpp:717
qulonglong value
Definition itemviewutilities.cpp:585
Definition datefolderview.cpp:34