]> git.0d.be Git - empathy.git/blobdiff - src/empathy-account-assistant.c
Move should_create_salut_account to local-xmpp-assistant-widget
[empathy.git] / src / empathy-account-assistant.c
index 0f7bf4d251bc8b6aa22e1031ae54c30c84d71801..00add5ed18e1d82d93781611dacfba848ddb99d8 100644 (file)
@@ -35,6 +35,7 @@
 
 #include <libempathy-gtk/empathy-account-widget.h>
 #include <libempathy-gtk/empathy-protocol-chooser.h>
+#include <libempathy-gtk/empathy-local-xmpp-assistant-widget.h>
 #include <libempathy-gtk/empathy-ui-utils.h>
 
 #define DEBUG_FLAG EMPATHY_DEBUG_ACCOUNT
@@ -119,11 +120,11 @@ build_error_vbox (const gchar *primary_message,
   GtkWidget *main_vbox, *w, *hbox;
   PangoAttrList *list;
 
-  main_vbox = gtk_vbox_new (FALSE, 12);
+  main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
   gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12);
   gtk_widget_show (main_vbox);
 
-  hbox = gtk_hbox_new (FALSE, 12);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
   gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0);
   gtk_widget_show (hbox);
 
@@ -319,7 +320,7 @@ account_assistant_apply_account_cb (GObject *source,
   EmpathyAccountSettings *settings = EMPATHY_ACCOUNT_SETTINGS (source);
   TpAccount *account;
 
-  empathy_account_settings_apply_finish (settings, result, &error);
+  empathy_account_settings_apply_finish (settings, result, NULL, &error);
 
   priv->is_creating = FALSE;
 
@@ -381,63 +382,19 @@ static void
 account_assistant_protocol_changed_cb (GtkComboBox *chooser,
     EmpathyAccountAssistant *self)
 {
-  TpConnectionManager *cm;
-  TpConnectionManagerProtocol *proto;
   EmpathyAccountSettings *settings;
   EmpathyAccountAssistantPriv *priv;
-  char *str;
   GtkWidget *account_widget;
   EmpathyAccountWidget *widget_object = NULL;
-  gboolean is_gtalk, is_facebook;
-  const gchar *name;
 
   priv = GET_PRIV (self);
 
-  cm = empathy_protocol_chooser_dup_selected (
-      EMPATHY_PROTOCOL_CHOOSER (chooser), &proto, &is_gtalk, &is_facebook);
+  settings = empathy_protocol_chooser_create_account_settings (
+      EMPATHY_PROTOCOL_CHOOSER (chooser));
 
-  if (cm == NULL || proto == NULL)
-    /* we are not ready yet */
+  if (settings == NULL)
     return;
 
-  /* Create account */
-  if (is_gtalk)
-    name = "gtalk";
-  else if (is_facebook)
-    name = "facebook";
-  else
-    name = proto->name;
-
-  /* To translator: %s is the protocol name */
-  str = g_strdup_printf (_("New %s account"),
-      empathy_protocol_name_to_display_name (name));
-
-  settings = empathy_account_settings_new (cm->name, proto->name, str);
-
-  if (is_gtalk)
-    {
-      gchar *fallback_servers[] = {
-          "talkx.l.google.com",
-          "talkx.l.google.com:443,oldssl",
-          "talkx.l.google.com:80",
-          NULL};
-
-      empathy_account_settings_set_icon_name_async (settings, "im-google-talk",
-        NULL, NULL);
-
-      empathy_account_settings_set_string (settings, "server", NULL);
-      empathy_account_settings_set_strv (settings, "fallback-servers",
-          fallback_servers);
-    }
-  else if (is_facebook)
-    {
-      empathy_account_settings_set_icon_name_async (settings, "im-facebook",
-        NULL, NULL);
-
-      empathy_account_settings_set_string (settings, "server",
-          "chat.facebook.com");
-    }
-
   if (priv->first_resp == RESPONSE_CREATE_ACCOUNT)
     empathy_account_settings_set_boolean (settings, "register", TRUE);
 
@@ -451,6 +408,8 @@ account_assistant_protocol_changed_cb (GtkComboBox *chooser,
       gtk_widget_destroy (priv->current_account_widget);
     }
 
+  empathy_account_widget_hide_buttons (widget_object);
+
   priv->current_account_widget = account_widget;
   priv->current_widget_object = widget_object;
 
@@ -471,16 +430,13 @@ account_assistant_protocol_changed_cb (GtkComboBox *chooser,
   gtk_box_pack_start (GTK_BOX (priv->enter_or_create_page), account_widget,
       FALSE, FALSE, 0);
   gtk_widget_show (account_widget);
-
-  g_free (str);
 }
 
 static gboolean
 account_assistant_chooser_enter_details_filter_func (
     TpConnectionManager *cm,
     TpConnectionManagerProtocol *protocol,
-    gboolean is_gtalk,
-    gboolean is_facebook,
+    const gchar *service,
     gpointer user_data)
 {
   if (!tp_strdiff (protocol->name, "local-xmpp"))
@@ -493,11 +449,10 @@ static gboolean
 account_assistant_chooser_create_account_filter_func (
     TpConnectionManager *cm,
     TpConnectionManagerProtocol *protocol,
-    gboolean is_gtalk,
-    gboolean is_facebook,
+    const gchar *service,
     gpointer user_data)
 {
-  if (is_gtalk || is_facebook)
+  if (service != NULL)
     return FALSE;
 
   return tp_connection_manager_protocol_can_register (protocol);
@@ -648,11 +603,11 @@ account_assistant_build_introduction_page (EmpathyAccountAssistant *self)
   GdkPixbuf *pix;
   const gchar *str;
 
-  main_vbox = gtk_vbox_new (FALSE, 12);
+  main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
   gtk_widget_show (main_vbox);
   gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12);
 
-  hbox_1 = gtk_hbox_new (FALSE, 12);
+  hbox_1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
   gtk_box_pack_start (GTK_BOX (main_vbox), hbox_1, TRUE, TRUE, 0);
   gtk_widget_show (hbox_1);
 
@@ -686,13 +641,14 @@ account_assistant_build_introduction_page (EmpathyAccountAssistant *self)
   gtk_box_pack_start (GTK_BOX (main_vbox), w, TRUE, TRUE, 0);
   gtk_widget_show (w);
 
-  vbox_1 = gtk_vbox_new (TRUE, 0);
+  vbox_1 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+  gtk_box_set_homogeneous (GTK_BOX (vbox_1), TRUE);
   gtk_container_add (GTK_CONTAINER (w), vbox_1);
   gtk_widget_show (vbox_1);
 
   if (empathy_import_accounts_to_import ())
     {
-      hbox_1 = gtk_hbox_new (FALSE, 0);
+      hbox_1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
       gtk_box_pack_start (GTK_BOX (vbox_1), hbox_1, TRUE, TRUE, 0);
       gtk_widget_show (hbox_1);
 
@@ -703,8 +659,8 @@ account_assistant_build_introduction_page (EmpathyAccountAssistant *self)
           GINT_TO_POINTER (RESPONSE_IMPORT));
       gtk_widget_show (radio);
 
-      w = gtk_combo_box_new_text ();
-      gtk_combo_box_append_text (GTK_COMBO_BOX (w), "Pidgin");
+      w = gtk_combo_box_text_new ();
+      gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (w), "Pidgin");
       gtk_box_pack_start (GTK_BOX (hbox_1), w, TRUE, TRUE, 0);
       gtk_combo_box_set_active (GTK_COMBO_BOX (w), 0);
       gtk_widget_show (w);
@@ -769,20 +725,21 @@ account_assistant_build_import_page (EmpathyAccountAssistant *self)
   EmpathyImportWidget *iw;
   EmpathyAccountAssistantPriv *priv = GET_PRIV (self);
 
-  main_vbox = gtk_vbox_new (FALSE, 12);
+  main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
   gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12);
   w = gtk_label_new (_("Select the accounts you want to import:"));
   gtk_misc_set_alignment (GTK_MISC (w), 0.0, 0.5);
   gtk_widget_show (w);
   gtk_box_pack_start (GTK_BOX (main_vbox), w, FALSE, FALSE, 6);
 
-  w = gtk_alignment_new (0, 0, 0, 0);
+  w = gtk_alignment_new (0, 0, 1, 1);
   gtk_alignment_set_padding (GTK_ALIGNMENT (w), 0, 0, 12, 0);
-  gtk_box_pack_start (GTK_BOX (main_vbox), w, FALSE, FALSE, 0);
+  gtk_box_pack_start (GTK_BOX (main_vbox), w, TRUE, TRUE, 0);
   gtk_widget_show (w);
 
   /* NOTE: this is hardcoded as we support pidgin only */
-  iw = empathy_import_widget_new (EMPATHY_IMPORT_APPLICATION_PIDGIN);
+  iw = empathy_import_widget_new (EMPATHY_IMPORT_APPLICATION_PIDGIN,
+      priv->connection_mgrs);
   import = empathy_import_widget_get_widget (iw);
   gtk_container_add (GTK_CONTAINER (w), import);
   gtk_widget_show (import);
@@ -815,13 +772,16 @@ account_assistant_build_enter_or_create_page (EmpathyAccountAssistant *self)
   EmpathyAccountAssistantPriv *priv = GET_PRIV (self);
   GtkWidget *main_vbox, *w, *chooser, *vbox, *hbox, *radio;
 
-  main_vbox = gtk_vbox_new (FALSE, 12);
+  main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
   gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12);
   gtk_widget_show (main_vbox);
 
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
+  gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0);
+  gtk_widget_show (hbox);
+
   w = gtk_label_new (NULL);
