From d0d16e088e2cf33f56eabf94a5f4a5e3be5fdd6f Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Mon, 19 Jan 2015 21:24:57 -0800 Subject: [PATCH] Introduced SettingsBridge class Class use to privatize direct access to settings --- libraries/shared/src/Settings.cpp | 9 +++----- libraries/shared/src/Settings.h | 34 +++++++++++++++++++++---------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/libraries/shared/src/Settings.cpp b/libraries/shared/src/Settings.cpp index e6654ac274..cf49d6a025 100644 --- a/libraries/shared/src/Settings.cpp +++ b/libraries/shared/src/Settings.cpp @@ -9,16 +9,13 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#include #include "Settings.h" -QVariant getFromSettings(QString key, QVariant defaultValue) { +QVariant SettingsBridge::getFromSettings(const QString& key, const QVariant& defaultValue) { return QSettings().value(key, defaultValue); } -void setInSettings(QString key, QVariant value) { +void SettingsBridge::setInSettings(const QString& key, const QVariant& value) { QSettings().setValue(key, value); -} - - +} \ No newline at end of file diff --git a/libraries/shared/src/Settings.h b/libraries/shared/src/Settings.h index 6ed141e20f..5f969edc1e 100644 --- a/libraries/shared/src/Settings.h +++ b/libraries/shared/src/Settings.h @@ -12,17 +12,23 @@ #ifndef hifi_Settings_h #define hifi_Settings_h +#include #include #include +// TODO: remove +class Settings : public QSettings { + +}; + template class SettingHandle { public: SettingHandle(const QString& key, const T& defaultValue); - const T& get() const; // Returns setting value, returns its default value if not found - const T& get(const T& other) const; // Returns setting value, returns other if not found - const T& getDefault() const; + T get() const; // Returns setting value, returns its default value if not found + T get(const T& other) const; // Returns setting value, returns other if not found + T getDefault() const; void set(const T& value) const; void reset() const; @@ -32,9 +38,15 @@ public: private: const QString _key; const QVariant _defaultValue; +}; + +class SettingsBridge { +private: + static QVariant getFromSettings(const QString& key, const QVariant& defaultValue); + static void setInSettings(const QString& key, const QVariant& value); - friend QVariant getFromSettings(QString key, QVariant defaultValue); - friend void setInSettings(QString key, QVariant value); + template + friend class SettingHandle; }; // Specialize template here for types used in Setting @@ -52,8 +64,8 @@ SettingHandle::SettingHandle(const QString& key, const T& defaultValue) : _ke } template -const T& SettingHandle::get() const { - QVariant variant = getFromSettings(_key, _defaultValue); +T SettingHandle::get() const { + QVariant variant = SettingsBridge::getFromSettings(_key, _defaultValue); if (variant.type() == type) { return variant.value(); } @@ -61,8 +73,8 @@ const T& SettingHandle::get() const { } template -const T& SettingHandle::get(const T& other) const { - QVariant variant = getFromSettings(_key, _defaultValue); +T SettingHandle::get(const T& other) const { + QVariant variant = SettingsBridge::getFromSettings(_key, _defaultValue); if (variant.type() == type) { return variant.value(); } @@ -70,13 +82,13 @@ const T& SettingHandle::get(const T& other) const { } template inline -const T& SettingHandle::getDefault() const { +T SettingHandle::getDefault() const { return _defaultValue.value(); } template inline void SettingHandle::set(const T& value) const { - setInSettings(_key, QVariant(value)); + SettingsBridge::setInSettings(_key, QVariant(value)); } template inline