[Telepathy-commits] [telepathy-mission-control/master] Virtualization of mcd_account_get_parameter().

Alberto Mardegan alberto.mardegan at nokia.com
Fri Dec 5 01:48:30 PST 2008


---
 src/mcd-account.c |  125 ++++++++++++++++++++++++++++------------------------
 src/mcd-account.h |    3 +-
 2 files changed, 69 insertions(+), 59 deletions(-)

diff --git a/src/mcd-account.c b/src/mcd-account.c
index 1948e66..ba467ad 100644
--- a/src/mcd-account.c
+++ b/src/mcd-account.c
@@ -153,6 +153,69 @@ enum
 
 guint _mcd_account_signals[LAST_SIGNAL] = { 0 };
 
+static gboolean
+get_parameter (McdAccount *account, const gchar *name, GValue *value)
+{
+    McdAccountPrivate *priv = account->priv;
+    gchar key[MAX_KEY_LENGTH];
+
+    g_snprintf (key, sizeof (key), "param-%s", name);
+    if (!g_key_file_has_key (priv->keyfile, priv->unique_name, key, NULL))
+        return FALSE;
+
+    if (value)
+    {
+        gchar *v_string = NULL;
+        gint v_int = 0;
+        gboolean v_bool = FALSE;
+
+        switch (G_VALUE_TYPE (value))
+        {
+        case G_TYPE_STRING:
+            v_string = g_key_file_get_string (priv->keyfile, priv->unique_name,
+                                              key, NULL);
+            g_value_take_string (value, v_string);
+            break;
+        case G_TYPE_INT:
+            v_int = g_key_file_get_integer (priv->keyfile, priv->unique_name,
+                                            key, NULL);
+            g_value_set_int (value, v_int);
+            break;
+        case G_TYPE_INT64:
+            v_int = g_key_file_get_integer (priv->keyfile, priv->unique_name,
+                                            key, NULL);
+            g_value_set_int64 (value, v_int);
+            break;
+        case G_TYPE_UCHAR:
+            v_int = g_key_file_get_integer (priv->keyfile, priv->unique_name,
+                                            key, NULL);
+            g_value_set_uchar (value, v_int);
+            break;
+        case G_TYPE_UINT:
+            v_int = g_key_file_get_integer (priv->keyfile, priv->unique_name,
+                                            key, NULL);
+            g_value_set_uint (value, v_int);
+            break;
+        case G_TYPE_UINT64:
+            v_int = g_key_file_get_integer (priv->keyfile, priv->unique_name,
+                                            key, NULL);
+            g_value_set_uint64 (value, v_int);
+            break;
+        case G_TYPE_BOOLEAN:
+            v_bool = g_key_file_get_boolean (priv->keyfile, priv->unique_name,
+                                             key, NULL);
+            g_value_set_boolean (value, v_bool);
+            break;
+        default:
+            g_warning ("%s: skipping parameter %s, unknown type %s", G_STRFUNC,
+                       name, G_VALUE_TYPE_NAME (value));
+            return FALSE;
+        }
+    }
+
+    return TRUE;
+}
+
 static void
 process_online_request (gpointer key, gpointer cb_userdata, gpointer userdata)
 {
@@ -1358,6 +1421,8 @@ mcd_account_class_init (McdAccountClass * klass)
     object_class->set_property = set_property;
     object_class->get_property = get_property;
 
+    klass->get_parameter = get_parameter;
+
     g_object_class_install_property
         (object_class, PROP_DBUS_DAEMON,
          g_param_spec_object ("dbus-daemon", "DBus daemon", "DBus daemon",
@@ -1588,64 +1653,8 @@ gboolean
 mcd_account_get_parameter (McdAccount *account, const gchar *name,
                            GValue *value)
 {
-    McdAccountPrivate *priv = account->priv;
-    gchar key[MAX_KEY_LENGTH];
-
-    g_snprintf (key, sizeof (key), "param-%s", name);
-    if (!g_key_file_has_key (priv->keyfile, priv->unique_name, key, NULL))
-        return FALSE;
-
-    if (value)
-    {
-        gchar *v_string = NULL;
-        gint v_int = 0;
-        gboolean v_bool = FALSE;
-
-        switch (G_VALUE_TYPE (value))
-        {
-        case G_TYPE_STRING:
-            v_string = g_key_file_get_string (priv->keyfile, priv->unique_name,
-                                              key, NULL);
-            g_value_take_string (value, v_string);
-            break;
-        case G_TYPE_INT:
-            v_int = g_key_file_get_integer (priv->keyfile, priv->unique_name,
-                                            key, NULL);
-            g_value_set_int (value, v_int);
-            break;
-        case G_TYPE_INT64:
-            v_int = g_key_file_get_integer (priv->keyfile, priv->unique_name,
-                                            key, NULL);
-            g_value_set_int64 (value, v_int);
-            break;
-        case G_TYPE_UCHAR:
-            v_int = g_key_file_get_integer (priv->keyfile, priv->unique_name,
-                                            key, NULL);
-            g_value_set_uchar (value, v_int);
-            break;
-        case G_TYPE_UINT:
-            v_int = g_key_file_get_integer (priv->keyfile, priv->unique_name,
-                                            key, NULL);
-            g_value_set_uint (value, v_int);
-            break;
-        case G_TYPE_UINT64:
-            v_int = g_key_file_get_integer (priv->keyfile, priv->unique_name,
-                                            key, NULL);
-            g_value_set_uint64 (value, v_int);
-            break;
-        case G_TYPE_BOOLEAN:
-            v_bool = g_key_file_get_boolean (priv->keyfile, priv->unique_name,
-                                             key, NULL);
-            g_value_set_boolean (value, v_bool);
-            break;
-        default:
-            g_warning ("%s: skipping parameter %s, unknown type %s", G_STRFUNC,
-                       name, G_VALUE_TYPE_NAME (value));
-            return FALSE;
-        }
-    }
-
-    return TRUE;
+    return MCD_ACCOUNT_GET_CLASS (account)->get_parameter (account, name,
+                                                           value);
 }
 
 /**
diff --git a/src/mcd-account.h b/src/mcd-account.h
index fa33352..99280ef 100644
--- a/src/mcd-account.h
+++ b/src/mcd-account.h
@@ -53,7 +53,8 @@ struct _McdAccount
 struct _McdAccountClass
 {
     GObjectClass parent_class;
-    void (*_mc_reserved1) (void);
+    gboolean (*get_parameter) (McdAccount *account, const gchar *name,
+                               GValue *value);
     void (*_mc_reserved2) (void);
     void (*_mc_reserved3) (void);
     void (*_mc_reserved4) (void);
-- 
1.5.6.5




More information about the Telepathy-commits mailing list