-  gtk_misc_set_alignment (GTK_MISC (w), 0, 0);
-  gtk_box_pack_start (GTK_BOX (main_vbox), w, FALSE, FALSE, 0);
+  gtk_box_pack_start (GTK_BOX (hbox), w, FALSE, FALSE, 0);
   gtk_widget_show (w);
   priv->first_label = w;
 
@@ -831,11 +791,11 @@ account_assistant_build_enter_or_create_page (EmpathyAccountAssistant *self)
   gtk_widget_show (w);
 
   chooser = empathy_protocol_chooser_new ();
-  gtk_container_add (GTK_CONTAINER (w), chooser);
+  gtk_box_pack_start (GTK_BOX (hbox), chooser, FALSE, FALSE, 0);
   gtk_widget_show (chooser);
   priv->chooser = chooser;
 
-  vbox = gtk_vbox_new (FALSE, 6);
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
   gtk_box_pack_end (GTK_BOX (main_vbox), vbox, FALSE, FALSE, 0);
   gtk_widget_show (vbox);
 
@@ -851,7 +811,7 @@ account_assistant_build_enter_or_create_page (EmpathyAccountAssistant *self)
   gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 0);
   gtk_widget_show (w);
 
-  hbox = gtk_hbox_new (FALSE, 6);
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
   gtk_container_add (GTK_CONTAINER (w), hbox);
   gtk_widget_show (hbox);
 
