diff options
Diffstat (limited to 'libempathy-gtk/empathy-account-widget-irc.c')
-rw-r--r-- | libempathy-gtk/empathy-account-widget-irc.c | 110 |
1 files changed, 54 insertions, 56 deletions
diff --git a/libempathy-gtk/empathy-account-widget-irc.c b/libempathy-gtk/empathy-account-widget-irc.c index c0699b23a..e462aa611 100644 --- a/libempathy-gtk/empathy-account-widget-irc.c +++ b/libempathy-gtk/empathy-account-widget-irc.c @@ -27,13 +27,12 @@ #include <glib/gi18n-lib.h> #include <gtk/gtk.h> -#include <libmissioncontrol/mc-protocol.h> - #include <libempathy/empathy-utils.h> #include <libempathy/empathy-irc-network-manager.h> #include "empathy-irc-network-dialog.h" #include "empathy-account-widget.h" +#include "empathy-account-widget-private.h" #include "empathy-account-widget-irc.h" #include "empathy-ui-utils.h" @@ -43,7 +42,7 @@ #define IRC_NETWORKS_FILENAME "irc-networks.xml" typedef struct { - EmpathyAccount *account; + EmpathyAccountWidget *self; EmpathyIrcNetworkManager *network_manager; GtkWidget *vbox_settings; @@ -61,17 +60,19 @@ account_widget_irc_destroy_cb (GtkWidget *widget, EmpathyAccountWidgetIrc *settings) { g_object_unref (settings->network_manager); - g_object_unref (settings->account); g_slice_free (EmpathyAccountWidgetIrc, settings); } static void unset_server_params (EmpathyAccountWidgetIrc *settings) { + EmpathyAccountSettings *ac_settings; + + g_object_get (settings->self, "settings", &ac_settings, NULL); DEBUG ("Unset server, port and use-ssl"); - empathy_account_unset_param (settings->account, "server"); - empathy_account_unset_param (settings->account, "port"); - empathy_account_unset_param (settings->account, "use-ssl"); + empathy_account_settings_unset (ac_settings, "server"); + empathy_account_settings_unset (ac_settings, "port"); + empathy_account_settings_unset (ac_settings, "use-ssl"); } static void @@ -82,6 +83,9 @@ update_server_params (EmpathyAccountWidgetIrc *settings) EmpathyIrcNetwork *network; GSList *servers; gchar *charset; + EmpathyAccountSettings *ac_settings; + + g_object_get (settings->self, "settings", &ac_settings, NULL); if (!gtk_combo_box_get_active_iter ( GTK_COMBO_BOX (settings->combobox_network), &iter)) @@ -97,7 +101,7 @@ update_server_params (EmpathyAccountWidgetIrc *settings) g_object_get (network, "charset", &charset, NULL); DEBUG ("Setting charset to %s", charset); - empathy_account_set_param_string (settings->account, "charset", charset); + empathy_account_settings_set_string (ac_settings, "charset", charset); g_free (charset); servers = empathy_irc_network_get_servers (network); @@ -116,11 +120,11 @@ update_server_params (EmpathyAccountWidgetIrc *settings) NULL); DEBUG ("Setting server to %s", address); - empathy_account_set_param_string (settings->account, "server", address); + empathy_account_settings_set_string (ac_settings, "server", address); DEBUG ("Setting port to %u", port); - empathy_account_set_param_int (settings->account, "port", port); + empathy_account_settings_set_uint32 (ac_settings, "port", port); DEBUG ("Setting use-ssl to %s", ssl ? "TRUE": "FALSE" ); - empathy_account_set_param_boolean (settings->account, "use-ssl", ssl); + empathy_account_settings_set_boolean (ac_settings, "use-ssl", ssl); g_free (address); } @@ -323,25 +327,30 @@ fill_networks_model (EmpathyAccountWidgetIrc *settings, static void account_widget_irc_setup (EmpathyAccountWidgetIrc *settings) { - gchar *nick = NULL; - gchar *fullname = NULL; - gchar *server = NULL; + const gchar *nick = NULL; + const gchar *fullname = NULL; + const gchar *server = NULL; gint port = 6667; - gchar *charset; + const gchar *charset; gboolean ssl = FALSE; EmpathyIrcNetwork *network = NULL; + EmpathyAccountSettings *ac_settings; + + g_object_get (settings->self, "settings", &ac_settings, NULL); - nick = empathy_account_get_param_string (settings->account, "account"); - fullname = empathy_account_get_param_string (settings->account, "fullname"); - server = empathy_account_get_param_string (settings->account, "server"); - charset = empathy_account_get_param_string (settings->account, "charset"); - port = empathy_account_get_param_int (settings->account, "port"); - ssl = empathy_account_get_param_boolean (settings->account, "use-ssl"); + nick = empathy_account_settings_get_string (ac_settings, "account"); + fullname = empathy_account_settings_get_string (ac_settings, + "fullname"); + server = empathy_account_settings_get_string (ac_settings, "server"); + charset = empathy_account_settings_get_string (ac_settings, "charset"); + port = empathy_account_settings_get_uint32 (ac_settings, "port"); + ssl = empathy_account_settings_get_boolean (ac_settings, "use-ssl"); if (!nick) { nick = g_strdup (g_get_user_name ()); - empathy_account_set_param_string (settings->account, "account", nick); + empathy_account_settings_set_string (ac_settings, + "account", nick); } if (!fullname) @@ -351,7 +360,8 @@ account_widget_irc_setup (EmpathyAccountWidgetIrc *settings) { fullname = g_strdup (nick); } - empathy_account_set_param_string (settings->account, "fullname", fullname); + empathy_account_settings_set_string (ac_settings, + "fullname", fullname); } if (server != NULL) @@ -404,33 +414,20 @@ account_widget_irc_setup (EmpathyAccountWidgetIrc *settings) fill_networks_model (settings, network); - - g_free (nick); - g_free (fullname); - g_free (server); - g_free (charset); } -/** - * empathy_account_widget_irc_new: - * @account: the #EmpathyAccount to configure - * - * Creates a new IRC account widget to configure a given #EmpathyAccount - * - * Returns: The toplevel container of the configuration widget - */ -GtkWidget * -empathy_account_widget_irc_new (EmpathyAccount *account) +void +empathy_account_widget_irc_build (EmpathyAccountWidget *self, + const char *filename, + GtkWidget **table_common_settings) { EmpathyAccountWidgetIrc *settings; gchar *dir, *user_file_with_path, *global_file_with_path; - GtkBuilder *gui; GtkListStore *store; GtkCellRenderer *renderer; - gchar *filename; settings = g_slice_new0 (EmpathyAccountWidgetIrc); - settings->account = g_object_ref (account); + settings->self = self; dir = g_build_filename (g_get_user_config_dir (), PACKAGE_NAME, NULL); g_mkdir_with_parents (dir, S_IRUSR | S_IWUSR | S_IXUSR); @@ -453,13 +450,12 @@ empathy_account_widget_irc_new (EmpathyAccount *account) g_free (global_file_with_path); g_free (user_file_with_path); - filename = empathy_file_lookup ("empathy-account-widget-irc.ui", - "libempathy-gtk"); - gui = empathy_builder_get_file (filename, - "vbox_irc_settings", &settings->vbox_settings, + self->ui_details->gui = empathy_builder_get_file (filename, + "table_irc_settings", table_common_settings, + "vbox_irc", &self->ui_details->widget, + "table_irc_settings", &settings->vbox_settings, "combobox_network", &settings->combobox_network, NULL); - g_free (filename); /* Fill the networks combobox */ store = gtk_list_store_new (2, G_TYPE_OBJECT, G_TYPE_STRING); @@ -483,22 +479,24 @@ empathy_account_widget_irc_new (EmpathyAccount *account) account_widget_irc_setup (settings); - empathy_account_widget_handle_params (account, gui, + empathy_account_widget_handle_params (self, "entry_nick", "account", "entry_fullname", "fullname", "entry_password", "password", "entry_quit_message", "quit-message", NULL); - empathy_builder_connect (gui, settings, - "vbox_irc_settings", "destroy", account_widget_irc_destroy_cb, - "button_network", "clicked", account_widget_irc_button_edit_network_clicked_cb, - "button_add_network", "clicked", account_widget_irc_button_add_network_clicked_cb, - "button_remove_network", "clicked", account_widget_irc_button_remove_clicked_cb, - "combobox_network", "changed", account_widget_irc_combobox_network_changed_cb, + empathy_builder_connect (self->ui_details->gui, settings, + "table_irc_settings", "destroy", account_widget_irc_destroy_cb, + "button_network", "clicked", + account_widget_irc_button_edit_network_clicked_cb, + "button_add_network", "clicked", + account_widget_irc_button_add_network_clicked_cb, + "button_remove_network", "clicked", + account_widget_irc_button_remove_clicked_cb, + "combobox_network", "changed", + account_widget_irc_combobox_network_changed_cb, NULL); - empathy_account_widget_set_default_focus (gui, "entry_nick"); - - return empathy_builder_unref_and_keep_widget (gui, settings->vbox_settings); + self->ui_details->default_focus = g_strdup ("entry_nick"); } |