common: Notify if key was removed from settings
authorManuel Nickschas <sputnick@quassel-irc.org>
Sun, 3 Jun 2018 22:04:47 +0000 (00:04 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Sun, 3 Jun 2018 22:06:22 +0000 (00:06 +0200)
Settings have a notification feature so consumers can subscribe to
value changes. This notification should also be emitted in case
a settings key is removed altogether.

src/common/settings.cpp

index bb50f7f..2d79ffe 100644 (file)
@@ -120,6 +120,7 @@ void Settings::setVersionMinor(const uint versionMinor)
     s.setValue("Config/VersionMinor", versionMinor);
 }
 
+
 bool Settings::sync() {
     create_qsettings;
     s.sync();
@@ -131,11 +132,13 @@ bool Settings::sync() {
     }
 }
 
+
 bool Settings::isWritable() {
     create_qsettings;
     return s.isWritable();
 }
 
+
 QStringList Settings::allLocalKeys()
 {
     create_qsettings;
@@ -200,6 +203,7 @@ const QVariant &Settings::localValue(const QString &key, const QVariant &def)
     return cacheValue(normKey);
 }
 
+
 bool Settings::localKeyExists(const QString &key)
 {
     QString normKey = normalizedKey(group, key);
@@ -218,6 +222,10 @@ void Settings::removeLocalKey(const QString &key)
     s.remove(key);
     s.endGroup();
     QString normKey = normalizedKey(group, key);
-    if (isCached(normKey))
+    if (isCached(normKey)) {
         settingsCache.remove(normKey);
+    }
+    if (hasNotifier(normKey)) {
+        emit notifier(normKey)->valueChanged({});
+    }
 }