aboutsummaryrefslogtreecommitdiff
path: root/src/core/kcoreconfigskeleton.cpp
diff options
context:
space:
mode:
authorBenjamin Port <benjamin.port@enioka.com>2020-02-12 10:51:32 +0100
committerBenjamin Port <benjamin.port@enioka.com>2020-02-12 11:26:16 +0100
commit059a4feee45b91d819d7675fe5b3cc220f29c6ee (patch)
treef3de15d8c020d6c05e5ca5e128a405e38bf64a43 /src/core/kcoreconfigskeleton.cpp
parent1def4714cb919ed73cec840ecd7a583de0a7712b (diff)
downloadkconfig-059a4feee45b91d819d7675fe5b3cc220f29c6ee.tar.gz
kconfig-059a4feee45b91d819d7675fe5b3cc220f29c6ee.tar.bz2
Add setNotifyFunction to KPropertySkeletonItem
Summary: This function will be called when the property value change Reviewers: ervin, meven, crossi Subscribers: kde-frameworks-devel Tags: #frameworks Differential Revision: https://phabricator.kde.org/D27342
Diffstat (limited to 'src/core/kcoreconfigskeleton.cpp')
-rw-r--r--src/core/kcoreconfigskeleton.cpp24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/core/kcoreconfigskeleton.cpp b/src/core/kcoreconfigskeleton.cpp
index 7566301b..be2fe27c 100644
--- a/src/core/kcoreconfigskeleton.cpp
+++ b/src/core/kcoreconfigskeleton.cpp
@@ -205,7 +205,13 @@ QVariant KPropertySkeletonItem::property() const
void KPropertySkeletonItem::setProperty(const QVariant &p)
{
Q_D(KPropertySkeletonItem);
+ if (d->mReference == p) {
+ return;
+ }
d->mReference = p;
+ if (d->mNotifyFunction) {
+ d->mNotifyFunction();
+ }
}
bool KPropertySkeletonItem::isEqual(const QVariant &p) const
@@ -217,7 +223,7 @@ bool KPropertySkeletonItem::isEqual(const QVariant &p) const
void KPropertySkeletonItem::readConfig(KConfig *)
{
Q_D(KPropertySkeletonItem);
- d->mReference = d->mObject->property(d->mPropertyName.constData());
+ setProperty(d->mObject->property(d->mPropertyName.constData()));
d->mLoadedValue = d->mReference;
}
@@ -231,19 +237,31 @@ void KPropertySkeletonItem::writeConfig(KConfig *)
void KPropertySkeletonItem::readDefault(KConfig *)
{
Q_D(KPropertySkeletonItem);
- d->mReference = d->mConstDefaultValue;
+ setProperty(d->mConstDefaultValue);
}
void KPropertySkeletonItem::setDefault()
{
Q_D(KPropertySkeletonItem);
- d->mReference = d->mDefaultValue;
+ setProperty(d->mDefaultValue);
}
void KPropertySkeletonItem::swapDefault()
{
Q_D(KPropertySkeletonItem);
+ if (d->mReference == d->mDefaultValue) {
+ return;
+ }
std::swap(d->mReference, d->mDefaultValue);
+ if (d->mNotifyFunction) {
+ d->mNotifyFunction();
+ }
+}
+
+void KPropertySkeletonItem::setNotifyFunction(const std::function<void ()> &impl)
+{
+ Q_D(KPropertySkeletonItem);
+ d->mNotifyFunction = impl;
}
KCoreConfigSkeleton::ItemString::ItemString(const QString &_group, const QString &_key,