diff options
author | Guillaume Desmottes <gdesmott@gnome.org> | 2008-02-08 10:41:35 +0800 |
---|---|---|
committer | Guillaume Desmottes <gdesmott@gnome.org> | 2008-02-08 10:41:35 +0800 |
commit | 9d6ed2d778c6759d2368079291deadbbd669a666 (patch) | |
tree | 9247970956da20bf43a79038a2fe072a3378b651 /libempathy-gtk | |
parent | dfd79158f96071d135526a9e2d5b530483b57c3f (diff) | |
download | gsoc2013-empathy-9d6ed2d778c6759d2368079291deadbbd669a666.tar gsoc2013-empathy-9d6ed2d778c6759d2368079291deadbbd669a666.tar.gz gsoc2013-empathy-9d6ed2d778c6759d2368079291deadbbd669a666.tar.bz2 gsoc2013-empathy-9d6ed2d778c6759d2368079291deadbbd669a666.tar.lz gsoc2013-empathy-9d6ed2d778c6759d2368079291deadbbd669a666.tar.xz gsoc2013-empathy-9d6ed2d778c6759d2368079291deadbbd669a666.tar.zst gsoc2013-empathy-9d6ed2d778c6759d2368079291deadbbd669a666.zip |
factor out server params setting
Diffstat (limited to 'libempathy-gtk')
-rw-r--r-- | libempathy-gtk/empathy-account-widget-irc.c | 135 |
1 files changed, 54 insertions, 81 deletions
diff --git a/libempathy-gtk/empathy-account-widget-irc.c b/libempathy-gtk/empathy-account-widget-irc.c index 13295190a..96b8879df 100644 --- a/libempathy-gtk/empathy-account-widget-irc.c +++ b/libempathy-gtk/empathy-account-widget-irc.c @@ -125,45 +125,43 @@ account_widget_irc_destroy_cb (GtkWidget *widget, } static void -irc_network_dialog_destroy_cb (GtkWidget *widget, - EmpathyAccountWidgetIrc *settings) +unset_server_params (EmpathyAccountWidgetIrc *settings) +{ + empathy_debug (DEBUG_DOMAIN, "Unset server, port and use-ssl"); + mc_account_unset_param (settings->account, "server"); + mc_account_unset_param (settings->account, "port"); + mc_account_unset_param (settings->account, "use-ssl"); +} + +static void +update_server_params (EmpathyAccountWidgetIrc *settings) { GtkTreeIter iter; GtkTreeModel *model; EmpathyIrcNetwork *network; - gchar *name; GSList *servers; - /* name could be changed */ - gtk_combo_box_get_active_iter (GTK_COMBO_BOX (settings->combobox_network), - &iter); + 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_object_get (network, "name", &name, NULL); - gtk_list_store_set (GTK_LIST_STORE (model), &iter, - COL_NETWORK_NAME, name, -1); + g_assert (network != NULL); - /* TODO: update charset */ servers = empathy_irc_network_get_servers (network); - if (servers == NULL) - { - /* Unset all values */ - empathy_debug (DEBUG_DOMAIN, "Unset server, port and ssl"); - mc_account_unset_param (settings->account, "server"); - mc_account_unset_param (settings->account, "port"); - mc_account_unset_param (settings->account, "ssl"); - } - else + if (g_slist_length (servers) > 0) { - EmpathyIrcServer *server; + /* set the first server as CM server */ + EmpathyIrcServer *server = servers->data; gchar *address; guint port; gboolean ssl; - /* Take the first server on the list */ - server = servers->data; - g_object_get (server, "address", &address, "port", &port, @@ -174,16 +172,46 @@ irc_network_dialog_destroy_cb (GtkWidget *widget, mc_account_set_param_string (settings->account, "server", address); empathy_debug (DEBUG_DOMAIN, "Setting port to %u", port); mc_account_set_param_int (settings->account, "port", port); - empathy_debug (DEBUG_DOMAIN, "Setting ssl to %s", ssl ? "TRUE": "FALSE" ); + empathy_debug (DEBUG_DOMAIN, "Setting use-ssl to %s", + ssl ? "TRUE": "FALSE" ); mc_account_set_param_boolean (settings->account, "use-ssl", ssl); + /* TODO: charset */ 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 +irc_network_dialog_destroy_cb (GtkWidget *widget, + EmpathyAccountWidgetIrc *settings) +{ + GtkTreeIter iter; + GtkTreeModel *model; + EmpathyIrcNetwork *network; + gchar *name; + + /* name could be changed */ + gtk_combo_box_get_active_iter (GTK_COMBO_BOX (settings->combobox_network), + &iter); + model = gtk_combo_box_get_model (GTK_COMBO_BOX (settings->combobox_network)); + gtk_tree_model_get (model, &iter, COL_NETWORK_OBJ, &network, -1); + + g_object_get (network, "name", &name, NULL); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, + COL_NETWORK_NAME, name, -1); + + update_server_params (settings); + + g_object_unref (network); g_free (name); } @@ -254,65 +282,10 @@ account_widget_irc_button_add_network_clicked_cb (GtkWidget *button, } static void -unset_server_values (EmpathyAccountWidgetIrc *settings) -{ - mc_account_unset_param (settings->account, "server"); - mc_account_unset_param (settings->account, "port"); - mc_account_unset_param (settings->account, "use-ssl"); -} - -static void account_widget_irc_combobox_network_changed_cb (GtkWidget *combobox, EmpathyAccountWidgetIrc *settings) { - GtkTreeIter iter; - GtkTreeModel *model; - EmpathyIrcNetwork *network; - GSList *servers; - - if (!gtk_combo_box_get_active_iter (GTK_COMBO_BOX (combobox), &iter)) - { - unset_server_values (settings); - return; - } - - model = gtk_combo_box_get_model (GTK_COMBO_BOX (combobox)); - gtk_tree_model_get (model, &iter, COL_NETWORK_OBJ, &network, -1); - - g_assert (network != NULL); - - 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); - - empathy_debug (DEBUG_DOMAIN, "Setting server to %s", address); - mc_account_set_param_string (settings->account, "server", address); - mc_account_set_param_int (settings->account, "port", port); - mc_account_set_param_boolean (settings->account, "use-ssl", ssl); - /* TODO: charset */ - - g_free (address); - } - else - { - /* No server. Unset values */ - unset_server_values (settings); - } - - g_slist_foreach (servers, (GFunc) g_object_unref, NULL); - g_slist_free (servers); - g_object_unref (network); + update_server_params (settings); } static void |