/* empathy-account-assistant.c */
-#include <glib/gi18n.h>
+#include <config.h>
+#include <glib/gi18n-lib.h>
#include <telepathy-glib/util.h>
#include <gdk/gdkkeysyms.h>
#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>
-#include <libempathy-gtk/empathy-conf.h>
#define DEBUG_FLAG EMPATHY_DEBUG_ACCOUNT
#include <libempathy/empathy-debug.h>
RESPONSE_CREATE_STOP = 2
} CreateEnterPageResponse;
-enum {
+typedef enum {
PAGE_INTRO = 0,
PAGE_IMPORT = 1,
PAGE_ENTER_CREATE = 2,
PAGE_SALUT = 3,
-};
+} PageID;
enum {
PROP_PARENT = 1,
gboolean enter_create_forward;
TpAccountManager *account_mgr;
EmpathyConnectionManagers *connection_mgrs;
- gint current_page_id;
+ PageID current_page_id;
/* enter or create page */
GtkWidget *enter_or_create_page;
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);
protocol = tp_account_get_protocol (account);
if (!tp_strdiff (protocol, "local-xmpp"))
{
- DEBUG ("Salut account has been created; update gconf key");
-
- empathy_conf_set_bool (empathy_conf_get (),
- EMPATHY_PREFS_SALUT_ACCOUNT_CREATED,
- TRUE);
-
salut_created = TRUE;
}
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;
static void
account_assistant_apply_account_and_finish (EmpathyAccountAssistant *self,
- EmpathyAccountSettings *settings)
+ EmpathyAccountSettings *settings,
+ gboolean set_display_name)
{
EmpathyAccountAssistantPriv *priv = GET_PRIV (self);
- gchar *display_name;
if (settings == NULL)
return;
priv->is_creating = TRUE;
- /* set default display name */
- display_name = empathy_account_widget_get_default_display_name (
- priv->current_widget_object);
+ if (set_display_name)
+ {
+ gchar *display_name;
+
+ display_name = empathy_account_widget_get_default_display_name (
+ priv->current_widget_object);
- empathy_account_settings_set_display_name_async (settings,
- display_name, NULL, NULL);
+ empathy_account_settings_set_display_name_async (settings,
+ display_name, NULL, NULL);
- g_free (display_name);
+ g_free (display_name);
+ }
empathy_account_settings_apply_async (settings,
account_assistant_apply_account_cb, self);
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)
- empathy_account_settings_set_icon_name_async (settings, "im-google-talk",
- NULL, NULL);
- else if (is_facebook)
- empathy_account_settings_set_icon_name_async (settings, "im-facebook",
- NULL, NULL);
-
if (priv->first_resp == RESPONSE_CREATE_ACCOUNT)
empathy_account_settings_set_boolean (settings, "register", TRUE);
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;
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") ||
- !tp_strdiff (protocol->name, "irc"))
+ if (!tp_strdiff (protocol->name, "local-xmpp"))
return FALSE;
return TRUE;
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);
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);
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);
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);
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);
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;
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);
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);
if (current_page == PAGE_SALUT)
{
if (priv->create_salut_account)
- account_assistant_apply_account_and_finish (self, priv->salut_settings);
+ /* create_salut_account_settings() already set the display name of the
+ * account so there is no need to set it again. */
+ account_assistant_apply_account_and_finish (self, priv->salut_settings,
+ FALSE);
return;
}
- else if (current_page == PAGE_ENTER_CREATE &&
+ else if (current_page >= PAGE_ENTER_CREATE &&
priv->settings != NULL &&
empathy_account_settings_is_valid (priv->settings))
{
- account_assistant_apply_account_and_finish (self, priv->settings);
+ account_assistant_apply_account_and_finish (self, priv->settings, TRUE);
+ g_object_unref (priv->settings);
+ priv->settings = NULL;
+ }
+ else if (current_page == PAGE_IMPORT)
+ {
+ empathy_import_widget_add_selected_accounts (priv->iw);
}
}
gint current_idx;
/* check from which page we are coming from */
- switch (priv->current_page_id)
- {
- case PAGE_IMPORT:
- empathy_import_widget_add_selected_accounts (priv->iw);
- break;
- }
+ if (priv->current_page_id == PAGE_IMPORT)
+ empathy_import_widget_add_selected_accounts (priv->iw);
current_idx = gtk_assistant_get_current_page (assistant);
priv->current_page_id = current_idx;
if (priv->settings != NULL &&
empathy_account_settings_is_valid (priv->settings))
{
- account_assistant_apply_account_and_finish (self, priv->settings);
+ account_assistant_apply_account_and_finish (self, priv->settings,
+ TRUE);
g_object_unref (priv->settings);
priv->settings = NULL;
}
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);
- w = gtk_label_new ("");
+ w = gtk_label_new (NULL);
markup = g_strdup_printf ("%s (<span style=\"italic\">%s</span>).",
_("Empathy can automatically discover and chat with the people "
"connected on the same network as you. "
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);
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;
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;
EmpathyAccountAssistantPriv);
self->priv = priv;
+ gtk_window_set_title (GTK_WINDOW (self),
+ _("Messaging and VoIP Accounts Assistant"));
+
priv->account_mgr = tp_account_manager_dup ();
}
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);
if (dialog == NULL)
{
- dialog = g_object_new (EMPATHY_TYPE_ACCOUNT_ASSISTANT,
+ dialog = g_object_new (EMPATHY_TYPE_ACCOUNT_ASSISTANT,
"parent-window", window,
"connection-managers", connection_mgrs,
NULL);