summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVivek Dasmohapatra <vivek@collabora.co.uk>2010-09-13 21:28:44 +0100
committerVivek Dasmohapatra <vivek@collabora.co.uk>2010-09-13 21:50:31 +0100
commitff641a8dcb117f63fccff66bb2f8d5e83106bcf9 (patch)
tree1b4e7235e2ddc55fa6154ed60cfa872379ad7174
parent0f5556352746303cbe3ee7f923120526f9a68c29 (diff)
downloadtelepathy-mission-control-ff641a8dcb117f63fccff66bb2f8d5e83106bcf9.tar.gz
Use McdStorage instead of private structures in match_account_parameter
-rw-r--r--src/mcd-account-manager-query.c79
1 files changed, 43 insertions, 36 deletions
diff --git a/src/mcd-account-manager-query.c b/src/mcd-account-manager-query.c
index 9e37d64f..fbca8637 100644
--- a/src/mcd-account-manager-query.c
+++ b/src/mcd-account-manager-query.c
@@ -94,46 +94,53 @@ static gboolean
match_account_parameter (McdAccount *account, const gchar *name,
const GValue *value)
{
- const gchar *unique_name;
- GKeyFile *keyfile;
gboolean match = FALSE;
+ McdStorage *storage = _mcd_account_get_storage (account);
+ const gchar *account_name = mcd_account_get_unique_name (account);
+ GType vtype = G_VALUE_TYPE (value);
- unique_name = mcd_account_get_unique_name (account);
- keyfile = _mcd_account_get_keyfile (account);
- if (g_key_file_has_key (keyfile, unique_name, name, NULL))
+ if (mcd_storage_has_value (storage, account_name, name))
{
- const gchar *value_str;
- gchar *conf_value_str;
- gint conf_value_int, value_int;
- gboolean conf_value_bool, value_bool;
- switch (G_VALUE_TYPE (value))
- {
- case G_TYPE_STRING:
- conf_value_str =
- g_key_file_get_string (keyfile, unique_name, name,
- NULL);
- value_str = g_value_get_string (value);
- if (strcmp (conf_value_str, value_str) == 0) match = TRUE;
- g_free (conf_value_str);
- break;
- case G_TYPE_UINT:
- conf_value_int =
- g_key_file_get_integer (keyfile, unique_name, name,
- NULL);
- value_int = (gint)g_value_get_uint (value);
- if (conf_value_int == value_int) match = TRUE;
- break;
- case G_TYPE_BOOLEAN:
- conf_value_bool =
- g_key_file_get_boolean (keyfile, unique_name, name,
- NULL);
- value_bool = g_value_get_boolean (value);
- if (conf_value_bool == value_bool) match = TRUE;
- break;
- default:
- g_warning ("Unexpected type %s", G_VALUE_TYPE_NAME (value));
- }
+ GValue *conf = NULL;
+
+ switch (vtype)
+ {
+ case G_TYPE_STRING:
+ case G_TYPE_UINT:
+ case G_TYPE_BOOLEAN:
+ conf = mcd_storage_dup_value (storage, account_name, name, vtype,
+ NULL);
+ break;
+ default:
+ g_warning ("Unexpected type %s", G_VALUE_TYPE_NAME (value));
+ }
+
+ if (conf != NULL)
+ {
+ switch (vtype)
+ {
+ case G_TYPE_STRING:
+ match = g_strcmp0 (g_value_get_string (value),
+ g_value_get_string (conf)) == 0;
+ break;
+
+ case G_TYPE_UINT:
+ match = g_value_get_uint (value) == g_value_get_uint (conf);
+ break;
+
+ case G_TYPE_BOOLEAN:
+ match =
+ g_value_get_boolean (value) == g_value_get_boolean (conf);
+ break;
+
+ default:
+ break;
+ }
+
+ tp_g_value_slice_free (conf);
+ }
}
+
return match;
}