X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fsettings.cpp;h=83fb8fb3406ad487f26fabab6384554d4fc65826;hp=e8ad9d0bf81ead6cf784c03db0d69b9a3505ea08;hb=eaba93b703ba5bca4edf09f4c076a00b529115cd;hpb=8cd290a5423e4fbe026b3a4cbfb2b9db03d5c47b diff --git a/src/common/settings.cpp b/src/common/settings.cpp index e8ad9d0b..83fb8fb3 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp @@ -29,6 +29,7 @@ #include "settings.h" QHash > Settings::settingsCache; +QHash > Settings::settingsChangeNotifier; // Settings::Settings(QString group_, QString appName_) // : group(group_), @@ -55,6 +56,11 @@ QHash > Settings::settingsCache; // */ // } +void Settings::notify(const QString &key, QObject *receiver, const char *slot) { + QObject::connect(notifier(group, key), SIGNAL(valueChanged(const QVariant &)), + receiver, slot); +} + QStringList Settings::allLocalKeys() { QSettings s(org(), appName); s.beginGroup(group); @@ -97,6 +103,9 @@ void Settings::setLocalValue(const QString &key, const QVariant &data) { s.setValue(key, data); s.endGroup(); setCacheValue(group, key, data); + if(hasNotifier(group, key)) { + emit notifier(group, key)->valueChanged(data); + } } const QVariant &Settings::localValue(const QString &key, const QVariant &def) { @@ -117,16 +126,3 @@ void Settings::removeLocalKey(const QString &key) { if(isCached(group, key)) settingsCache[group].remove(key); } - - -// void Settings::setCacheValue(const QString &group, const QString &key, const QVariant &data) { -// settingsCache[group][key] = data; -// } - -// const QVariant &Settings::cacheValue(const QString &group, const QString &key) { -// return settingsCache[group][key]; -// } - -// bool Settings::isCached(const QString &group, const QString &key) { -// return settingsCache.contains(group) && settingsCache[group].contains(key); -// }