]> git.0d.be Git - empathy.git/blobdiff - libempathy-gtk/empathy-account-widget-irc.c
Merge commit 'staz/dnd'
[empathy.git] / libempathy-gtk / empathy-account-widget-irc.c
index c0699b23a70fec490a0a9e78853d556d2b6e1d2c..d3b9919899deb3eff5f4bdfafc9d6c645d1e9c8a 100644 (file)
 #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);
     }
@@ -264,6 +268,7 @@ account_widget_irc_combobox_network_changed_cb (GtkWidget *combobox,
                                                 EmpathyAccountWidgetIrc *settings)
 {
   update_server_params (settings);
+  empathy_account_widget_changed (settings->self);
 }
 
 static void
@@ -323,25 +328,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 +361,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 +415,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 +451,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 +480,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");
 }