[telepathy-mission-control/master] Supports parameters of type 'as'

Alberto Mardegan alberto.mardegan at nokia.com
Fri Apr 24 01:30:35 PDT 2009


---
 src/mcd-account.c |   23 ++++++++++++++++++++++-
 1 files changed, 22 insertions(+), 1 deletions(-)

diff --git a/src/mcd-account.c b/src/mcd-account.c
index 58d46ed..4f157f7 100644
--- a/src/mcd-account.c
+++ b/src/mcd-account.c
@@ -267,6 +267,14 @@ set_parameter (McdAccount *account, const gchar *name, const GValue *value)
 				g_value_get_boolean (value));
 	break;
     default:
+        if (G_VALUE_HOLDS (value, G_TYPE_STRV))
+        {
+            gchar **strings = g_value_get_boxed (value);
+            g_key_file_set_string_list (priv->keyfile, priv->unique_name, key,
+                                        (const gchar **)strings,
+                                        g_strv_length (strings));
+            break;
+        }
 	g_warning ("Unexpected param type %s", G_VALUE_TYPE_NAME (value));
     }
 }
@@ -283,7 +291,7 @@ get_parameter (McdAccount *account, const gchar *name, GValue *value)
 
     if (value)
     {
-        gchar *v_string = NULL;
+        gchar *v_string = NULL, **v_strings;
         gint v_int = 0;
         gboolean v_bool = FALSE;
 
@@ -325,6 +333,14 @@ get_parameter (McdAccount *account, const gchar *name, GValue *value)
             g_value_set_boolean (value, v_bool);
             break;
         default:
+            if (G_VALUE_HOLDS (value, G_TYPE_STRV))
+            {
+                v_strings = g_key_file_get_string_list (priv->keyfile,
+                                                        priv->unique_name, key,
+                                                        NULL, NULL);
+                g_value_take_boxed (value, v_strings);
+                break;
+            }
             g_warning ("%s: skipping parameter %s, unknown type %s", G_STRFUNC,
                        name, G_VALUE_TYPE_NAME (value));
             return FALSE;
@@ -1113,6 +1129,11 @@ mc_param_type (const TpConnectionManagerParam *param)
 	return G_TYPE_UINT;
     case DBUS_TYPE_BOOLEAN:
 	return G_TYPE_BOOLEAN;
+    case DBUS_TYPE_ARRAY:
+        if (param->dbus_signature[1] == DBUS_TYPE_STRING)
+            return G_TYPE_STRV;
+        /* other array types are not supported:
+         * fall through the default case */
     default:
         g_warning ("skipping parameter %s, unknown type %s",
                    param->name, param->dbus_signature);
-- 
1.5.6.5



More information about the telepathy-commits mailing list