From 9936a3252f26ddd99e936ad41dc03b1e83eba6ea Mon Sep 17 00:00:00 2001 From: Danielle Madeley Date: Fri, 21 May 2010 19:23:22 +1000 Subject: Support Account.Interface.Storage Also support org.moblin.libsocialweb for Meego --- libempathy/empathy-account-settings.c | 92 +++++++++++++++++++++++++++++++++++ libempathy/empathy-account-settings.h | 10 ++++ 2 files changed, 102 insertions(+) (limited to 'libempathy') diff --git a/libempathy/empathy-account-settings.c b/libempathy/empathy-account-settings.c index 29ff3f1b7..1f0d35cb8 100644 --- a/libempathy/empathy-account-settings.c +++ b/libempathy/empathy-account-settings.c @@ -76,6 +76,13 @@ struct _EmpathyAccountSettingsPriv gulong managers_ready_id; GSimpleAsyncResult *apply_result; + + gboolean storage; + gboolean attempted_storage_properties; + gchar *storage_provider; + GValue *storage_identifier; + GHashTable *storage_specific_information; + TpStorageRestrictionFlags storage_restrictions; }; static void @@ -104,6 +111,9 @@ static void empathy_account_settings_managers_ready_cb (GObject *obj, GParamSpec *pspec, gpointer user_data); static void empathy_account_settings_check_readyness ( EmpathyAccountSettings *self); +static void empathy_account_settings_got_account_storage (TpProxy *account, + GHashTable *properties, const GError *error, gpointer user_data, + GObject *object); static void empathy_account_settings_set_property (GObject *object, @@ -214,6 +224,15 @@ empathy_account_settings_constructed (GObject *object) empathy_account_settings_account_ready_cb, self); tp_g_signal_connect_object (priv->managers, "notify::ready", G_CALLBACK (empathy_account_settings_managers_ready_cb), object, 0); + + priv->storage = tp_proxy_has_interface_by_id (priv->account, + TP_IFACE_QUARK_ACCOUNT_INTERFACE_STORAGE); + + if (priv->storage) + tp_cli_dbus_properties_call_get_all (priv->account, -1, + TP_IFACE_ACCOUNT_INTERFACE_STORAGE, + empathy_account_settings_got_account_storage, + NULL, NULL, object); } if (G_OBJECT_CLASS ( @@ -350,6 +369,13 @@ empathy_account_settings_finalize (GObject *object) g_free (priv->service); g_free (priv->display_name); g_free (priv->icon_name); + g_free (priv->storage_provider); + + if (priv->storage_identifier != NULL) + tp_g_value_slice_free (priv->storage_identifier); + + if (priv->storage_specific_information != NULL) + g_hash_table_unref (priv->storage_specific_information); if (priv->required_params != NULL) g_array_free (priv->required_params, TRUE); @@ -421,6 +447,9 @@ empathy_account_settings_check_readyness (EmpathyAccountSettings *self) } } + if (priv->storage && !priv->attempted_storage_properties) + return; + g_object_ref (priv->manager); priv->ready = TRUE; @@ -456,6 +485,43 @@ empathy_account_settings_managers_ready_cb (GObject *object, empathy_account_settings_check_readyness (settings); } +static void +empathy_account_settings_got_account_storage (TpProxy *account, + GHashTable *properties, + const GError *error, + gpointer user_data, + GObject *object) +{ + EmpathyAccountSettingsPriv *priv = GET_PRIV (object); + + priv->attempted_storage_properties = TRUE; + + if (error != NULL) + { + DEBUG ("Failed to get Account.Iface.Storage properties: %s", + error->message); + return; + } + + /* Note to the unwary, GetAll() does not returned fully-qualified property + * names as is common for Telepathy APIs */ + priv->storage_provider = g_strdup (tp_asv_get_string (properties, + "StorageProvider")); + + if (!EMP_STR_EMPTY (priv->storage_provider)) + { + priv->storage_identifier = tp_g_value_slice_dup ( + tp_asv_lookup (properties, "StorageIdentifier")); + priv->storage_specific_information = g_hash_table_ref ( + tp_asv_get_boxed (properties, "StorageSpecificInformation", + TP_HASH_TYPE_QUALIFIED_PROPERTY_VALUE_MAP)); + priv->storage_restrictions = tp_asv_get_uint32 (properties, + "StorageRestrictions", NULL); + } + + empathy_account_settings_check_readyness (EMPATHY_ACCOUNT_SETTINGS (object)); +} + EmpathyAccountSettings * empathy_account_settings_new (const gchar *connection_manager, const gchar *protocol, @@ -1384,3 +1450,29 @@ empathy_account_settings_get_tp_protocol (EmpathyAccountSettings *self) return tp_connection_manager_get_protocol (priv->manager, priv->protocol); } + +const char * +empathy_account_settings_get_storage_provider (EmpathyAccountSettings *self) +{ + return GET_PRIV (self)->storage_provider; +} + +const GValue * +empathy_account_settings_get_storage_identifier (EmpathyAccountSettings *self) +{ + return GET_PRIV (self)->storage_identifier; +} + +GHashTable * +empathy_account_settings_get_storage_specific_information ( + EmpathyAccountSettings *self) +{ + return GET_PRIV (self)->storage_specific_information; +} + +TpStorageRestrictionFlags +empathy_account_settings_get_storage_restrictions ( + EmpathyAccountSettings *self) +{ + return GET_PRIV (self)->storage_restrictions; +} diff --git a/libempathy/empathy-account-settings.h b/libempathy/empathy-account-settings.h index d3276e1a5..1ce3f53c0 100644 --- a/libempathy/empathy-account-settings.h +++ b/libempathy/empathy-account-settings.h @@ -181,6 +181,16 @@ gboolean empathy_account_settings_is_valid (EmpathyAccountSettings *settings); const TpConnectionManagerProtocol * empathy_account_settings_get_tp_protocol ( EmpathyAccountSettings *settings); +const gchar *empathy_account_settings_get_storage_provider ( + EmpathyAccountSettings *self); +const GValue *empathy_account_settings_get_storage_identifier ( + EmpathyAccountSettings *self); +GHashTable *empathy_account_settings_get_storage_specific_information ( + EmpathyAccountSettings *self); +TpStorageRestrictionFlags empathy_account_settings_get_storage_restrictions ( + EmpathyAccountSettings *self); + + G_END_DECLS #endif /* #ifndef __EMPATHY_ACCOUNT_SETTINGS_H__*/ -- cgit v1.2.3 From aaebc7e2323b89aa577d7d724257522fd0407d3f Mon Sep 17 00:00:00 2001 From: Danielle Madeley Date: Fri, 8 Oct 2010 12:27:17 +1100 Subject: Revert changes to empathy-account-settings --- libempathy/empathy-account-settings.c | 92 ----------------------------------- libempathy/empathy-account-settings.h | 10 ---- 2 files changed, 102 deletions(-) (limited to 'libempathy') diff --git a/libempathy/empathy-account-settings.c b/libempathy/empathy-account-settings.c index 1f0d35cb8..29ff3f1b7 100644 --- a/libempathy/empathy-account-settings.c +++ b/libempathy/empathy-account-settings.c @@ -76,13 +76,6 @@ struct _EmpathyAccountSettingsPriv gulong managers_ready_id; GSimpleAsyncResult *apply_result; - - gboolean storage; - gboolean attempted_storage_properties; - gchar *storage_provider; - GValue *storage_identifier; - GHashTable *storage_specific_information; - TpStorageRestrictionFlags storage_restrictions; }; static void @@ -111,9 +104,6 @@ static void empathy_account_settings_managers_ready_cb (GObject *obj, GParamSpec *pspec, gpointer user_data); static void empathy_account_settings_check_readyness ( EmpathyAccountSettings *self); -static void empathy_account_settings_got_account_storage (TpProxy *account, - GHashTable *properties, const GError *error, gpointer user_data, - GObject *object); static void empathy_account_settings_set_property (GObject *object, @@ -224,15 +214,6 @@ empathy_account_settings_constructed (GObject *object) empathy_account_settings_account_ready_cb, self); tp_g_signal_connect_object (priv->managers, "notify::ready", G_CALLBACK (empathy_account_settings_managers_ready_cb), object, 0); - - priv->storage = tp_proxy_has_interface_by_id (priv->account, - TP_IFACE_QUARK_ACCOUNT_INTERFACE_STORAGE); - - if (priv->storage) - tp_cli_dbus_properties_call_get_all (priv->account, -1, - TP_IFACE_ACCOUNT_INTERFACE_STORAGE, - empathy_account_settings_got_account_storage, - NULL, NULL, object); } if (G_OBJECT_CLASS ( @@ -369,13 +350,6 @@ empathy_account_settings_finalize (GObject *object) g_free (priv->service); g_free (priv->display_name); g_free (priv->icon_name); - g_free (priv->storage_provider); - - if (priv->storage_identifier != NULL) - tp_g_value_slice_free (priv->storage_identifier); - - if (priv->storage_specific_information != NULL) - g_hash_table_unref (priv->storage_specific_information); if (priv->required_params != NULL) g_array_free (priv->required_params, TRUE); @@ -447,9 +421,6 @@ empathy_account_settings_check_readyness (EmpathyAccountSettings *self) } } - if (priv->storage && !priv->attempted_storage_properties) - return; - g_object_ref (priv->manager); priv->ready = TRUE; @@ -485,43 +456,6 @@ empathy_account_settings_managers_ready_cb (GObject *object, empathy_account_settings_check_readyness (settings); } -static void -empathy_account_settings_got_account_storage (TpProxy *account, - GHashTable *properties, - const GError *error, - gpointer user_data, - GObject *object) -{ - EmpathyAccountSettingsPriv *priv = GET_PRIV (object); - - priv->attempted_storage_properties = TRUE; - - if (error != NULL) - { - DEBUG ("Failed to get Account.Iface.Storage properties: %s", - error->message); - return; - } - - /* Note to the unwary, GetAll() does not returned fully-qualified property - * names as is common for Telepathy APIs */ - priv->storage_provider = g_strdup (tp_asv_get_string (properties, - "StorageProvider")); - - if (!EMP_STR_EMPTY (priv->storage_provider)) - { - priv->storage_identifier = tp_g_value_slice_dup ( - tp_asv_lookup (properties, "StorageIdentifier")); - priv->storage_specific_information = g_hash_table_ref ( - tp_asv_get_boxed (properties, "StorageSpecificInformation", - TP_HASH_TYPE_QUALIFIED_PROPERTY_VALUE_MAP)); - priv->storage_restrictions = tp_asv_get_uint32 (properties, - "StorageRestrictions", NULL); - } - - empathy_account_settings_check_readyness (EMPATHY_ACCOUNT_SETTINGS (object)); -} - EmpathyAccountSettings * empathy_account_settings_new (const gchar *connection_manager, const gchar *protocol, @@ -1450,29 +1384,3 @@ empathy_account_settings_get_tp_protocol (EmpathyAccountSettings *self) return tp_connection_manager_get_protocol (priv->manager, priv->protocol); } - -const char * -empathy_account_settings_get_storage_provider (EmpathyAccountSettings *self) -{ - return GET_PRIV (self)->storage_provider; -} - -const GValue * -empathy_account_settings_get_storage_identifier (EmpathyAccountSettings *self) -{ - return GET_PRIV (self)->storage_identifier; -} - -GHashTable * -empathy_account_settings_get_storage_specific_information ( - EmpathyAccountSettings *self) -{ - return GET_PRIV (self)->storage_specific_information; -} - -TpStorageRestrictionFlags -empathy_account_settings_get_storage_restrictions ( - EmpathyAccountSettings *self) -{ - return GET_PRIV (self)->storage_restrictions; -} diff --git a/libempathy/empathy-account-settings.h b/libempathy/empathy-account-settings.h index 1ce3f53c0..d3276e1a5 100644 --- a/libempathy/empathy-account-settings.h +++ b/libempathy/empathy-account-settings.h @@ -181,16 +181,6 @@ gboolean empathy_account_settings_is_valid (EmpathyAccountSettings *settings); const TpConnectionManagerProtocol * empathy_account_settings_get_tp_protocol ( EmpathyAccountSettings *settings); -const gchar *empathy_account_settings_get_storage_provider ( - EmpathyAccountSettings *self); -const GValue *empathy_account_settings_get_storage_identifier ( - EmpathyAccountSettings *self); -GHashTable *empathy_account_settings_get_storage_specific_information ( - EmpathyAccountSettings *self); -TpStorageRestrictionFlags empathy_account_settings_get_storage_restrictions ( - EmpathyAccountSettings *self); - - G_END_DECLS #endif /* #ifndef __EMPATHY_ACCOUNT_SETTINGS_H__*/ -- cgit v1.2.3 From 99651e27bfe1dd1be31db6119f2cbd8686a905d0 Mon Sep 17 00:00:00 2001 From: Danielle Madeley Date: Fri, 8 Oct 2010 13:06:14 +1100 Subject: Access Account.I.Storage properties via TpAccount --- libempathy/empathy-account-settings.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'libempathy') diff --git a/libempathy/empathy-account-settings.c b/libempathy/empathy-account-settings.c index 29ff3f1b7..06e6ccd19 100644 --- a/libempathy/empathy-account-settings.c +++ b/libempathy/empathy-account-settings.c @@ -210,7 +210,12 @@ empathy_account_settings_constructed (GObject *object) if (!priv->ready) { - tp_account_prepare_async (priv->account, NULL, + GQuark features[] = { + TP_ACCOUNT_FEATURE_CORE, + TP_ACCOUNT_FEATURE_STORAGE, + 0 }; + + tp_proxy_prepare_async (priv->account, features, empathy_account_settings_account_ready_cb, self); tp_g_signal_connect_object (priv->managers, "notify::ready", G_CALLBACK (empathy_account_settings_managers_ready_cb), object, 0); @@ -436,7 +441,7 @@ empathy_account_settings_account_ready_cb (GObject *source_object, TpAccount *account = TP_ACCOUNT (source_object); GError *error = NULL; - if (!tp_account_prepare_finish (account, result, &error)) + if (!tp_proxy_prepare_finish (account, result, &error)) { DEBUG ("Failed to prepare account: %s", error->message); g_error_free (error); -- cgit v1.2.3