digiKam
Loading...
Searching...
No Matches
dconfigdlgmodels.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 : 2009-11-03
7 * Description : A dialog base class which can handle multiple pages.
8 *
9 * SPDX-FileCopyrightText: 2009-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 * SPDX-FileCopyrightText: 2007 by Matthias Kretz <kretz at kde dot org>
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 *
14 * ============================================================ */
15
16#pragma once
17
18// Qt includes
19
20#include <QAbstractItemModel>
21#include <QWidget>
22
23// Local includes
24
25#include "digikam_export.h"
26
27namespace Digikam
28{
29
30class DConfigDlgModelPrivate;
31
45class DConfigDlgModel : public QAbstractItemModel
46{
47 Q_OBJECT
48 Q_DECLARE_PRIVATE(DConfigDlgModel)
49
50public:
51
55 enum Role
56 {
60 HeaderRole = Qt::UserRole + 1,
61
67 };
68
72 explicit DConfigDlgModel(QObject* const parent = nullptr);
73
77 ~DConfigDlgModel() override;
78
79protected:
80
81 DConfigDlgModel(DConfigDlgModelPrivate& dd, QObject* const parent);
82
83protected:
84
86};
87
88// --------------------------------------------------------------------------
89
94class DIGIKAM_EXPORT DConfigDlgWdgItem : public QObject
95{
96 Q_OBJECT
97 Q_PROPERTY(QString name READ name WRITE setName)
98 Q_PROPERTY(QString header READ header WRITE setHeader)
99 Q_PROPERTY(QIcon icon READ icon WRITE setIcon)
100 Q_PROPERTY(bool checkable READ isCheckable WRITE setCheckable)
101 Q_PROPERTY(bool checked READ isChecked WRITE setChecked)
106 Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled)
107
108public:
109
115 explicit DConfigDlgWdgItem(QWidget* const widget);
116
124 DConfigDlgWdgItem(QWidget* const widget, const QString& name);
125
129 ~DConfigDlgWdgItem() override;
130
134 QWidget* widget() const;
135
140 void setName(const QString& name);
141
145 QString name() const;
146
157 void setHeader(const QString& header);
158
162 QString header() const;
163
168 void setIcon(const QIcon& icon);
169
173 QIcon icon() const;
174
180 void setCheckable(bool checkable);
181
185 bool isCheckable() const;
186
190 bool isChecked() const;
191
195 bool isEnabled() const;
196
197public Q_SLOTS:
198
202 void setEnabled(bool);
203
207 void setChecked(bool checked);
208
209Q_SIGNALS:
210
215 void changed();
216
221 void toggled(bool checked);
222
223private:
224
225 class Private;
226 Private* const d = nullptr;
227};
228
229// --------------------------------------------------------------------------
230
232
238{
239 Q_OBJECT
240 Q_DECLARE_PRIVATE(DConfigDlgWdgModel)
241
242public:
243
249 explicit DConfigDlgWdgModel(QObject* const parent = nullptr);
250
254 ~DConfigDlgWdgModel() override = default;
255
264 DConfigDlgWdgItem* addPage(QWidget* widget, const QString& name);
265
271 void addPage(DConfigDlgWdgItem* item);
272
283 DConfigDlgWdgItem* insertPage(DConfigDlgWdgItem* before, QWidget* widget, const QString& name);
284
293 void insertPage(DConfigDlgWdgItem* before, DConfigDlgWdgItem* item);
294
304 DConfigDlgWdgItem* addSubPage(DConfigDlgWdgItem* parent, QWidget* widget, const QString& name);
305
313 void addSubPage(DConfigDlgWdgItem* parent, DConfigDlgWdgItem* item);
314
318 void removePage(DConfigDlgWdgItem* item);
319
323 int columnCount(const QModelIndex& parent = QModelIndex()) const override;
324 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
325 bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override;
326 Qt::ItemFlags flags(const QModelIndex& index) const override;
327 QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const override;
328 QModelIndex parent(const QModelIndex& index) const override;
329 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
330
334 DConfigDlgWdgItem* item(const QModelIndex& index) const;
335
340 QModelIndex index(const DConfigDlgWdgItem* item) const;
341
342Q_SIGNALS:
343
348 void toggled(DConfigDlgWdgItem* page, bool checked);
349
350private:
351
352 Q_PRIVATE_SLOT(d_func(), void _k_itemChanged())
353 Q_PRIVATE_SLOT(d_func(), void _k_itemToggled(bool))
354};
355
356} // namespace Digikam
Definition dconfigdlgmodels_p.h:24
A base class for a model used by DConfigDlgView.
Definition dconfigdlgmodels.h:46
~DConfigDlgModel() override
Definition dconfigdlgmodels.cpp:43
DConfigDlgModelPrivate *const d_ptr
Definition dconfigdlgmodels.h:85
Role
Definition dconfigdlgmodels.h:56
@ HeaderRole
Definition dconfigdlgmodels.h:60
@ WidgetRole
Definition dconfigdlgmodels.h:66
Definition dconfigdlgmodels.h:95
Definition dconfigdlgmodels_p.h:82
Definition dconfigdlgmodels.h:238
void toggled(DConfigDlgWdgItem *page, bool checked)
~DConfigDlgWdgModel() override=default
qulonglong value
Definition itemviewutilities.cpp:585
Definition datefolderview.cpp:34