static void account_assistant_finish_enter_or_create_page (EmpathyAccountAssistant *self, gboolean is_enter) { EmpathyAccountAssistantPriv *priv = GET_PRIV (self); if (is_enter) { gtk_label_set_label (GTK_LABEL (priv->first_label), _("What kind of chat account do you have?")); /* gtk_label_set_label (GTK_LABEL (priv->second_label), _("If you have other accounts to set up, you can do " "that at any time from the Edit menu.")); */ gtk_label_set_label (GTK_LABEL (priv->second_label), _("Do you have any other chat accounts you want to set up?")); empathy_protocol_chooser_set_visible ( EMPATHY_PROTOCOL_CHOOSER (priv->chooser), account_assistant_chooser_enter_details_filter_func, self); gtk_assistant_set_page_title (GTK_ASSISTANT (self), priv->enter_or_create_page, _("Enter your account details")); } else { gtk_label_set_label (GTK_LABEL (priv->first_label), _("What kind of chat account do you want to create?")); /* gtk_label_set_label (GTK_LABEL (priv->second_label), _("You can register other accounts, or setup " "an existing one at any time from the Edit menu.")); */ gtk_label_set_label (GTK_LABEL (priv->second_label), _("Do you want to create other chat accounts?")); empathy_protocol_chooser_set_visible ( EMPATHY_PROTOCOL_CHOOSER (priv->chooser), account_assistant_chooser_create_account_filter_func, self); gtk_assistant_set_page_title (GTK_ASSISTANT (self), priv->enter_or_create_page, _("Enter the details for the new account")); } g_signal_connect (priv->chooser, "changed", G_CALLBACK (account_assistant_protocol_changed_cb), self); /* trigger show the first account widget */ account_assistant_protocol_changed_cb (GTK_COMBO_BOX (priv->chooser), self); }
static void protocol_chooser_dispose (GObject *object) { EmpathyProtocolChooser *protocol_chooser = EMPATHY_PROTOCOL_CHOOSER (object); EmpathyProtocolChooserPriv *priv = GET_PRIV (protocol_chooser); if (priv->dispose_run) return; priv->dispose_run = TRUE; if (priv->store) { g_object_unref (priv->store); priv->store = NULL; } if (priv->cms) { g_object_unref (priv->cms); priv->cms = NULL; } (G_OBJECT_CLASS (empathy_protocol_chooser_parent_class)->dispose) (object); }
static void protocol_chooser_finalize (GObject *object) { EmpathyProtocolChooser *protocol_chooser = EMPATHY_PROTOCOL_CHOOSER (object); EmpathyProtocolChooserPriv *priv = GET_PRIV (protocol_chooser); if (priv->protocols) { g_hash_table_destroy (priv->protocols); priv->protocols = NULL; } (G_OBJECT_CLASS (empathy_protocol_chooser_parent_class)->finalize) (object); }
static void protocol_chooser_constructed (GObject *object) { EmpathyProtocolChooser *protocol_chooser; EmpathyProtocolChooserPriv *priv; GtkCellRenderer *renderer; priv = GET_PRIV (object); protocol_chooser = EMPATHY_PROTOCOL_CHOOSER (object); /* set up combo box with new store */ priv->store = gtk_list_store_new (COL_COUNT, G_TYPE_STRING, /* Icon name */ G_TYPE_STRING, /* Label */ G_TYPE_OBJECT, /* CM */ G_TYPE_STRING, /* protocol name */ G_TYPE_STRING); /* service */ /* Set the protocol sort function */ gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (priv->store), COL_PROTOCOL_NAME, protocol_chooser_sort_func, NULL, NULL); gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (priv->store), COL_PROTOCOL_NAME, GTK_SORT_ASCENDING); gtk_combo_box_set_model (GTK_COMBO_BOX (object), GTK_TREE_MODEL (priv->store)); renderer = gtk_cell_renderer_pixbuf_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (object), renderer, FALSE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (object), renderer, "icon-name", COL_ICON, NULL); g_object_set (renderer, "stock-size", GTK_ICON_SIZE_BUTTON, NULL); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (object), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (object), renderer, "text", COL_LABEL, NULL); empathy_connection_managers_prepare_async (priv->cms, protocol_chooser_cms_prepare_cb, protocol_chooser); if (G_OBJECT_CLASS (empathy_protocol_chooser_parent_class)->constructed) G_OBJECT_CLASS (empathy_protocol_chooser_parent_class)->constructed (object); }
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); }