diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2012-08-02 15:48:38 +0200 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2012-08-03 16:13:29 +0200 |
commit | 119351a936be47a235b9fd0d7cce1b73fb8e289e (patch) | |
tree | d4f883dbd8be291d7c6bb133bc26924f9775a0aa /ubuntu-online-accounts/cc-plugins | |
parent | 44982406d7bc6317a7674d21f830ad50ab4f3810 (diff) | |
download | empathy-119351a936be47a235b9fd0d7cce1b73fb8e289e.tar.gz |
Rely on the empathy factory rather than 're-preparing' the AM
tp_account_manager_prepare_all_async() seems to be a bad idea so, instead,
let's just rely the empathy factory and set it as default.
This makes the code much more symetric with empathy-accounts and shouldn't
prepare that much useless features as we are not going to prepare the contact
list anyway.
Diffstat (limited to 'ubuntu-online-accounts/cc-plugins')
4 files changed, 36 insertions, 25 deletions
diff --git a/ubuntu-online-accounts/cc-plugins/app-plugin/empathy-app-plugin-widget.c b/ubuntu-online-accounts/cc-plugins/app-plugin/empathy-app-plugin-widget.c index 04cbd7f41..d52b3a360 100644 --- a/ubuntu-online-accounts/cc-plugins/app-plugin/empathy-app-plugin-widget.c +++ b/ubuntu-online-accounts/cc-plugins/app-plugin/empathy-app-plugin-widget.c @@ -181,7 +181,7 @@ manager_prepared_cb (GObject *source, GList *accounts; GError *error = NULL; - if (!tp_account_manager_prepare_all_finish (manager, result, &error)) + if (!tp_proxy_prepare_finish (manager, result, &error)) { g_debug ("Error preparing Account Manager: %s", error->message); g_clear_error (&error); @@ -226,7 +226,6 @@ empathy_app_plugin_widget_constructed (GObject *object) ((GObjectClass *) empathy_app_plugin_widget_parent_class)->constructed; GtkWidget *top; TpAccountManager *manager; - TpSimpleClientFactory *factory; if (chain_up != NULL) chain_up (object); @@ -241,22 +240,7 @@ empathy_app_plugin_widget_constructed (GObject *object) /* Prepare tp's account manager to find the TpAccount corresponding to our * AgAccount */ manager = tp_account_manager_dup (); - factory = tp_proxy_get_factory (manager); - tp_simple_client_factory_add_account_features_varargs (factory, - TP_ACCOUNT_FEATURE_STORAGE, - TP_ACCOUNT_FEATURE_CONNECTION, - 0); - tp_simple_client_factory_add_connection_features_varargs (factory, - TP_CONNECTION_FEATURE_AVATAR_REQUIREMENTS, - TP_CONNECTION_FEATURE_CONTACT_INFO, - 0); - tp_simple_client_factory_add_contact_features_varargs (factory, - TP_CONTACT_FEATURE_ALIAS, - TP_CONTACT_FEATURE_AVATAR_DATA, - TP_CONTACT_FEATURE_CONTACT_INFO, - TP_CONTACT_FEATURE_INVALID, - 0); - tp_account_manager_prepare_all_async (manager, + tp_proxy_prepare_async (manager, NULL, manager_prepared_cb, g_object_ref (self)); g_object_unref (manager); } diff --git a/ubuntu-online-accounts/cc-plugins/app-plugin/empathy-app-plugin.c b/ubuntu-online-accounts/cc-plugins/app-plugin/empathy-app-plugin.c index 43b86ad96..c15a13a7a 100644 --- a/ubuntu-online-accounts/cc-plugins/app-plugin/empathy-app-plugin.c +++ b/ubuntu-online-accounts/cc-plugins/app-plugin/empathy-app-plugin.c @@ -22,6 +22,8 @@ #include "empathy-app-plugin.h" +#include <libempathy/empathy-client-factory.h> + #include "empathy-app-plugin-widget.h" G_DEFINE_TYPE (EmpathyAppPlugin, empathy_app_plugin, AP_TYPE_APPLICATION_PLUGIN) @@ -60,6 +62,19 @@ empathy_app_plugin_class_init (EmpathyAppPluginClass *klass) static void empathy_app_plugin_init (EmpathyAppPlugin *self) { + if (tp_account_manager_can_set_default ()) + { + EmpathyClientFactory *factory; + TpAccountManager *am; + + factory = empathy_client_factory_dup (); + am = tp_account_manager_new_with_factory ( + TP_SIMPLE_CLIENT_FACTORY (factory)); + tp_account_manager_set_default (am); + + g_object_unref (factory); + g_object_unref (am); + } } GType diff --git a/ubuntu-online-accounts/cc-plugins/empathy-accounts-plugin-widget.c b/ubuntu-online-accounts/cc-plugins/empathy-accounts-plugin-widget.c index a17c13821..8a16904fb 100644 --- a/ubuntu-online-accounts/cc-plugins/empathy-accounts-plugin-widget.c +++ b/ubuntu-online-accounts/cc-plugins/empathy-accounts-plugin-widget.c @@ -289,7 +289,7 @@ manager_prepared_cb (GObject *source, GList *accounts; GError *error = NULL; - if (!tp_account_manager_prepare_all_finish (manager, result, &error)) + if (!tp_proxy_prepare_finish (manager, result, &error)) { g_debug ("Error preparing Account Manager: %s", error->message); g_clear_error (&error); @@ -341,16 +341,12 @@ empathy_accounts_plugin_widget_constructed (GObject *object) if (self->priv->account->id != 0) { TpAccountManager *manager; - TpSimpleClientFactory *factory; /* Prepare tp's account manager to find the TpAccount corresponding to our * AgAccount */ manager = tp_account_manager_dup (); - factory = tp_proxy_get_factory (manager); - tp_simple_client_factory_add_account_features_varargs (factory, - TP_ACCOUNT_FEATURE_STORAGE, - 0); - tp_account_manager_prepare_all_async (manager, + + tp_proxy_prepare_async (manager, NULL, manager_prepared_cb, g_object_ref (self)); g_object_unref (manager); return; diff --git a/ubuntu-online-accounts/cc-plugins/empathy-accounts-plugin.c b/ubuntu-online-accounts/cc-plugins/empathy-accounts-plugin.c index 858ef65e1..7431abc08 100644 --- a/ubuntu-online-accounts/cc-plugins/empathy-accounts-plugin.c +++ b/ubuntu-online-accounts/cc-plugins/empathy-accounts-plugin.c @@ -22,6 +22,8 @@ #include "empathy-accounts-plugin.h" +#include <libempathy/empathy-client-factory.h> + #include "empathy-accounts-plugin-widget.h" G_DEFINE_TYPE (EmpathyAccountsPlugin, empathy_accounts_plugin, AP_TYPE_PLUGIN) @@ -101,6 +103,20 @@ empathy_accounts_plugin_class_init ( static void empathy_accounts_plugin_init (EmpathyAccountsPlugin *self) { + if (tp_account_manager_can_set_default ()) + { + EmpathyClientFactory *factory; + TpAccountManager *am; + + factory = empathy_client_factory_dup (); + am = tp_account_manager_new_with_factory ( + TP_SIMPLE_CLIENT_FACTORY (factory)); + tp_account_manager_set_default (am); + + g_object_unref (factory); + g_object_unref (am); + } + } GType |