digiKam
Loading...
Searching...
No Matches
bookmarksmenu.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 : menu to manage 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 <QMenu>
20#include <QList>
21#include <QAction>
22#include <QWidget>
23#include <QModelIndex>
24#include <QAbstractItemModel>
25
26// Local includes
27
28#include "bookmarksmngr.h"
29
30namespace Digikam
31{
32
36class ModelMenu : public QMenu
37{
38 Q_OBJECT
39
40public:
41
42 explicit ModelMenu(QWidget* const parent = nullptr);
43 ~ModelMenu() override;
44
45 void setModel(QAbstractItemModel* model);
46 QAbstractItemModel* model() const;
47
48 void setMaxRows(int max);
49 int maxRows() const;
50
51 void setFirstSeparator(int offset);
52 int firstSeparator() const;
53
54 void setRootIndex(const QModelIndex& index);
55 QModelIndex rootIndex() const;
56
57 void setHoverRole(int role);
58 int hoverRole() const;
59
60 void setSeparatorRole(int role);
61 int separatorRole() const;
62
63 QAction* makeAction(const QIcon& icon, const QString& text, QObject* const parent);
64
65Q_SIGNALS:
66
67 void activated(const QModelIndex& index);
68 void hovered(const QString& text);
69
70protected:
71
73 virtual bool prePopulated();
74
76 virtual void postPopulated();
77
79 void createMenu(const QModelIndex& parent, int max,
80 QMenu* parentMenu = nullptr,
81 QMenu* menu = nullptr);
82
83private Q_SLOTS:
84
85 void slotAboutToShow();
86 void slotTriggered(QAction* action);
87 void slotHovered(QAction* action);
88
89private:
90
91 QAction* makeAction(const QModelIndex& index);
92
93private:
94
95 class Private;
96 Private* const d = nullptr;
97};
98
99// ---------------------------------------------------------------------------
100
105{
106 Q_OBJECT
107
108public:
109
110 explicit BookmarksMenu(BookmarksManager* const mngr,
111 QWidget* const parent = nullptr);
112 ~BookmarksMenu() override;
113
114 void setInitialActions(const QList<QAction*>& actions);
115
116Q_SIGNALS:
117
118 void openUrl(const QUrl& url);
119
120protected:
121
122 bool prePopulated() override;
123
124private Q_SLOTS:
125
126 void slotActivated(const QModelIndex& index);
127
128private:
129
130 class Private;
131 Private* const d = nullptr;
132};
133
134} // namespace Digikam
Definition bookmarksmngr.h:204
Definition bookmarksmenu.h:105
void setInitialActions(const QList< QAction * > &actions)
Definition bookmarksmenu.cpp:341
~BookmarksMenu() override
Definition bookmarksmenu.cpp:306
void openUrl(const QUrl &url)
bool prePopulated() override
add any actions before the tree, return true if any actions are added.
Definition bookmarksmenu.cpp:316
Definition bookmarksmenu.h:37
int hoverRole() const
Definition bookmarksmenu.cpp:115
QAction * makeAction(const QIcon &icon, const QString &text, QObject *const parent)
Definition bookmarksmenu.cpp:238
void setMaxRows(int max)
Definition bookmarksmenu.cpp:80
void hovered(const QString &text)
void activated(const QModelIndex &index)
int maxRows() const
Definition bookmarksmenu.cpp:85
int separatorRole() const
Definition bookmarksmenu.cpp:125
virtual bool prePopulated()
add any actions before the tree, return true if any actions are added.
Definition bookmarksmenu.cpp:61
~ModelMenu() override
Definition bookmarksmenu.cpp:56
void setHoverRole(int role)
Definition bookmarksmenu.cpp:110
QModelIndex rootIndex() const
Definition bookmarksmenu.cpp:105
void createMenu(const QModelIndex &parent, int max, QMenu *parentMenu=nullptr, QMenu *menu=nullptr)
put all of the children of parent into menu up to max
Definition bookmarksmenu.cpp:168
virtual void postPopulated()
add any actions after the tree
Definition bookmarksmenu.cpp:66
void setRootIndex(const QModelIndex &index)
Definition bookmarksmenu.cpp:100
int firstSeparator() const
Definition bookmarksmenu.cpp:95
void setModel(QAbstractItemModel *model)
Definition bookmarksmenu.cpp:70
void setSeparatorRole(int role)
Definition bookmarksmenu.cpp:120
QAbstractItemModel * model() const
Definition bookmarksmenu.cpp:75
void setFirstSeparator(int offset)
Definition bookmarksmenu.cpp:90
Definition datefolderview.cpp:34