camerauis/cameraxui/cxui/src/cxuisettingradiobuttonlist.cpp
changeset 28 3075d9b614e6
parent 19 d9aefe59d544
child 29 699651f2666f
child 43 0e652f8f1fbd
--- a/camerauis/cameraxui/cxui/src/cxuisettingradiobuttonlist.cpp	Fri Apr 16 14:51:30 2010 +0300
+++ b/camerauis/cameraxui/cxui/src/cxuisettingradiobuttonlist.cpp	Thu May 13 21:30:19 2010 +0300
@@ -53,6 +53,7 @@
 
         CxUiSettings::SettingItem setting;
         foreach (setting, data->mSettingPairList) {
+            CX_DEBUG(("CxuiSettingRadioButtonList - appending setting value: %s", setting.mValue.toString().toAscii().data()));
             settingStrings.append(setting.mItem); // setting string
             mSettingValues.append(setting.mValue); // engine value for setting
         }
@@ -121,11 +122,13 @@
 
     QString value;
     int err = mEngine->settings().get(mSettingId, value);
+    CX_DEBUG(("CxuiSettingRadioButtonList - original value: [%s]", value.toAscii().data()));
 
     int index = 0;
 
     if (err == CxeError::None) {
         index = mSettingValues.indexOf(QVariant(value));
+        CX_DEBUG(("CxuiSettingRadioButtonList - got original index of: %d", index));
     }
 
     mOriginalIndex = index;
@@ -180,7 +183,7 @@
 
     if (!mSettingId.isEmpty() && !mSettingValues.isEmpty()) {
         QVariant value = mSettingValues.at(index);
-        if (value.canConvert<int>()) {
+        if (value.type() == QVariant::Int) {
             CX_DEBUG(("index:%d value:%d", index, value.toInt()));
 
             // Don't set the value again, if it is the current value.
@@ -193,9 +196,17 @@
             }
             // inform interested clients about value changed event
             emit valueSelected(value.toInt());
-        } else if(value.canConvert<QString>()) {
+
+        } else if (value.type() == QVariant::String) {
             CX_DEBUG(("index:%d value:[%s]", index, value.toString().toAscii().constData()));
-            mEngine->settings().set(mSettingId, value.toString());
+
+            QString current;
+            CxeError::Id status(mEngine->settings().get(mSettingId, current));
+            CX_DEBUG(("settings model value:[%s]", current.toAscii().constData()));
+
+            if (status != CxeError::None || current != value.toString()) {
+                mEngine->settings().set(mSettingId, value.toString());
+            }
         }
     }