feat(DSettings): support set default value
authorIceyer <me@iceyer.net>
Wed, 7 Feb 2018 16:02:50 +0000 (00:02 +0800)
committerIceyer <me@iceyer.net>
Wed, 7 Feb 2018 16:03:48 +0000 (00:03 +0800)
Change-Id: I83684be7756e5038f55c9fb468195c474259f1e1

src/settings/dsettingsoption.cpp
src/settings/dsettingsoption.h

index 2410c6f02d1af79bfef0e29536b2220038604549..4edb493bc5f8404d55b2b0b8ee3b3a20f51f6210 100644 (file)
@@ -48,7 +48,6 @@ public:
 DSettingsOption::DSettingsOption(QObject *parent) :
     QObject(parent), d_ptr(new DSettingsOptionPrivate(this))
 {
-
 }
 
 DSettingsOption::~DSettingsOption()
@@ -95,7 +94,7 @@ QVariant DSettingsOption::defaultValue() const
 QVariant DSettingsOption::value() const
 {
     Q_D(const DSettingsOption);
-    return d->value;
+    return (d->value.isValid() || d->value.isNull()) ? d->defalutValue : d->value;
 }
 
 QVariant DSettingsOption::data(const QString &dataType) const
@@ -135,6 +134,16 @@ void DSettingsOption::setValue(QVariant value)
     Q_EMIT valueChanged(value);
 }
 
+//!
+//! \brief DSettingsOption::setDefault will override default value of json
+//! \param value
+//!
+void DSettingsOption::setDefault(QVariant value)
+{
+    Q_D(DSettingsOption);
+    d->defalutValue = value;
+}
+
 void DSettingsOption::setData(const QString &dataType, QVariant value)
 {
     Q_D(DSettingsOption);
@@ -167,7 +176,6 @@ void DSettingsOptionPrivate::parseJson(const QString &prefixKey, const QJsonObje
     defalutValue = option.value("default").toVariant();
     hidden = !option.contains("hide") ? false : option.value("hide").toBool();
     viewType = option.value("type").toString();
-    value = defalutValue;
 
     QStringList revserdKeys;
     revserdKeys << "key" << "name" << "reset"
index 346923d3f956659445a6a6bfc86aaf7a6c75b4e0..c89a904d135501e6488fbc17284bca946a07ce64 100644 (file)
@@ -56,6 +56,7 @@ Q_SIGNALS:
 
 public Q_SLOTS:
     void setValue(QVariant value);
+    void setDefault(QVariant value);
     void setData(const QString &dataType, QVariant value);
 
 private: