digiKam
Loading...
Searching...
No Matches
dconfigdlgmodels_p.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#include "dconfigdlgmodels.h"
19
20namespace Digikam
21{
22
23class Q_DECL_HIDDEN DConfigDlgModelPrivate
24{
25 Q_DECLARE_PUBLIC(DConfigDlgModel)
26
27public:
28
30 virtual ~DConfigDlgModelPrivate() = default;
31
32protected:
33
34 DConfigDlgModel* q_ptr = nullptr;
35
36private:
37
38 Q_DISABLE_COPY(DConfigDlgModelPrivate)
39};
40
41// ----------------------------------------------------------------------------
42
43class Q_DECL_HIDDEN PageItem
44{
45public:
46
47 explicit PageItem(DConfigDlgWdgItem* const pageItem, PageItem* const parent = nullptr);
48 ~PageItem();
49
50 void appendChild(PageItem* const child);
51 void insertChild(int row, PageItem* const child);
52 void removeChild(int row);
53
54 PageItem* child(int row);
55 int childCount() const;
56 int columnCount() const;
57 int row() const;
58 PageItem* parent() const;
59
60 DConfigDlgWdgItem* pageWidgetItem() const;
61
62 PageItem* findChild(const DConfigDlgWdgItem* item);
63
64 void dump(int indent = 0);
65
66private:
67
68 DConfigDlgWdgItem* mPageWidgetItem = nullptr;
69 QList<PageItem*> mChildItems;
70 PageItem* mParentItem = nullptr;
71
72private:
73
74 // Disable
75 PageItem(const PageItem&) = delete;
76 PageItem& operator=(const PageItem&) = delete;
77};
78
79// ----------------------------------------------------------------------------
80
82{
83 Q_DECLARE_PUBLIC(DConfigDlgWdgModel)
84
85protected:
86
88 : rootItem(new PageItem(nullptr, nullptr))
89 {
90 }
91
93 {
94 delete rootItem;
95 rootItem = nullptr;
96 }
97
99 {
101
102 DConfigDlgWdgItem* const item = qobject_cast<DConfigDlgWdgItem*>(q->sender());
103
104 if (!item)
105 {
106 return;
107 }
108
109 const QModelIndex index = q->index(item);
110
111 if (!index.isValid())
112 {
113 return;
114 }
115
116 Q_EMIT q->dataChanged(index, index);
117 }
118
119 void _k_itemToggled(bool checked)
120 {
122
123 DConfigDlgWdgItem* const item = qobject_cast<DConfigDlgWdgItem*>(q->sender());
124
125 if (!item)
126 {
127 return;
128 }
129
130 Q_EMIT q->toggled(item, checked);
131 }
132
133protected:
134
135 PageItem* rootItem = nullptr;
136
137private:
138
139 // Disable
141 DConfigDlgWdgModelPrivate& operator=(const DConfigDlgWdgModelPrivate&) = delete;
142};
143
144} // namespace Digikam
Definition dconfigdlgmodels_p.h:24
virtual ~DConfigDlgModelPrivate()=default
A base class for a model used by DConfigDlgView.
Definition dconfigdlgmodels.h:46
Definition dconfigdlgmodels.h:95
Definition dconfigdlgmodels_p.h:82
void _k_itemChanged()
Definition dconfigdlgmodels_p.h:98
DConfigDlgWdgModelPrivate()
Definition dconfigdlgmodels_p.h:87
~DConfigDlgWdgModelPrivate()
Definition dconfigdlgmodels_p.h:92
void _k_itemToggled(bool checked)
Definition dconfigdlgmodels_p.h:119
Definition dconfigdlgmodels.h:238
Definition dconfigdlgmodels_p.h:44
Definition datefolderview.cpp:34