From 60f18e6c3c816f4bca7c72e5a4f114787309485a Mon Sep 17 00:00:00 2001 From: David Edmundson Date: Thu, 27 Aug 2020 12:52:48 +0100 Subject: Introduce method to query KConfigSkeletonItem default value 5.64 added an isDefault method however this doesn't suffice for usage in KConfigDialogManager which compares a current value to the default. KConfigDialogManager currently uses a hack with side effects. Exposing the value directly solves that. --- src/core/kcoreconfigskeleton.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/core/kcoreconfigskeleton.cpp') diff --git a/src/core/kcoreconfigskeleton.cpp b/src/core/kcoreconfigskeleton.cpp index d02705d9..bfa3a60f 100644 --- a/src/core/kcoreconfigskeleton.cpp +++ b/src/core/kcoreconfigskeleton.cpp @@ -167,6 +167,12 @@ bool KConfigSkeletonItem::isSaveNeeded() const return d->mIsSaveNeededImpl(); } +QVariant KConfigSkeletonItem::getDefault() const +{ + Q_D(const KConfigSkeletonItem); + return d->mGetDefaultImpl(); +} + void KConfigSkeletonItem::readImmutability(const KConfigGroup &group) { Q_D(KConfigSkeletonItem); @@ -185,6 +191,12 @@ void KConfigSkeletonItem::setIsSaveNeededImpl(const std::function &impl d->mIsSaveNeededImpl = impl; } +void KConfigSkeletonItem::setGetDefaultImpl(const std::function &impl) +{ + Q_D(KConfigSkeletonItem); + d->mGetDefaultImpl = impl; +} + KPropertySkeletonItem::KPropertySkeletonItem(QObject *object, const QByteArray &propertyName, const QVariant &defaultValue) : KConfigSkeletonItem(*new KPropertySkeletonItemPrivate(object, propertyName, defaultValue), {}, {}) { @@ -196,6 +208,10 @@ KPropertySkeletonItem::KPropertySkeletonItem(QObject *object, const QByteArray & Q_D(const KPropertySkeletonItem); return d->mReference != d->mLoadedValue; }); + setGetDefaultImpl([this] { + Q_D(const KPropertySkeletonItem); + return d->mDefaultValue; + }); } QVariant KPropertySkeletonItem::property() const @@ -1555,6 +1571,7 @@ KConfigCompilerSignallingItem::KConfigCompilerSignallingItem(KConfigSkeletonItem setIsDefaultImpl([this] { return mItem->isDefault(); }); setIsSaveNeededImpl([this] { return mItem->isSaveNeeded(); }); + setGetDefaultImpl([this] {return mItem->getDefault(); }); } KConfigCompilerSignallingItem::~KConfigCompilerSignallingItem() -- cgit v1.2.1