aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy/empathy-irc-network-manager.c
diff options
context:
space:
mode:
authorGuillaume Desmottes <gdesmott@gnome.org>2008-01-24 07:56:51 +0800
committerGuillaume Desmottes <gdesmott@gnome.org>2008-01-24 07:56:51 +0800
commitcd89041f40ffff2c259953a446e25f22999e7888 (patch)
treefafc5c7e73f1a4e0efa970967b359c82286baf85 /libempathy/empathy-irc-network-manager.c
parent7645da39cf40bcd0bf5d15bb20892ce5d22d71f2 (diff)
downloadgsoc2013-empathy-cd89041f40ffff2c259953a446e25f22999e7888.tar
gsoc2013-empathy-cd89041f40ffff2c259953a446e25f22999e7888.tar.gz
gsoc2013-empathy-cd89041f40ffff2c259953a446e25f22999e7888.tar.bz2
gsoc2013-empathy-cd89041f40ffff2c259953a446e25f22999e7888.tar.lz
gsoc2013-empathy-cd89041f40ffff2c259953a446e25f22999e7888.tar.xz
gsoc2013-empathy-cd89041f40ffff2c259953a446e25f22999e7888.tar.zst
gsoc2013-empathy-cd89041f40ffff2c259953a446e25f22999e7888.zip
write dropped server to user's XML
Diffstat (limited to 'libempathy/empathy-irc-network-manager.c')
-rw-r--r--libempathy/empathy-irc-network-manager.c36
1 files changed, 20 insertions, 16 deletions
diff --git a/libempathy/empathy-irc-network-manager.c b/libempathy/empathy-irc-network-manager.c
index c1b12d493..3becef96a 100644
--- a/libempathy/empathy-irc-network-manager.c
+++ b/libempathy/empathy-irc-network-manager.c
@@ -274,14 +274,6 @@ empathy_irc_network_manager_add (EmpathyIrcNetworkManager *self,
g_free (id);
}
-static gboolean
-remove_network_foreach (const gchar *id,
- EmpathyIrcNetwork *network,
- EmpathyIrcNetwork *network_to_remove)
-{
- return (network == network_to_remove);
-}
-
void
empathy_irc_network_manager_remove (EmpathyIrcNetworkManager *self,
EmpathyIrcNetwork *network)
@@ -293,8 +285,8 @@ empathy_irc_network_manager_remove (EmpathyIrcNetworkManager *self,
priv = EMPATHY_IRC_NETWORK_MANAGER_GET_PRIVATE (self);
- g_hash_table_foreach_remove (priv->networks,
- (GHRFunc) remove_network_foreach, network);
+ network->user_defined = TRUE;
+ network->dropped = TRUE;
}
static void
@@ -302,6 +294,9 @@ append_network_to_list (const gchar *id,
EmpathyIrcNetwork *network,
GSList **list)
{
+ if (network->dropped)
+ return;
+
*list = g_slist_prepend (*list, g_object_ref (network));
}
@@ -449,18 +444,21 @@ irc_network_manager_parse_irc_network (EmpathyIrcNetworkManager *self,
if (!xmlHasProp (node, "id"))
return;
- if (!xmlHasProp (node, "name"))
- return;
-
id = xmlGetProp (node, "id");
-
if (xmlHasProp (node, "dropped"))
{
- g_hash_table_remove (priv->networks, id);
- xmlFree (id);
+ network = g_hash_table_lookup (priv->networks, id);
+ if (network != NULL)
+ {
+ network->dropped = TRUE;
+ }
+ xmlFree (id);
return;
}
+ if (!xmlHasProp (node, "name"))
+ return;
+
name = xmlGetProp (node, "name");
network = empathy_irc_network_new (name);
network->user_defined = user_defined;
@@ -562,6 +560,12 @@ write_network_to_xml (const gchar *id,
network_node = xmlNewChild (root, NULL, "network", NULL);
xmlNewProp (network_node, "id", id);
+ if (network->dropped)
+ {
+ xmlNewProp (network_node, "dropped", "1");
+ return;
+ }
+
g_object_get (network, "name", &name, NULL);
xmlNewProp (network_node, "name", name);
g_free (name);