1/*
2 This file is part of KOrganizer.
3 SPDX-FileCopyrightText: 2000, 2001 Cornelius Schumacher <schumacher@kde.org>
4 SPDX-FileCopyrightText: 2003 Waldo Bastian <bastian@kde.org>
5
6 SPDX-License-Identifier: LGPL-2.0-or-later
7*/
8
9#ifndef KCORECONFIGSKELETON_P_H
10#define KCORECONFIGSKELETON_P_H
11
12#include "kcoreconfigskeleton.h"
13
14class KCoreConfigSkeletonPrivate
15{
16public:
17 KCoreConfigSkeletonPrivate()
18 : mCurrentGroup(QStringLiteral("No Group"))
19 , mUseDefaults(false)
20 {
21 }
22 ~KCoreConfigSkeletonPrivate()
23 {
24 qDeleteAll(c: mItems);
25 }
26 QString mCurrentGroup;
27
28 KSharedConfig::Ptr mConfig; // pointer to KConfig object
29
30 KConfigSkeletonItem::List mItems;
31 KConfigSkeletonItem::Dict mItemDict;
32
33 bool mUseDefaults;
34};
35
36class KConfigSkeletonItemPrivate
37{
38public:
39 KConfigSkeletonItemPrivate()
40 : mIsImmutable(true)
41 , mWriteFlags(KConfigBase::Normal)
42 {
43 }
44 virtual ~KConfigSkeletonItemPrivate();
45 bool mIsImmutable; ///< Indicates this item is immutable
46 KConfigBase::WriteConfigFlags mWriteFlags; ///< The flags to pass to calls of writeEntry() and revertToDefault()
47
48 QString mLabel; ///< The label for this item
49 QString mToolTip; ///< The ToolTip text for this item
50 QString mWhatsThis; ///< The What's This text for this item
51 KConfigGroup mConfigGroup; ///< KConfigGroup, allow to read/write item in nested groups
52
53 // HACK: Necessary to avoid introducing new virtuals in KConfigSkeletonItem
54 std::function<bool()> mIsDefaultImpl;
55 std::function<bool()> mIsSaveNeededImpl;
56 std::function<QVariant()> mGetDefaultImpl;
57};
58
59class KPropertySkeletonItemPrivate : public KConfigSkeletonItemPrivate
60{
61public:
62 KPropertySkeletonItemPrivate(QObject *object, const QByteArray &propertyName, const QVariant &defaultValue)
63 : KConfigSkeletonItemPrivate()
64 , mObject(object)
65 , mPropertyName(propertyName)
66 , mDefaultValue(defaultValue)
67 , mConstDefaultValue(defaultValue)
68 {
69 mIsImmutable = false;
70 }
71
72 QObject *mObject;
73 const QByteArray mPropertyName;
74 QVariant mDefaultValue;
75 const QVariant mConstDefaultValue;
76 QVariant mReference;
77 QVariant mLoadedValue;
78 std::function<void()> mNotifyFunction;
79};
80
81#endif
82

source code of kconfig/src/core/kcoreconfigskeleton_p.h