X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fsettings.cpp;h=12f1f6920b3e8191bb1ab11582e2985d3ba48bd5;hp=e8ad9d0bf81ead6cf784c03db0d69b9a3505ea08;hb=99934fe47293f61e1e62ecc0f0d49f958a992c32;hpb=8cd290a5423e4fbe026b3a4cbfb2b9db03d5c47b diff --git a/src/common/settings.cpp b/src/common/settings.cpp index e8ad9d0b..12f1f692 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp @@ -20,7 +20,6 @@ #include #include -#include #ifdef Q_WS_QWS #include @@ -29,6 +28,7 @@ #include "settings.h" QHash > Settings::settingsCache; +QHash > Settings::settingsChangeNotifier; // Settings::Settings(QString group_, QString appName_) // : group(group_), @@ -55,6 +55,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 +102,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 +125,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); -// }