EmpathyAccountSettings * empathy_protocol_chooser_create_account_settings (EmpathyProtocolChooser *self) { EmpathyAccountSettings *settings; gchar *str; const gchar *display_name; TpConnectionManager *cm; TpConnectionManagerProtocol *proto; gchar *service; cm = empathy_protocol_chooser_dup_selected (self, &proto, &service); if (cm == NULL || proto == NULL) return NULL; if (service != NULL) display_name = empathy_service_name_to_display_name (service); else display_name = empathy_protocol_name_to_display_name (proto->name); /* Create account */ /* To translator: %s is the name of the protocol, such as "Google Talk" or * "Yahoo!" */ str = g_strdup_printf (_("New %s account"), display_name); settings = empathy_account_settings_new (cm->name, proto->name, service, str); g_free (str); if (!tp_strdiff (service, "google-talk")) { 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_strv (settings, "fallback-servers", fallback_servers); } else if (!tp_strdiff (service, "facebook")) { empathy_account_settings_set_icon_name_async (settings, "im-facebook", NULL, NULL); empathy_account_settings_set_string (settings, "server", "chat.facebook.com"); } g_object_unref (cm); g_free (service); return settings; }
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 create_salut_account_am_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { TpAccountManager *account_manager = TP_ACCOUNT_MANAGER (source_object); EmpathyConnectionManagers *managers = user_data; EmpathyAccountSettings *settings; TpConnectionManager *manager; const TpConnectionManagerProtocol *protocol; EBook *book; EContact *contact; gchar *nickname = NULL; gchar *first_name = NULL; gchar *last_name = NULL; gchar *email = NULL; gchar *jid = NULL; GError *error = NULL; if (!tp_account_manager_prepare_finish (account_manager, result, &error)) { DEBUG ("Failed to prepare account manager: %s", error->message); g_error_free (error); goto out; } if (!should_create_salut_account (account_manager)) goto out; manager = empathy_connection_managers_get_cm (managers, "salut"); if (manager == NULL) { DEBUG ("Salut not installed, not making a salut account"); goto out; } protocol = tp_connection_manager_get_protocol (manager, "local-xmpp"); if (protocol == NULL) { DEBUG ("Salut doesn't support local-xmpp!!"); goto out; } DEBUG ("Trying to add a salut account..."); /* Get self EContact from EDS */ if (!e_book_get_self (&contact, &book, &error)) { DEBUG ("Failed to get self econtact: %s", error ? error->message : "No error given"); g_clear_error (&error); goto out; } settings = empathy_account_settings_new ("salut", "local-xmpp", _("People nearby")); nickname = e_contact_get (contact, E_CONTACT_NICKNAME); first_name = e_contact_get (contact, E_CONTACT_GIVEN_NAME); last_name = e_contact_get (contact, E_CONTACT_FAMILY_NAME); email = e_contact_get (contact, E_CONTACT_EMAIL_1); jid = e_contact_get (contact, E_CONTACT_IM_JABBER_HOME_1); if (!tp_strdiff (nickname, "nickname")) { g_free (nickname); nickname = NULL; } DEBUG ("Salut account created:\nnickname=%s\nfirst-name=%s\n" "last-name=%s\nemail=%s\njid=%s\n", nickname, first_name, last_name, email, jid); empathy_account_settings_set_string (settings, "nickname", nickname ? nickname : ""); empathy_account_settings_set_string (settings, "first-name", first_name ? first_name : ""); empathy_account_settings_set_string (settings, "last-name", last_name ? last_name : ""); empathy_account_settings_set_string (settings, "email", email ? email : ""); empathy_account_settings_set_string (settings, "jid", jid ? jid : ""); empathy_account_settings_apply_async (settings, salut_account_created, NULL); g_free (nickname); g_free (first_name); g_free (last_name); g_free (email); g_free (jid); g_object_unref (settings); g_object_unref (contact); g_object_unref (book); out: g_object_unref (managers); }
EmpathyAccountSettings * empathy_protocol_chooser_create_account_settings (EmpathyProtocolChooser *self) { EmpathyAccountSettings *settings = NULL; gchar *str; const gchar *display_name; TpConnectionManager *cm; TpConnectionManagerProtocol *proto; gchar *service = NULL; cm = empathy_protocol_chooser_dup_selected (self, &proto, &service); if (cm == NULL || proto == NULL) goto out; if (service != NULL) display_name = empathy_service_name_to_display_name (service); else display_name = empathy_protocol_name_to_display_name (proto->name); /* Create account */ /* To translator: %s is the name of the protocol, such as "Google Talk" or * "Yahoo!" */ str = g_strdup_printf (_("New %s account"), display_name); settings = empathy_account_settings_new (cm->name, proto->name, service, str); g_free (str); if (!tp_strdiff (service, "google-talk")) { gchar *fallback_servers[] = { "talkx.l.google.com", "talkx.l.google.com:443,oldssl", "talkx.l.google.com:80", NULL}; gchar *extra_certificate_identities[] = { "talk.google.com", NULL}; empathy_account_settings_set_icon_name_async (settings, "im-google-talk", NULL, NULL); empathy_account_settings_set_string (settings, "server", extra_certificate_identities[0]); empathy_account_settings_set_boolean (settings, "require-encryption", TRUE); empathy_account_settings_set_strv (settings, "fallback-servers", fallback_servers); if (empathy_account_settings_have_tp_param (settings, "extra-certificate-identities")) { empathy_account_settings_set_strv (settings, "extra-certificate-identities", extra_certificate_identities); } } else if (!tp_strdiff (service, "facebook")) { empathy_account_settings_set_icon_name_async (settings, "im-facebook", NULL, NULL); empathy_account_settings_set_boolean (settings, "require-encryption", TRUE); empathy_account_settings_set_string (settings, "server", "chat.facebook.com"); } out: tp_clear_object (&cm); g_free (service); return settings; }