diff options
author | Kevin Ottens <kevin.ottens@enioka.com> | 2019-11-12 11:41:01 +0100 |
---|---|---|
committer | Kevin Ottens <kevin.ottens@enioka.com> | 2019-11-12 13:33:19 +0100 |
commit | d63955cfe547b00aaf5e4c8bf669f50f45f484a9 (patch) | |
tree | 31fd51f152cac8c3e7e25ed8f2d992e575e4cac9 /src/core/kcoreconfigskeleton.h | |
parent | 44cfa0631d25a1b558640e6122fa6b755bb8c7ad (diff) | |
download | kconfig-d63955cfe547b00aaf5e4c8bf669f50f45f484a9.tar.gz kconfig-d63955cfe547b00aaf5e4c8bf669f50f45f484a9.tar.bz2 |
Add KPropertySkeletonItem
Summary:
This new item allows to use a QObject property as a source for a
setting. This is especially convenient for using with KCMs present in
systemsettings which tend to store information outside of KConfig (for
interfacing deeper with the system).
Reviewers: #frameworks, dfaure, davidedmundson, bport, crossi
Subscribers: kde-frameworks-devel
Tags: #frameworks
Differential Revision: https://phabricator.kde.org/D25211
Diffstat (limited to 'src/core/kcoreconfigskeleton.h')
-rw-r--r-- | src/core/kcoreconfigskeleton.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/core/kcoreconfigskeleton.h b/src/core/kcoreconfigskeleton.h index ffb6d6a5..c6e49c63 100644 --- a/src/core/kcoreconfigskeleton.h +++ b/src/core/kcoreconfigskeleton.h @@ -247,6 +247,56 @@ protected: KConfigSkeletonItemPrivate *const d_ptr; }; +class KPropertySkeletonItemPrivate; + +/** + * \class KPropertySkeletonItem kcoreconfigskeleton.h <KCoreConfigSkeleton> + * + * @short Class for proxying a QObject property as a preferences setting + * @author Kevin Ottens + * @see KConfigSkeletonItem + * + * This class represents one preferences setting as used by @ref KCoreConfigSkeleton. + * Unlike other @ref KConfigSkeletonItem subclasses, this one won't store the preference + * in KConfig but will use a QObject property as storage. + * You will have to register instances of this class with the function KCoreConfigSkeleton::addItem(). + * + * @since 5.65 + */ +class KCONFIGCORE_EXPORT KPropertySkeletonItem : public KConfigSkeletonItem +{ + Q_DECLARE_PRIVATE(KPropertySkeletonItem) +public: + /** + * Constructor + * + * @param object The QObject instance which we'll manage the property of + * @param propertyName The name of the property in @p object which we'll manage + * @param defaultValue The default value of the property + */ + KPropertySkeletonItem(QObject *object, const QByteArray &propertyName, const QVariant &defaultValue); + + /** @copydoc KConfigSkeletonItem::property() */ + QVariant property() const override; + /** @copydoc KConfigSkeletonItem::setProperty(const QVariant &) */ + void setProperty(const QVariant &p) override; + /** @copydoc KConfigSkeletonItem::isEqual(const QVariant &) */ + bool isEqual(const QVariant &p) const override; + + /** @copydoc KConfigSkeletonItem::readConfig(KConfig *) */ + void readConfig(KConfig *) override; + /** @copydoc KConfigSkeletonItem::writeConfig(KConfig *) */ + void writeConfig(KConfig *) override; + + /** @copydoc KConfigSkeletonItem::readDefault(KConfig *) */ + void readDefault(KConfig *) override; + /** @copydoc KConfigSkeletonItem::setDefault() */ + void setDefault() override; + /** @copydoc KConfigSkeletonItem::swapDefault() */ + void swapDefault() override; +}; + + /** * \class KConfigSkeletonGenericItem kcoreconfigskeleton.h <KConfigSkeletonGenericItem> */ |