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; priv = GET_PRIV (self); cm = empathy_protocol_chooser_dup_selected ( EMPATHY_PROTOCOL_CHOOSER (chooser), &proto, &is_gtalk); if (cm == NULL || proto == NULL) /* we are not ready yet */ return; /* Create account */ /* To translator: %s is the protocol name */ str = g_strdup_printf (_("New %s account"), empathy_protocol_name_to_display_name ( is_gtalk ? "gtalk" : proto->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); if (priv->first_resp == RESPONSE_CREATE_ACCOUNT) empathy_account_settings_set_boolean (settings, "register", TRUE); widget_object = empathy_account_widget_new_for_protocol (settings, TRUE); account_widget = empathy_account_widget_get_widget (widget_object); if (priv->current_account_widget != NULL) { g_signal_handlers_disconnect_by_func (priv->current_widget_object, account_assistant_handle_apply_cb, self); gtk_widget_destroy (priv->current_account_widget); } priv->current_account_widget = account_widget; priv->current_widget_object = widget_object; if (priv->settings != NULL) g_object_unref (priv->settings); priv->settings = settings; g_signal_connect (priv->current_widget_object, "handle-apply", G_CALLBACK (account_assistant_handle_apply_cb), self); 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 void protocol_changed_cb (GtkComboBox *chooser, EmpathyNewAccountDialog *self) { EmpathyAccountSettings *settings; GtkWidget *account_widget; EmpathyAccountWidget *widget_object; gchar *password = NULL, *account = NULL; settings = empathy_protocol_chooser_create_account_settings ( EMPATHY_PROTOCOL_CHOOSER (chooser)); if (settings == NULL) return; /* Save "account" and "password" parameters */ if (self->priv->settings != NULL) { account = g_strdup (empathy_account_settings_get_string ( self->priv->settings, "account")); password = g_strdup (empathy_account_settings_get_string ( self->priv->settings, "password")); g_object_unref (self->priv->settings); } widget_object = empathy_account_widget_new_for_protocol (settings, TRUE); account_widget = empathy_account_widget_get_widget (widget_object); if (self->priv->current_account_widget != NULL) { g_signal_handlers_disconnect_by_func (self->priv->current_widget_object, account_created_cb, self); g_signal_handlers_disconnect_by_func (self->priv->current_widget_object, cancelled_cb, self); gtk_widget_destroy (self->priv->current_account_widget); } self->priv->current_account_widget = account_widget; self->priv->current_widget_object = widget_object; self->priv->settings = settings; g_signal_connect (self->priv->current_widget_object, "account-created", G_CALLBACK (account_created_cb), self); g_signal_connect (self->priv->current_widget_object, "cancelled", G_CALLBACK (cancelled_cb), self); /* Restore "account" and "password" parameters in the new widget */ if (account != NULL) { empathy_account_widget_set_account_param (widget_object, account); g_free (account); } if (password != NULL) { empathy_account_widget_set_password_param (widget_object, password); g_free (password); } gtk_box_pack_start (GTK_BOX (self->priv->main_vbox), account_widget, FALSE, FALSE, 0); gtk_widget_show (account_widget); }