[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground/network/telepathy-accounts-kcm/src
From:       George Goldberg <grundleborg () googlemail ! com>
Date:       2009-08-11 12:38:52
Message-ID: 1249994332.349332.5009.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1010016 by gberg:

Fix bug where parameters with the default value were not unset when editing the account.

 M  +41 -8     edit-account-dialog.cpp  


--- trunk/playground/network/telepathy-accounts-kcm/src/edit-account-dialog.cpp #1010015:1010016
@@ -238,27 +238,60 @@
     foreach (Tp::ProtocolParameter *pp, mandatoryParameterValues.keys()) {
         QVariant value = mandatoryParameterValues.value(pp);
 
-        // Unset empty parameters.
-        if (!value.isNull()) {
-            parameters.insert(pp->name(), value);
+        // Unset null parameters.
+        if (value.isNull()) {
+            unsetParameters.append(pp->name());
             continue;
         }
 
-        unsetParameters.append(pp->name());
+        // Unset any parameters where the default value is equal to the current value.
+        if (pp->defaultValue() == value) {
+            unsetParameters.append(pp->name());
+            continue;
+        }
+
+        // Unset any strings where the default is empty, and the value is an empty string
+        if (pp->type() == QVariant::String) {
+            if ((pp->defaultValue().isNull()) && value.toString().isEmpty()) {
+                unsetParameters.append(pp->name());
+                continue;
+            }
+        }
+
+        // Parameter has a valid value, so set it.
+        parameters.insert(pp->name(), value);
     }
 
     foreach (Tp::ProtocolParameter *pp, optionalParameterValues.keys()) {
         QVariant value = optionalParameterValues.value(pp);
 
-        // Unset empty parameters.
-        if (!value.isNull()) {
-            parameters.insert(pp->name(), value);
+        // Unset null parameters.
+        if (value.isNull()) {
+            unsetParameters.append(pp->name());
             continue;
         }
 
-        unsetParameters.append(pp->name());
+        // Unset any parameters where the default value is equal to the current value.
+        if (pp->defaultValue() == value) {
+            unsetParameters.append(pp->name());
+            continue;
+        }
+
+        // Unset any strings where the default is empty, and the value is an empty string
+        if (pp->type() == QVariant::String) {
+            if ((pp->defaultValue().isNull()) && value.toString().isEmpty()) {
+                unsetParameters.append(pp->name());
+                continue;
+            }
+        }
+
+        // Parameter has a valid value, so set it.
+        parameters.insert(pp->name(), value);
     }
 
+    // kDebug() << "Set parameters:" << parameters;
+    // kDebug() << "Unset parameters:" << unsetParameters;
+
     Tp::PendingStringList *psl = d->item->account()->updateParameters(parameters, unsetParameters);
 
     connect(psl,
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic