aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk
diff options
context:
space:
mode:
authorGuillaume Desmottes <gdesmott@gnome.org>2008-02-03 00:30:38 +0800
committerGuillaume Desmottes <gdesmott@gnome.org>2008-02-03 00:30:38 +0800
commit354dd231f7fe92df940e9f4bf2e9b004d132c0ab (patch)
tree18239cc702476448f17516d448cff57cba5f694e /libempathy-gtk
parenta2fc0b784b40f4ba766a98cb26d8f77c8df95cbf (diff)
downloadgsoc2013-empathy-354dd231f7fe92df940e9f4bf2e9b004d132c0ab.tar
gsoc2013-empathy-354dd231f7fe92df940e9f4bf2e9b004d132c0ab.tar.gz
gsoc2013-empathy-354dd231f7fe92df940e9f4bf2e9b004d132c0ab.tar.bz2
gsoc2013-empathy-354dd231f7fe92df940e9f4bf2e9b004d132c0ab.tar.lz
gsoc2013-empathy-354dd231f7fe92df940e9f4bf2e9b004d132c0ab.tar.xz
gsoc2013-empathy-354dd231f7fe92df940e9f4bf2e9b004d132c0ab.tar.zst
gsoc2013-empathy-354dd231f7fe92df940e9f4bf2e9b004d132c0ab.zip
create a new network if there is already a configured account using an unknow server
Diffstat (limited to 'libempathy-gtk')
-rw-r--r--libempathy-gtk/empathy-account-widget-irc.c88
1 files changed, 55 insertions, 33 deletions
diff --git a/libempathy-gtk/empathy-account-widget-irc.c b/libempathy-gtk/empathy-account-widget-irc.c
index 5bdf67e45..f6c8d2555 100644
--- a/libempathy-gtk/empathy-account-widget-irc.c
+++ b/libempathy-gtk/empathy-account-widget-irc.c
@@ -113,6 +113,7 @@ static void
account_widget_irc_destroy_cb (GtkWidget *widget,
EmpathyAccountWidgetIrc *settings)
{
+ empathy_irc_network_manager_store (settings->network_manager);
g_object_unref (settings->network_manager);
g_object_unref (settings->account);
g_slice_free (EmpathyAccountWidgetIrc, settings);
@@ -250,9 +251,9 @@ account_widget_irc_setup (EmpathyAccountWidgetIrc *settings)
gchar *fullname = NULL;
gchar *quit_message= NULL;
gchar *server = NULL;
- gint port;
+ gint port = 6667;
gchar *charset;
- gboolean ssl;
+ gboolean ssl = FALSE;
EmpathyIrcNetwork *network = NULL;
mc_account_get_param_string (settings->account, "account", &nick);
@@ -291,50 +292,71 @@ account_widget_irc_setup (EmpathyAccountWidgetIrc *settings)
quit_message ? quit_message : "");
if (server != NULL)
- network = empathy_irc_network_manager_find_network_by_address (
- settings->network_manager, server);
-
- if (network != NULL)
{
- gchar *name;
GtkTreeIter iter;
- gboolean valid;
GtkTreeModel *model;
- gboolean found = FALSE;
-
- g_object_get (network, "name", &name, NULL);
- empathy_debug (DEBUG_DOMAIN, "Account use network %s", name);
- /* FIXME: is it the right way to do that ? */
model = gtk_combo_box_get_model (
GTK_COMBO_BOX (settings->combobox_network));
- valid = gtk_tree_model_get_iter_first (model, &iter);
- while (valid && !found)
+ network = empathy_irc_network_manager_find_network_by_address (
+ settings->network_manager, server);
+
+ if (network != NULL)
{
- EmpathyIrcNetwork *_network;
- gtk_tree_model_get (model, &iter, COL_NETWORK_OBJ, &_network, NULL);
+ gchar *name;
+ gboolean valid;
+ gboolean found = FALSE;
+
+ g_object_get (network, "name", &name, NULL);
+ empathy_debug (DEBUG_DOMAIN, "Account use network %s", name);
- if (network == _network)
+ /* FIXME: is it the right way to do that ? */
+
+ valid = gtk_tree_model_get_iter_first (model, &iter);
+ while (valid && !found)
{
- gtk_combo_box_set_active_iter (
- GTK_COMBO_BOX (settings->combobox_network), &iter);
- found = TRUE;
- }
+ EmpathyIrcNetwork *_network;
+ gtk_tree_model_get (model, &iter, COL_NETWORK_OBJ, &_network, NULL);
+
+ if (network == _network)
+ {
+ gtk_combo_box_set_active_iter (
+ GTK_COMBO_BOX (settings->combobox_network), &iter);
+ found = TRUE;
+ }
- valid = gtk_tree_model_iter_next (model, &iter);
+ valid = gtk_tree_model_iter_next (model, &iter);
+
+ if (_network != NULL)
+ g_object_unref (_network);
+ }
+ g_assert (found);
- if (_network != NULL)
- g_object_unref (_network);
+ g_free (name);
}
- g_assert (found);
+ else
+ {
+ /* We don't have this network. Let's create it */
+ EmpathyIrcServer *srv;
+ GtkListStore *store;
- g_free (name);
- }
- else
- {
- /* TODO humm open the new network dialog ? */
- g_print ("no network using this server: %s\n", server);
+ empathy_debug (DEBUG_DOMAIN, "Create a network %s", server);
+ network = empathy_irc_network_new (server);
+ srv = empathy_irc_server_new (server, port, ssl);
+
+ empathy_irc_network_add_server (network, srv);
+
+ store = GTK_LIST_STORE (model);
+ gtk_list_store_append (store, &iter);
+ gtk_list_store_set (store, &iter, 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);
+ }
}
g_free (nick);
@@ -364,7 +386,7 @@ empathy_account_widget_irc_new (McAccount *account)
/* FIXME: set the right paths */
settings->network_manager = empathy_irc_network_manager_new (
"/home/cassidy/gnome/empathy/tests/xml/default-irc-networks-sample.xml",
- NULL);
+ "/home/cassidy/.gnome2/Empathy/irc-networks.xml");
glade = empathy_glade_get_file ("empathy-account-widget-irc.glade",
"vbox_irc_settings",