static void irc_network_dialog_setup (EmpathyIrcNetworkDialog *dialog) { gchar *name, *charset; GSList *servers, *l; GtkListStore *store; g_object_get (dialog->network, "name", &name, "charset", &charset, NULL); gtk_entry_set_text (GTK_ENTRY (dialog->entry_network), name); store = GTK_LIST_STORE (gtk_tree_view_get_model ( GTK_TREE_VIEW (dialog->treeview_servers))); servers = empathy_irc_network_get_servers (dialog->network); for (l = servers; l != NULL; l = g_slist_next (l)) { EmpathyIrcServer *server = l->data; GtkTreeIter iter; add_server_to_store (store, server, &iter); } totem_subtitle_encoding_set (GTK_COMBO_BOX (dialog->combobox_charset), charset); g_slist_foreach (servers, (GFunc) g_object_unref, NULL); g_slist_free (servers); g_free (name); g_free (charset); }
static void update_server_params (EmpathyAccountWidgetIrc *settings) { GtkTreeIter iter; GtkTreeModel *model; EmpathyIrcNetwork *network; GSList *servers; gchar *charset; if (!gtk_combo_box_get_active_iter ( GTK_COMBO_BOX (settings->combobox_network), &iter)) { unset_server_params (settings); return; } model = gtk_combo_box_get_model (GTK_COMBO_BOX (settings->combobox_network)); gtk_tree_model_get (model, &iter, COL_NETWORK_OBJ, &network, -1); g_assert (network != NULL); g_object_get (network, "charset", &charset, NULL); DEBUG ("Setting charset to %s", charset); mc_account_set_param_string (settings->account, "charset", charset); g_free (charset); servers = empathy_irc_network_get_servers (network); if (g_slist_length (servers) > 0) { /* set the first server as CM server */ EmpathyIrcServer *server = servers->data; gchar *address; guint port; gboolean ssl; g_object_get (server, "address", &address, "port", &port, "ssl", &ssl, NULL); DEBUG ("Setting server to %s", address); mc_account_set_param_string (settings->account, "server", address); DEBUG ("Setting port to %u", port); mc_account_set_param_int (settings->account, "port", port); DEBUG ("Setting use-ssl to %s", ssl ? "TRUE": "FALSE" ); mc_account_set_param_boolean (settings->account, "use-ssl", ssl); g_free (address); } else { /* No server. Unset values */ unset_server_params (settings); } g_slist_foreach (servers, (GFunc) g_object_unref, NULL); g_slist_free (servers); g_object_unref (network); }
static gboolean find_network_by_address (const gchar *id, EmpathyIrcNetwork *network, const gchar *address) { GSList *servers, *l; gboolean found = FALSE; if (network->dropped) return FALSE; servers = empathy_irc_network_get_servers (network); for (l = servers; l != NULL && !found; l = g_slist_next (l)) { EmpathyIrcServer *server = l->data; gchar *_address; g_object_get (server, "address", &_address, NULL); found = (_address != NULL && strcmp (address, _address) == 0); g_free (_address); } g_slist_foreach (servers, (GFunc) g_object_unref, NULL); g_slist_free (servers); return found; }
void check_network (EmpathyIrcNetwork *network, const gchar *_name, const gchar *_charset, struct server_t *_servers, guint nb_servers) { gchar *name, *charset; GSList *servers, *l; guint i; fail_if (network == NULL); g_object_get (network, "name", &name, "charset", &charset, NULL); fail_if (name == NULL || strcmp (name, _name) != 0); fail_if (charset == NULL || strcmp (charset, _charset) != 0); servers = empathy_irc_network_get_servers (network); fail_if (g_slist_length (servers) != nb_servers); /* Is that the right servers ? */ for (l = servers, i = 0; l != NULL; l = g_slist_next (l), i++) { EmpathyIrcServer *server; gchar *address; guint port; gboolean ssl; server = l->data; g_object_get (server, "address", &address, "port", &port, "ssl", &ssl, NULL); fail_if (address == NULL || strcmp (address, _servers[i].address) != 0); fail_if (port != _servers[i].port); fail_if (ssl != _servers[i].ssl); g_free (address); } g_slist_foreach (servers, (GFunc) g_object_unref, NULL); g_slist_free (servers); g_free (name); g_free (charset); }
static void update_server_params (EmpathyIrcNetworkChooser *self) { EmpathyIrcNetworkChooserPriv *priv = GET_PRIV (self); GSList *servers; const gchar *charset; g_assert (priv->network != NULL); charset = empathy_irc_network_get_charset (priv->network); DEBUG ("Setting charset to %s", charset); empathy_account_settings_set_string (priv->settings, "charset", charset); servers = empathy_irc_network_get_servers (priv->network); if (g_slist_length (servers) > 0) { /* set the first server as CM server */ EmpathyIrcServer *server = servers->data; gchar *address; guint port; gboolean ssl; gchar *service; g_object_get (server, "address", &address, "port", &port, "ssl", &ssl, NULL); DEBUG ("Setting server to %s", address); empathy_account_settings_set_string (priv->settings, "server", address); DEBUG ("Setting port to %u", port); empathy_account_settings_set_uint32 (priv->settings, "port", port); DEBUG ("Setting use-ssl to %s", ssl ? "TRUE": "FALSE" ); empathy_account_settings_set_boolean (priv->settings, "use-ssl", ssl); /* Set Account.Service */ service = dup_network_service (priv->network); DEBUG ("Setting Service to %s", service); empathy_account_settings_set_service (priv->settings, service); g_free (address); g_free (service); } else { /* No server. Unset values */ unset_server_params (self); } g_slist_foreach (servers, (GFunc) g_object_unref, NULL); g_slist_free (servers); }
END_TEST START_TEST (test_modify_both_files) { EmpathyIrcNetworkManager *mgr; EmpathyIrcNetwork *network; EmpathyIrcServer *server; gchar *global_file, *user_file; GSList *networks, *l; struct server_t gimpnet_servers[] = { { "irc.gimp.org", 6667, TRUE }, { "irc.us.gimp.org", 6668, FALSE }}; struct server_t great_server[] = { { "irc.greatserver.com", 7873, TRUE }}; struct server_t another_server[] = { { "irc.anothersrv.be", 6660, FALSE }}; struct server_t undernet_servers[] = { { "eu.undernet.org", 6667, FALSE }, { "us.undernet.org", 6667, FALSE }}; gboolean network_modified[4]; gboolean network_checked[4]; gchar *global_file_orig, *user_file_orig; copy_xml_file (USER_SAMPLE, USER_FILE); global_file_orig = get_xml_file (GLOBAL_SAMPLE); user_file_orig = get_user_xml_file (USER_FILE); mgr = empathy_irc_network_manager_new (global_file_orig, user_file_orig); g_object_get (mgr, "global-file", &global_file, "user-file", &user_file, NULL); fail_if (global_file == NULL || strcmp (global_file, global_file_orig) != 0); fail_if (user_file == NULL || strcmp (user_file, user_file_orig) != 0); g_free (global_file); g_free (global_file_orig); g_free (user_file); g_free (user_file_orig); networks = empathy_irc_network_manager_get_networks (mgr); fail_if (g_slist_length (networks) != 5); network_modified[0] = network_modified[1] = network_modified[2] = network_modified[3] = FALSE; /* check networks and servers */ for (l = networks; l != NULL; l = g_slist_next (l)) { EmpathyIrcNetwork *network; gchar *name; network = l->data; g_object_get (network, "name", &name, NULL); fail_if (name == NULL); if (strcmp (name, "GIMPNet") == 0) { /* Modify user network */ GSList *servers, *ll; servers = empathy_irc_network_get_servers (network); for (ll = servers; ll != NULL; ll = g_slist_next (ll)) { EmpathyIrcServer *server; gchar *address; server = ll->data; g_object_get (server, "address", &address, NULL); if (strcmp (address, "irc.gimp.org") == 0) { /* change SSL */ g_object_set (server, "ssl", TRUE, NULL); } else if (strcmp (address, "irc.us.gimp.org") == 0) { /* change port */ g_object_set (server, "port", 6668, NULL); } else if (strcmp (address, "irc.au.gimp.org") == 0) { /* remove this server */ empathy_irc_network_remove_server (network, server); } else { fail_if (TRUE); } g_free (address); } network_modified[0] = TRUE; g_slist_foreach (servers, (GFunc) g_object_unref, NULL); g_slist_free (servers); } else if (strcmp (name, "My Server") == 0) { /* remove user network */ empathy_irc_network_manager_remove (mgr, network); network_modified[1] = TRUE; } else if (strcmp (name, "Freenode") == 0) { /* remove global network */ empathy_irc_network_manager_remove (mgr, network); network_modified[2] = TRUE; } else if (strcmp (name, "Undernet") == 0) { /* modify global network */ EmpathyIrcServer *server; server = empathy_irc_server_new ("us.undernet.org", 6667, FALSE); empathy_irc_network_append_server (network, server); g_object_unref (server); network_modified[3] = TRUE; } else if (strcmp (name, "Another Server") == 0) { /* Don't change this one */ } else { fail_if (TRUE); } g_free (name); } fail_if (!network_modified[0] || !network_modified[1] || !network_modified[2] || !network_modified[3]); /* Add a new network */ network = empathy_irc_network_new ("Great Server"); server = empathy_irc_server_new ("irc.greatserver.com", 7873, TRUE); empathy_irc_network_append_server (network, server); empathy_irc_network_manager_add (mgr, network); g_object_unref (server); g_object_unref (network); g_slist_foreach (networks, (GFunc) g_object_unref, NULL); g_slist_free (networks); g_object_unref (mgr); /* Now let's reload the file and check its contain */ global_file_orig = get_xml_file (GLOBAL_SAMPLE); user_file_orig = get_user_xml_file (USER_FILE); mgr = empathy_irc_network_manager_new (global_file_orig, user_file_orig); g_free (global_file_orig); g_free (user_file_orig); networks = empathy_irc_network_manager_get_networks (mgr); fail_if (g_slist_length (networks) != 4); network_checked[0] = network_checked[1] = network_checked[2] = network_checked[3] = FALSE; /* check networks and servers */ for (l = networks; l != NULL; l = g_slist_next (l)) { gchar *name; g_object_get (l->data, "name", &name, NULL); fail_if (name == NULL); if (strcmp (name, "GIMPNet") == 0) { check_network (l->data, "GIMPNet", "UTF-8", gimpnet_servers, 2); network_checked[0] = TRUE; } else if (strcmp (name, "Great Server") == 0) { check_network (l->data, "Great Server", "UTF-8", great_server, 1); network_checked[1] = TRUE; } else if (strcmp (name, "Another Server") == 0) { check_network (l->data, "Another Server", "UTF-8", another_server, 1); network_checked[2] = TRUE; } else if (strcmp (name, "Undernet") == 0) { check_network (l->data, "Undernet", "UTF-8", undernet_servers, 2); network_checked[3] = TRUE; } else { fail_if (TRUE); } g_free (name); } fail_if (!network_checked[0] || !network_checked[1] || !network_checked[2] || !network_checked[3]); g_slist_foreach (networks, (GFunc) g_object_unref, NULL); g_slist_free (networks); g_object_unref (mgr); }
static void write_network_to_xml (const gchar *id, EmpathyIrcNetwork *network, xmlNodePtr root) { xmlNodePtr network_node, servers_node; GSList *servers, *l; gchar *name, *charset; if (!network->user_defined) /* no need to write this network to the XML */ return; 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, "charset", &charset, NULL); xmlNewProp (network_node, "name", name); xmlNewProp (network_node, "network_charset", charset); g_free (name); g_free (charset); servers = empathy_irc_network_get_servers (network); servers_node = xmlNewChild (network_node, NULL, "servers", NULL); for (l = servers; l != NULL; l = g_slist_next (l)) { EmpathyIrcServer *server; xmlNodePtr server_node; gchar *address, *tmp; guint port; gboolean ssl; server = l->data; server_node = xmlNewChild (servers_node, NULL, "server", NULL); g_object_get (server, "address", &address, "port", &port, "ssl", &ssl, NULL); xmlNewProp (server_node, "address", address); tmp = g_strdup_printf ("%u", port); xmlNewProp (server_node, "port", tmp); g_free (tmp); xmlNewProp (server_node, "ssl", ssl ? "TRUE": "FALSE"); g_free (address); } /* free the list */ g_slist_foreach (servers, (GFunc) g_object_unref, NULL); g_slist_free (servers); }