diff options
Diffstat (limited to 'libempathy')
-rw-r--r-- | libempathy/empathy-account-manager.c | 42 | ||||
-rw-r--r-- | libempathy/empathy-account-manager.h | 8 |
2 files changed, 48 insertions, 2 deletions
diff --git a/libempathy/empathy-account-manager.c b/libempathy/empathy-account-manager.c index fd8a21b1d..0d09ec5f0 100644 --- a/libempathy/empathy-account-manager.c +++ b/libempathy/empathy-account-manager.c @@ -22,6 +22,7 @@ #include "config.h" #include <libmissioncontrol/mc-account-monitor.h> +#include <telepathy-glib/util.h> #include "empathy-account-manager.h" #include "empathy-account-priv.h" @@ -582,7 +583,7 @@ empathy_account_manager_dup_singleton (void) } EmpathyAccount * -empathy_account_manager_create (EmpathyAccountManager *manager, +empathy_account_manager_create_by_profile (EmpathyAccountManager *manager, McProfile *profile) { McAccount *mc_account = mc_account_create (profile); @@ -591,6 +592,45 @@ empathy_account_manager_create (EmpathyAccountManager *manager, mc_account)); } +EmpathyAccount * +empathy_account_manager_create (EmpathyAccountManager *manager, + const gchar *connection_manager, + const gchar *protocol, + const gchar *display_name) +{ + McProfile *profile; + gboolean found; + GList *profiles, *l; + EmpathyAccount *result = NULL; + + profiles = mc_profiles_list_by_protocol (protocol); + + for (l = profiles; l != NULL; l = g_list_next (l)) { + McProtocol *protocol; + McManager *cm; + + profile = MC_PROFILE (l->data); + + protocol = mc_profile_get_protocol (profile); + cm = mc_protocol_get_manager (protocol); + found = !tp_strdiff (mc_manager_get_unique_name (cm), + connection_manager); + + g_object_unref (protocol); + g_object_unref (manager); + + if (found) { + result = empathy_account_manager_create_by_profile (manager, profile); + empathy_account_set_display_name (result, display_name); + break; + } + } + + mc_profiles_free_list (profiles); + + return result; +} + int empathy_account_manager_get_connected_accounts (EmpathyAccountManager *manager) { diff --git a/libempathy/empathy-account-manager.h b/libempathy/empathy-account-manager.h index b04571ff8..2d77610fb 100644 --- a/libempathy/empathy-account-manager.h +++ b/libempathy/empathy-account-manager.h @@ -52,7 +52,13 @@ GType empathy_account_manager_get_type (void); /* public methods */ EmpathyAccountManager * empathy_account_manager_dup_singleton (void); -EmpathyAccount * empathy_account_manager_create +EmpathyAccount * empathy_account_manager_create ( + EmpathyAccountManager *manager, + const gchar *connection_manager, + const gchar *protocol, + const gchar *display_name); + +EmpathyAccount * empathy_account_manager_create_by_profile (EmpathyAccountManager *manager, McProfile *profile); int empathy_account_manager_get_connected_accounts |