]> Some of my projects - localmylist.git/commitdiff
Make the template version of Settings::get more predictable.
authorAPTX <marek321@gmail.com>
Thu, 25 Apr 2013 14:18:37 +0000 (16:18 +0200)
committerAPTX <marek321@gmail.com>
Thu, 25 Apr 2013 14:18:37 +0000 (16:18 +0200)
localmylist/settings.h

index c26cfcf7f2d99ac60ad900f931a3da1e87245e62..b1017ece9c024d91b32f42fa7502d0a0f423a420 100644 (file)
@@ -16,8 +16,16 @@ public:
        explicit Settings(Database *db = 0, QObject *parent = 0);
        Database *database() const;
        void setDatabase(Database *db);
-       
-       template<typename T> void get(const QString &key, T& value) const { value = get(key).value<T>();}
+
+       template<typename T> T get(const QString &key, const T &defaultValue) const
+       {
+               QVariant value = get(key);
+
+               if (!value.isValid() || !value.canConvert<T>())
+                       return defaultValue;
+
+               return value.value<T>();
+       }
 
 signals:
        void settingsChanged();
@@ -28,7 +36,7 @@ public slots:
 
        void commit();
        void rollback();
-       
+
        void settingsChangedInDatabase();
 
 private: