aboutsummaryrefslogtreecommitdiffstats
path: root/src/empathy-accounts-dialog.c
diff options
context:
space:
mode:
authorArnaud Maillet <arnaud.maillet@collabora.co.uk>2009-07-28 21:07:53 +0800
committerSjoerd Simons <sjoerd.simons@collabora.co.uk>2009-08-22 21:23:02 +0800
commit1ca4a9ee58260df26a03bc6565867b7958333f4c (patch)
treeb4e32dd9e63cdc607530d05cd5ee7d5c170ae106 /src/empathy-accounts-dialog.c
parentb047c404615a4137ced83c40d214f1092fbc733b (diff)
downloadgsoc2013-empathy-1ca4a9ee58260df26a03bc6565867b7958333f4c.tar
gsoc2013-empathy-1ca4a9ee58260df26a03bc6565867b7958333f4c.tar.gz
gsoc2013-empathy-1ca4a9ee58260df26a03bc6565867b7958333f4c.tar.bz2
gsoc2013-empathy-1ca4a9ee58260df26a03bc6565867b7958333f4c.tar.lz
gsoc2013-empathy-1ca4a9ee58260df26a03bc6565867b7958333f4c.tar.xz
gsoc2013-empathy-1ca4a9ee58260df26a03bc6565867b7958333f4c.tar.zst
gsoc2013-empathy-1ca4a9ee58260df26a03bc6565867b7958333f4c.zip
Remove the hardcode
Diffstat (limited to 'src/empathy-accounts-dialog.c')
-rw-r--r--src/empathy-accounts-dialog.c36
1 files changed, 13 insertions, 23 deletions
diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c
index 391c42b6d..3532e97f4 100644
--- a/src/empathy-accounts-dialog.c
+++ b/src/empathy-accounts-dialog.c
@@ -134,34 +134,24 @@ accounts_dialog_update_name_label (EmpathyAccountsDialog *dialog,
static GtkWidget *
get_account_setup_widget (EmpathyAccountSettings *settings)
{
- const gchar *cm = empathy_account_settings_get_cm (settings);
const gchar *proto = empathy_account_settings_get_protocol (settings);
+ EmpathyConnectionManagers *cm =
+ empathy_connection_managers_dup_singleton ();
+ GList *cms = empathy_connection_managers_get_cms (cm);
+ GList *l;
- struct {
- const gchar *cm;
- const gchar *proto;
- } dialogs[] = {
- { "gabble", "jabber" },
- { "butterfly", "msn" },
- { "salut", "local-xmpp" },
- { "idle", "irc" },
- { "haze", "icq" },
- { "haze", "aim" },
- { "haze", "yahoo" },
- { "haze", "groupwise" },
- { "sofiasip", "sip" },
- { NULL, NULL }
- };
- int i;
-
- for (i = 0; dialogs[i].cm != NULL; i++)
+ for (l = cms; l; l = l->next)
{
- if (!tp_strdiff (cm, dialogs[i].cm)
- && !tp_strdiff (proto, dialogs[i].proto))
- return empathy_account_widget_new_for_protocol (dialogs[i].proto,
- settings);
+ TpConnectionManager *tp_cm = l->data;
+ if (tp_connection_manager_has_protocol (tp_cm, proto))
+ {
+ g_object_unref (cm);
+ return empathy_account_widget_new_for_protocol
+ (proto, settings);
+ }
}
+ g_object_unref (cm);
return empathy_account_widget_new_for_protocol ("generic", settings);
}