diff options
author | Guillaume Desmottes <gdesmott@gnome.org> | 2008-01-24 07:56:51 +0800 |
---|---|---|
committer | Guillaume Desmottes <gdesmott@gnome.org> | 2008-01-24 07:56:51 +0800 |
commit | cd89041f40ffff2c259953a446e25f22999e7888 (patch) | |
tree | fafc5c7e73f1a4e0efa970967b359c82286baf85 /libempathy/empathy-irc-network-manager.c | |
parent | 7645da39cf40bcd0bf5d15bb20892ce5d22d71f2 (diff) | |
download | gsoc2013-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.c | 36 |
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); |