diff options
author | Milan Crha <mcrha@redhat.com> | 2012-06-15 15:04:08 +0800 |
---|---|---|
committer | Milan Crha <mcrha@redhat.com> | 2012-06-15 15:04:08 +0800 |
commit | 94daae3dba8e86e88f69320bc82795fe660ec9cd (patch) | |
tree | 9965d4f6dfc6d48adecd0b9084442185d73d58c7 /plugins/publish-calendar/publish-location.c | |
parent | 08dedf0a8a520b55c51a8117dc015915ec39f7fe (diff) | |
download | gsoc2013-evolution-94daae3dba8e86e88f69320bc82795fe660ec9cd.tar.gz gsoc2013-evolution-94daae3dba8e86e88f69320bc82795fe660ec9cd.tar.zst gsoc2013-evolution-94daae3dba8e86e88f69320bc82795fe660ec9cd.zip |
Remove the last remaining usage of GConf
Diffstat (limited to 'plugins/publish-calendar/publish-location.c')
-rw-r--r-- | plugins/publish-calendar/publish-location.c | 56 |
1 files changed, 32 insertions, 24 deletions
diff --git a/plugins/publish-calendar/publish-location.c b/plugins/publish-calendar/publish-location.c index 12fd8a3b5b..c0d46c1cd9 100644 --- a/plugins/publish-calendar/publish-location.c +++ b/plugins/publish-calendar/publish-location.c @@ -29,34 +29,23 @@ #include <string.h> #include <libxml/tree.h> -#include <gconf/gconf-client.h> #include <libedataserverui/libedataserverui.h> static EPublishUri * migrateURI (const gchar *xml, xmlDocPtr doc) { - GConfClient *client; - GSList *uris, *l, *events = NULL; + GSettings *settings; + GSList *events = NULL; + gchar **set_uris; + GPtrArray *uris_array; xmlChar *location, *enabled, *frequency, *username; xmlNodePtr root, p; EPublishUri *uri; gchar *password, *temp; EUri *euri; - - client = gconf_client_get_default (); - uris = gconf_client_get_list ( - client, "/apps/evolution/calendar/publish/uris", - GCONF_VALUE_STRING, NULL); - l = uris; - while (l && l->data) { - gchar *str = l->data; - if (strcmp (xml, str) == 0) { - uris = g_slist_remove (uris, str); - g_free (str); - } - l = g_slist_next (l); - } + gint ii; + gboolean found = FALSE; uri = g_new0 (EPublishUri, 1); @@ -106,13 +95,32 @@ migrateURI (const gchar *xml, } uri->events = events; - uris = g_slist_prepend (uris, e_publish_uri_to_xml (uri)); - gconf_client_set_list ( - client, "/apps/evolution/calendar/publish/uris", - GCONF_VALUE_STRING, uris, NULL); - g_slist_foreach (uris, (GFunc) g_free, NULL); - g_slist_free (uris); - g_object_unref (client); + uris_array = g_ptr_array_new_full (3, g_free); + + settings = g_settings_new (PC_SETTINGS_ID); + set_uris = g_settings_get_strv (settings, PC_SETTINGS_URIS); + + for (ii = 0; set_uris && set_uris[ii]; ii++) { + const gchar *str = set_uris[ii]; + if (!found && g_str_equal (xml, str)) { + found = TRUE; + g_ptr_array_add (uris_array, e_publish_uri_to_xml (uri)); + } else { + g_ptr_array_add (uris_array, g_strdup (str)); + } + } + + g_strfreev (set_uris); + + /* this should not happen, right? */ + if (!found) + g_ptr_array_add (uris_array, e_publish_uri_to_xml (uri)); + g_ptr_array_add (uris_array, NULL); + + g_settings_set_strv (settings, PC_SETTINGS_URIS, (const gchar * const *) uris_array->pdata); + + g_ptr_array_free (uris_array, TRUE); + g_object_unref (settings); cleanup: xmlFree (location); |