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 void account_widget_int_changed_cb (GtkWidget *widget, McAccount *account) { const gchar *param_name; gint value; value = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (widget)); param_name = g_object_get_data (G_OBJECT (widget), "param_name"); if (value == 0) { mc_account_unset_param (account, param_name); mc_account_get_param_int (account, param_name, &value); DEBUG ("Unset %s and restore to %d", param_name, value); gtk_spin_button_set_value (GTK_SPIN_BUTTON (widget), value); } else { DEBUG ("Setting %s to %d", param_name, value); mc_account_set_param_int (account, param_name, value); } }