static void update_server_params (EmpathyAccountWidgetIrc *settings) { GtkTreeIter iter; GtkTreeModel *model; EmpathyIrcNetwork *network; GSList *servers; gchar *charset; if (!gtk_combo_box_get_active_iter ( GTK_COMBO_BOX (settings->combobox_network), &iter)) { unset_server_params (settings); return; } model = gtk_combo_box_get_model (GTK_COMBO_BOX (settings->combobox_network)); gtk_tree_model_get (model, &iter, COL_NETWORK_OBJ, &network, -1); g_assert (network != NULL); g_object_get (network, "charset", &charset, NULL); DEBUG ("Setting charset to %s", charset); mc_account_set_param_string (settings->account, "charset", charset); g_free (charset); servers = empathy_irc_network_get_servers (network); if (g_slist_length (servers) > 0) { /* set the first server as CM server */ EmpathyIrcServer *server = servers->data; gchar *address; guint port; gboolean ssl; g_object_get (server, "address", &address, "port", &port, "ssl", &ssl, NULL); DEBUG ("Setting server to %s", address); mc_account_set_param_string (settings->account, "server", address); DEBUG ("Setting port to %u", port); mc_account_set_param_int (settings->account, "port", port); DEBUG ("Setting use-ssl to %s", ssl ? "TRUE": "FALSE" ); mc_account_set_param_boolean (settings->account, "use-ssl", ssl); g_free (address); } else { /* No server. Unset values */ unset_server_params (settings); } g_slist_foreach (servers, (GFunc) g_object_unref, NULL); g_slist_free (servers); g_object_unref (network); }
static void import_dialog_add_account (EmpathyImportAccountData *data) { McAccount *account; GHashTableIter iter; gpointer key, value; gchar *display_name; GValue *username; account = mc_account_create (data->profile); g_hash_table_iter_init (&iter, data->settings); while (g_hash_table_iter_next (&iter, &key, &value)) { const gchar *param = key; GValue *gvalue = value; switch (G_VALUE_TYPE (gvalue)) { case G_TYPE_STRING: DEBUG ("Set param '%s' to '%s' (string)", param, g_value_get_string (gvalue)); mc_account_set_param_string (account, param, g_value_get_string (gvalue)); break; case G_TYPE_BOOLEAN: DEBUG ("Set param '%s' to %s (boolean)", param, g_value_get_boolean (gvalue) ? "TRUE" : "FALSE"); mc_account_set_param_boolean (account, param, g_value_get_boolean (gvalue)); break; case G_TYPE_INT: DEBUG ("Set param '%s' to '%i' (integer)", param, g_value_get_int (gvalue)); mc_account_set_param_int (account, param, g_value_get_int (gvalue)); break; } } /* Set the display name of the account */ username = g_hash_table_lookup (data->settings, "account"); display_name = g_strdup_printf ("%s (%s)", mc_profile_get_display_name (data->profile), g_value_get_string (username)); mc_account_set_display_name (account, display_name); g_free (display_name); g_object_unref (account); }
static gboolean account_widget_entry_focus_cb (GtkWidget *widget, GdkEventFocus *event, McAccount *account) { const gchar *str; const gchar *param_name; str = gtk_entry_get_text (GTK_ENTRY (widget)); param_name = g_object_get_data (G_OBJECT (widget), "param_name"); if (EMP_STR_EMPTY (str)) { gchar *value = NULL; mc_account_unset_param (account, param_name); mc_account_get_param_string (account, param_name, &value); DEBUG ("Unset %s and restore to %s", param_name, value); gtk_entry_set_text (GTK_ENTRY (widget), value ? value : ""); g_free (value); } else { McProfile *profile; const gchar *domain = NULL; gchar *dup_str = NULL; profile = mc_account_get_profile (account); if (mc_profile_get_capabilities (profile) & MC_PROFILE_CAPABILITY_SPLIT_ACCOUNT) { domain = mc_profile_get_default_account_domain (profile); } if (domain && !strstr (str, "@") && strcmp (param_name, "account") == 0) { DEBUG ("Adding @%s suffix to account", domain); str = dup_str = g_strconcat (str, "@", domain, NULL); gtk_entry_set_text (GTK_ENTRY (widget), str); } DEBUG ("Setting %s to %s", param_name, strstr (param_name, "password") ? "***" : str); mc_account_set_param_string (account, param_name, str); g_free (dup_str); g_object_unref (profile); } return FALSE; }
static void create_salut_account (void) { McProfile *profile; McProtocol *protocol; gboolean salut_created = FALSE; McAccount *account; GList *accounts; EBook *book; EContact *contact; gchar *nickname = NULL; gchar *first_name = NULL; gchar *last_name = NULL; gchar *email = NULL; gchar *jid = NULL; GError *error = NULL; /* Check if we already created a salut account */ empathy_conf_get_bool (empathy_conf_get(), EMPATHY_PREFS_SALUT_ACCOUNT_CREATED, &salut_created); if (salut_created) { return; } DEBUG ("Try to add a salut account..."); /* Check if the salut CM is installed */ profile = mc_profile_lookup ("salut"); if (!profile) { DEBUG ("No salut profile"); return; } protocol = mc_profile_get_protocol (profile); if (!protocol) { DEBUG ("Salut not installed"); g_object_unref (profile); return; } g_object_unref (protocol); /* 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); g_object_unref (profile); return; } empathy_conf_set_bool (empathy_conf_get (), EMPATHY_PREFS_SALUT_ACCOUNT_CREATED, TRUE); /* Check if there is already a salut account */ accounts = mc_accounts_list_by_profile (profile); if (accounts) { DEBUG ("There is already a salut account"); mc_accounts_list_free (accounts); g_object_unref (profile); return; } account = mc_account_create (profile); mc_account_set_display_name (account, _("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); mc_account_set_param_string (account, "nickname", nickname ? nickname : ""); mc_account_set_param_string (account, "first-name", first_name ? first_name : ""); mc_account_set_param_string (account, "last-name", last_name ? last_name : ""); mc_account_set_param_string (account, "email", email ? email : ""); mc_account_set_param_string (account, "jid", jid ? jid : ""); g_free (nickname); g_free (first_name); g_free (last_name); g_free (email); g_free (jid); g_object_unref (account); g_object_unref (profile); g_object_unref (contact); g_object_unref (book); }
static void account_widget_irc_setup (EmpathyAccountWidgetIrc *settings) { gchar *nick = NULL; gchar *fullname = NULL; gchar *server = NULL; gint port = 6667; gchar *charset; gboolean ssl = FALSE; EmpathyIrcNetwork *network = NULL; mc_account_get_param_string (settings->account, "account", &nick); mc_account_get_param_string (settings->account, "fullname", &fullname); mc_account_get_param_string (settings->account, "server", &server); mc_account_get_param_string (settings->account, "charset", &charset); mc_account_get_param_int (settings->account, "port", &port); mc_account_get_param_boolean (settings->account, "use-ssl", &ssl); if (!nick) { nick = g_strdup (g_get_user_name ()); mc_account_set_param_string (settings->account, "account", nick); } if (!fullname) { fullname = g_strdup (g_get_real_name ()); if (!fullname) { fullname = g_strdup (nick); } mc_account_set_param_string (settings->account, "fullname", fullname); } if (server != NULL) { GtkListStore *store; network = empathy_irc_network_manager_find_network_by_address ( settings->network_manager, server); store = GTK_LIST_STORE (gtk_combo_box_get_model ( GTK_COMBO_BOX (settings->combobox_network))); if (network != NULL) { gchar *name; g_object_set (network, "charset", charset, NULL); g_object_get (network, "name", &name, NULL); DEBUG ("Account use network %s", name); g_free (name); } else { /* We don't have this network. Let's create it */ EmpathyIrcServer *srv; GtkTreeIter iter; DEBUG ("Create a network %s", server); network = empathy_irc_network_new (server); srv = empathy_irc_server_new (server, port, ssl); empathy_irc_network_append_server (network, srv); empathy_irc_network_manager_add (settings->network_manager, network); gtk_list_store_insert_with_values (store, &iter, -1, COL_NETWORK_OBJ, network, COL_NETWORK_NAME, server, -1); gtk_combo_box_set_active_iter ( GTK_COMBO_BOX (settings->combobox_network), &iter); g_object_unref (srv); g_object_unref (network); } } fill_networks_model (settings, network); g_free (nick); g_free (fullname); g_free (server); g_free (charset); }