]> git.0d.be Git - empathy.git/commitdiff
Remove the hardcode
authorArnaud Maillet <arnaud.maillet@collabora.co.uk>
Tue, 28 Jul 2009 13:07:53 +0000 (15:07 +0200)
committerSjoerd Simons <sjoerd.simons@collabora.co.uk>
Sat, 22 Aug 2009 13:23:02 +0000 (14:23 +0100)
src/empathy-accounts-dialog.c

index 391c42b6d1851bd5d24f2df8a48491d77df2a202..3532e97f47e19780cafd84976a6dd9a005f104c9 100644 (file)
@@ -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);
 }