From 4f2fa227b270112ef40cb37fa45a3f7f9a695354 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Mon, 19 Jan 2015 22:35:38 -0800 Subject: [PATCH] Got rid of SettingHandle::type --- libraries/shared/src/Settings.cpp | 4 ++++ libraries/shared/src/Settings.h | 27 +++++++-------------------- 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/libraries/shared/src/Settings.cpp b/libraries/shared/src/Settings.cpp index cf49d6a025..94f253fe66 100644 --- a/libraries/shared/src/Settings.cpp +++ b/libraries/shared/src/Settings.cpp @@ -12,10 +12,14 @@ #include "Settings.h" +namespace SettingHandles { + QVariant SettingsBridge::getFromSettings(const QString& key, const QVariant& defaultValue) { return QSettings().value(key, defaultValue); } 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 5f969edc1e..c0f4296fbb 100644 --- a/libraries/shared/src/Settings.h +++ b/libraries/shared/src/Settings.h @@ -21,6 +21,8 @@ class Settings : public QSettings { }; +namespace SettingHandles { + template class SettingHandle { public: @@ -33,8 +35,6 @@ public: void set(const T& value) const; void reset() const; - static const QVariant::Type type; - private: const QString _key; const QVariant _defaultValue; @@ -48,25 +48,15 @@ private: template friend class SettingHandle; }; - -// Specialize template here for types used in Setting -template const QVariant::Type SettingHandle::type = QVariant::Invalid; -template<> const QVariant::Type SettingHandle::type = QVariant::Int; -template<> const QVariant::Type SettingHandle::type = QVariant::Bool; -template<> const QVariant::Type SettingHandle::type = QVariant::Double; -template<> const QVariant::Type SettingHandle::type = QVariant::Double; -template<> const QVariant::Type SettingHandle::type = QVariant::String; - + template SettingHandle::SettingHandle(const QString& key, const T& defaultValue) : _key(key), _defaultValue(defaultValue) { - // Will fire if template not specialized for that type below - Q_STATIC_ASSERT_X(SettingHandle::type != QVariant::Invalid, "SettingHandle: Invalid type"); } template T SettingHandle::get() const { QVariant variant = SettingsBridge::getFromSettings(_key, _defaultValue); - if (variant.type() == type) { + if (variant.canConvert()) { return variant.value(); } return _defaultValue.value(); @@ -74,8 +64,8 @@ T SettingHandle::get() const { template T SettingHandle::get(const T& other) const { - QVariant variant = SettingsBridge::getFromSettings(_key, _defaultValue); - if (variant.type() == type) { + QVariant variant = SettingsBridge::getFromSettings(_key, QVariant(other)); + if (variant.canConvert()) { return variant.value(); } return other; @@ -95,10 +85,7 @@ template inline void SettingHandle::reset() const { setInSettings(_key, _defaultValue); } - -// Put applicationwide settings here -namespace SettingHandles { - + } #endif // hifi_Settings_h \ No newline at end of file