@@ -1117,11 +1077,11 @@ account_assistant_build_salut_page (EmpathyAccountAssistant *self)
   EmpathyAccountWidget *widget_object;
   gchar *markup;
 
-  main_vbox = gtk_vbox_new (FALSE, 12);
+  main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
   gtk_widget_show (main_vbox);
   gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12);
 
-  hbox_1 = gtk_hbox_new (FALSE, 12);
+  hbox_1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
   gtk_box_pack_start (GTK_BOX (main_vbox), hbox_1, TRUE, TRUE, 0);
   gtk_widget_show (hbox_1);
 
@@ -1148,8 +1108,8 @@ account_assistant_build_salut_page (EmpathyAccountAssistant *self)
 
   g_object_unref (pix);
 
-  w = gtk_check_button_new_with_label (
-      _("I don't want to enable this feature for now"));
+  w = gtk_check_button_new_with_mnemonic (
+      _("I do _not want to enable this feature for now"));
   gtk_box_pack_start (GTK_BOX (main_vbox), w, FALSE, FALSE, 0);
   g_signal_connect (w, "toggled",
       G_CALLBACK (create_salut_check_box_toggled_cb), self);
@@ -1163,6 +1123,8 @@ account_assistant_build_salut_page (EmpathyAccountAssistant *self)
   settings = create_salut_account_settings ();
 
   widget_object = empathy_account_widget_new_for_protocol (settings, TRUE);
+  empathy_account_widget_hide_buttons (widget_object);
+
   account_widget = empathy_account_widget_get_widget (widget_object);
 
   priv->salut_settings = settings;
@@ -1206,14 +1168,14 @@ account_mgr_prepare_cb (GObject *source_object,
   TpAccountManager *manager = TP_ACCOUNT_MANAGER (source_object);
   GError *error = NULL;
 
-  if (!tp_account_manager_prepare_finish (manager, result, &error))
+  if (!tp_proxy_prepare_finish (manager, result, &error))
     {
       DEBUG ("Failed to prepare account manager: %s", error->message);
       g_error_free (error);
       return;
     }
 
-  if (!should_create_salut_account (manager))
+  if (!empathy_local_xmpp_assistant_widget_should_create_account (manager))
     {
       DEBUG ("No need to create a Salut account");
       priv->display_salut_page = FALSE;
@@ -1322,7 +1284,7 @@ do_constructed (GObject *object)
   priv->salut_page = page;
   priv->display_salut_page = TRUE;
 
-  tp_account_manager_prepare_async (priv->account_mgr, NULL,
+  tp_proxy_prepare_async (priv->account_mgr, NULL,
       account_mgr_prepare_cb, self);
 
   gtk_window_set_resizable (GTK_WINDOW (self), FALSE);