[evolution-activesync: 4/6] Code of migration from GConf to GSettings



commit a3b9432c67c44d3f334aaf7439b4413c19e668fd
Author: Oliver Luo <lyc pku eecs gmail com>
Date:   Wed Jul 29 21:20:43 2015 +0800

    Code of migration from GConf to GSettings
    
    Add two schema files (*.gschama.xml) to be used in GSettings, one for
    the whole accounts information, the other one for each detailed account
    information. Main changes happened in e-mail-config-eas-backend.c,
    eas-connection.c and eas-account-list.c. Other files contains trivial
    changes according to the change of the API. You may now need to re-run
    autogen in order to make sure everything is properly updated.

 Makefile.am                               |    6 +-
 configtool/activesync-setup.sh            |   23 +-
 configuration/Makefile.am                 |    4 +-
 configuration/e-mail-config-eas-backend.c |   70 +++--
 configure.ac                              |    3 +-
 eas-daemon/libeas/Makefile.am             |    8 +-
 eas-daemon/libeas/eas-connection.c        |   75 ++--
 eas-daemon/libeas/eas-sync-folder-msg.c   |   12 +-
 libeasaccount/src/Makefile.am             |    4 +-
 libeasaccount/src/eas-account-list.c      |  563 +++++++++--------------------
 libeasaccount/src/eas-account-list.h      |   24 +-
 org.meego.activesyncd.account.gschema.xml |   31 ++
 org.meego.activesyncd.gschema.xml         |   13 +
 13 files changed, 354 insertions(+), 482 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index 0e1007f..4c405ae 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -13,10 +13,14 @@ if ENABLE_CAMEL_BACKEND
   CAMEL_DIRS = libevoeas camel
 endif
 
+gsettings_SCHEMAS = org.meego.activesyncd.gschema.xml org.meego.activesyncd.account.gschema.xml
+
+ GSETTINGS_RULES@
+
 # full set of directories for "make dist"
 DIST_SUBDIRS = . libeasaccount/src libeasclient libeasaccount/tests eas-daemon check_tests libevoeas camel 
meego QtActivesyncdConfig po
 # subset of that list for "make && make install"
-SUBDIRS = . libeasaccount/src libeasclient libeasaccount/tests eas-daemon check_tests $(CAMEL_DIRS) 
$(MEEGO_DIR) $(QTCONFIG_DIR) po collection configuration
+SUBDIRS = . libeasaccount/src libeasclient eas-daemon check_tests $(CAMEL_DIRS) $(MEEGO_DIR) $(QTCONFIG_DIR) 
po collection configuration
 
 EXTRA_DIST = autogen.sh
 
diff --git a/configtool/activesync-setup.sh b/configtool/activesync-setup.sh
index d7eb726..04a5a1c 100755
--- a/configtool/activesync-setup.sh
+++ b/configtool/activesync-setup.sh
@@ -12,8 +12,27 @@ read -r -p "Enter server URL: " SERVERURL
 # Should test the connectivity here.
 
 # Would be nice if it were like this...
-gconftool-2 --set --type=string /apps/activesyncd/accounts/$EMAILADDR/username "$ASUSERNAME"
-gconftool-2 --set --type=string /apps/activesyncd/accounts/$EMAILADDR/serverUri "$SERVERURL"
+# Not usable untill we can finish the account listener bug
+:||{
+match=0
+for account in `gsettings get org.meego.activesyncd accounts`
+do
+       account=${account%[\']*}
+       account=${account#*[\']}
+       if [ "$account" = "$EMAILADDR" ] 
+       then
+               match=1
+       fi      
+done
+
+if [ "$match" -eq "0" ]
+then
+       gsettings set org.meego.activesyncd accounts "`gsettings get org.meego.activesyncd accounts | sed 
s/]//`, '$EMAILADDR']"
+fi
+
+gsettings set org.meego.activesyncd.account:/org/meego/activesyncd/account/$EMAILADDR/ username "$ASUSERNAME"
+gsettings set org.meego.activesyncd.account:/org/meego/activesyncd/account/$EMAILADDR/ serveruri "$SERVERURL"
+}
 
 # Add Evolution account in /apps/evolution/mail/accounts with URL
 # eas:///account_uid=$EMAILADDR;check_all
diff --git a/configuration/Makefile.am b/configuration/Makefile.am
index e133e3b..bb38af1 100644
--- a/configuration/Makefile.am
+++ b/configuration/Makefile.am
@@ -8,7 +8,7 @@ module_eas_mail_config_la_CPPFLAGS = \
        $(EVOLUTION_MAIL_CFLAGS) \
        $(LIBEDATASERVER_CFLAGS) \
        $(LIBEBACKEND_CFLAGS) \
-       $(GCONF_CFLAGS) \
+       $(GIO_CFLAGS) \
        $(NULL)
 
 module_eas_mail_config_la_SOURCES = \
@@ -22,7 +22,7 @@ module_eas_mail_config_la_LIBADD = \
        $(EVOLUTION_MAIL_LIBS) \
        $(LIBEDATASERVER_LIBS) \
        $(LIBEBACKEND_LIBS) \
-       $(GCONF_LIBS) \
+       $(GIO_LIBS) \
        $(NULL)
 
 module_eas_mail_config_la_LDFLAGS = \
diff --git a/configuration/e-mail-config-eas-backend.c b/configuration/e-mail-config-eas-backend.c
index 46e897b..e0683da 100644
--- a/configuration/e-mail-config-eas-backend.c
+++ b/configuration/e-mail-config-eas-backend.c
@@ -25,7 +25,7 @@
 #include "e-mail-config-eas-backend.h"
 
 #include <glib/gi18n-lib.h>
-#include <gconf/gconf-client.h>
+#include <gio/gio.h>
 
 #include <camel/camel.h>
 #include <libebackend/libebackend.h>
@@ -272,7 +272,7 @@ mail_config_eas_backend_insert_widgets (EMailConfigServiceBackend *backend,
 }
 
 /* Setup default value in the Receiving page using the information Stored 
- * in GConf. */
+ * in GSettings. */
 static void
 mail_config_eas_backend_setup_defaults (EMailConfigServiceBackend *backend)
 {
@@ -300,22 +300,22 @@ mail_config_eas_backend_setup_defaults (EMailConfigServiceBackend *backend)
 
        if (email_address != NULL) {
                CamelNetworkSettings *network_settings;
-               gchar *hosturl;
-               GConfClient *client = gconf_client_get_default();
-               gchar *key;
-
-               key = g_strdup_printf ("/apps/activesyncd/accounts/%s/username", email_address);
-               username = gconf_client_get_string (client, key, NULL);
-               g_free (key);
-
+               gchar *account_address = g_strdup_printf ("/org/meego/activesyncd/account/%s/", 
email_address);
+               
+               g_debug("Path is %s\n", account_address);
+               
+               GSettings *account = g_settings_new_with_path ("org.meego.activesyncd.account", 
account_address);
+               
+               g_free (account_address);
+       
                /* The default username is the same as the email address. */
+               username = g_settings_get_string (account, "username");
+
                if (username == NULL || *username == '\0') {
                        username = g_strdup (email_address);
                }
 
-               key = g_strdup_printf ("/apps/activesyncd/accounts/%s/serverUri", email_address);
-               hosturl = gconf_client_get_string (client, key, NULL);
-               g_free (key);
+               hosturl = g_settings_get_string (account, "serveruri");
 
                network_settings = CAMEL_NETWORK_SETTINGS (settings);
                camel_network_settings_set_user (network_settings, username);
@@ -325,6 +325,7 @@ mail_config_eas_backend_setup_defaults (EMailConfigServiceBackend *backend)
 
                g_free (username);
                g_free (hosturl);
+               g_object_unref (account);
        }
 }
 
@@ -365,7 +366,7 @@ mail_config_eas_backend_check_complete (EMailConfigServiceBackend *backend)
        return TRUE;
 }
 
-/* Save the filled information to GConf and move on. */
+/* Save the filled information to GSettings and move on. */
 static void
 mail_config_eas_backend_commit_changes (EMailConfigServiceBackend *backend)
 {
@@ -392,16 +393,29 @@ mail_config_eas_backend_commit_changes (EMailConfigServiceBackend *backend)
        email_address = e_mail_config_service_page_get_email_address (page);
 
        if (email_address != NULL) {
-               GConfClient *client = gconf_client_get_default ();
-               char *key;
+               int i = 0;
+               GSettings *account_info = g_settings_new ("org.meego.activesyncd");
+               gchar **accounts = g_settings_get_strv(account_info, "accounts");
+               gchar *account_address = g_strdup_printf ("/org/meego/activesyncd/account/%s/", 
email_address);
+
+               g_debug("Path is %s\n", account_address);
+
+               GSettings *account = g_settings_new_with_path ("org.meego.activesyncd.account", 
account_address);
+               
+               g_free (account_address);
 
                username = camel_network_settings_dup_user ((CamelNetworkSettings *)settings);
                g_strstrip (username);
 
                if (username && username[0]) {
-                       key = g_strdup_printf ("/apps/activesyncd/accounts/%s/username", email_address);
-                       gconf_client_set_string (client, key, username, NULL);
-                       g_free (key);
+                       g_settings_set_string (account, "username", username);
+                       if (!g_strv_contains((const gchar * const *)accounts, email_address)){
+                               gchar **new_strv = g_malloc0(sizeof(gchar *) * (g_strv_length(accounts) + 2));
+                               for (i = 0; i < g_strv_length(accounts); i++)
+                                       new_strv[i] = accounts[i];
+                               new_strv[g_strv_length(accounts)] = strdup(email_address);
+                               g_settings_set_strv(account_info, "accounts", (const gchar * const 
*)new_strv);
+                       }
                }
 
                g_free(username);
@@ -410,15 +424,25 @@ mail_config_eas_backend_commit_changes (EMailConfigServiceBackend *backend)
                g_strstrip (hosturl);
 
                if (hosturl && hosturl[0]) {
-                       key = g_strdup_printf ("/apps/activesyncd/accounts/%s/serverUri", email_address);
-                       gconf_client_set_string (client, key, hosturl, NULL);
-                       g_free (key);
+                       g_settings_set_string (account, "serveruri", hosturl);  
+                       if (!g_strv_contains((const gchar * const *)accounts, email_address)){
+                               gchar **new_strv = g_malloc0(sizeof(gchar *) * (g_strv_length(accounts) + 2));
+                               for (i = 0; i < g_strv_length(accounts); i++)
+                                       new_strv[i] = accounts[i];
+                               new_strv[g_strv_length(accounts)] = strdup(email_address);
+                               g_settings_set_strv(account_info, "accounts", (const gchar * const 
*)new_strv);
+                       }
 
                        camel_eas_settings_set_account_uid ((CamelEasSettings *)settings, email_address);
                }
 
+               g_debug("Sync now\n");
+
+               g_settings_sync();
+
                g_free(hosturl);
-               g_object_unref (client);
+               g_object_unref (account_info);
+               g_object_unref (account);
        }
 }
 
diff --git a/configure.ac b/configure.ac
index 7460b21..5d64562 100644
--- a/configure.ac
+++ b/configure.ac
@@ -62,7 +62,7 @@ PKG_CHECK_MODULES(WBXML, libwbxml2 >= 0.11)
 PKG_CHECK_MODULES(LIBICAL, libical)
 PKG_CHECK_MODULES(LIBEBOOK, libebook-1.2)
 PKG_CHECK_MODULES(LIBEBACKEND, libebackend-1.2)
-PKG_CHECK_MODULES(GCONF, gconf-2.0)
+PKG_CHECK_MODULES(GIO, gio-2.0)
 PKG_CHECK_MODULES(LIBEMAIL_ENGINE, libemail-engine)
 
 EVO_PKG="-3.0"
@@ -120,6 +120,7 @@ AC_SUBST(ASKPASS)
 MEEGO_UI_DIR=meego/meego-ux-settings-activesync
 AM_CONDITIONAL([ENABLE_MEEGO_UI],[test "$have_mlite" = yes])
 
+GLIB_GSETTINGS
 
 AC_ARG_ENABLE(qtconfig,
               AS_HELP_STRING([--disable-qtconfig],
diff --git a/eas-daemon/libeas/Makefile.am b/eas-daemon/libeas/Makefile.am
index f5c7078..d55e664 100644
--- a/eas-daemon/libeas/Makefile.am
+++ b/eas-daemon/libeas/Makefile.am
@@ -13,7 +13,7 @@ libeas_la_CPPFLAGS =                  \
                $(SOUP_CFLAGS)          \
                $(WBXML_CFLAGS)         \
                $(LIBICAL_CFLAGS)       \
-               $(GCONF_CFLAGS)         \
+               $(GIO_CFLAGS)           \
                $(LIBEBOOK_CFLAGS)      \
                $(GNOMEKEYRING_CFLAGS)  \
                -DG_LOG_DOMAIN=\"libeas\" \
@@ -28,9 +28,9 @@ libeas_la_LDFLAGS =                   \
                $(LIBXML_LIBS)          \
                $(SOUP_LIBS)            \
                $(WBXML_LIBS)           \
-               $(LIBICAL_LIBS)     \
-               $(GCONF_LIBS) \
-               $(LIBEBOOK_LIBS)     \
+               $(LIBICAL_LIBS)         \
+               $(GIO_LIBS)             \
+               $(LIBEBOOK_LIBS)        \
                $(GNOMEKEYRING_LIBS)    \
                $(NULL)
 
diff --git a/eas-daemon/libeas/eas-connection.c b/eas-daemon/libeas/eas-connection.c
index 860dd10..f691143 100644
--- a/eas-daemon/libeas/eas-connection.c
+++ b/eas-daemon/libeas/eas-connection.c
@@ -70,6 +70,7 @@
 #include <unistd.h>
 #include <gnome-keyring.h>
 #include <glib/gi18n-lib.h>
+#include <gio/gio.h>
 
 #include <sys/stat.h>
 
@@ -145,7 +146,7 @@ struct _EasNode {
 
 static GMutex connection_list;
 static GHashTable *g_open_connections = NULL;
-static GConfClient* g_gconf_client = NULL;
+static GSettings *g_gsetting = NULL;
 static EasAccountList* g_account_list = NULL;
 static GSList* g_mock_response_list = NULL;
 static GArray *g_mock_status_codes = NULL;
@@ -174,46 +175,39 @@ static void
 eas_connection_accounts_init()
 {
        g_debug ("eas_connection_accounts_init++");
-
-       if (!g_gconf_client) {
-               // At this point we don't have an account Id so just load the list of accounts
-               g_gconf_client = gconf_client_get_default();
-               if (g_gconf_client == NULL) {
-                       g_critical ("Error Failed to create GConfClient");
+       if (!g_gsetting) {
+               g_gsetting = g_settings_new("org.meego.activesyncd");
+               if (g_gsetting == NULL) {
+                       g_critical ("Error Failed to create GSettings");
                        return;
                }
-               g_debug ("-->created gconf_client");
+               g_debug ("-->created gsetting");
 
-               g_account_list = eas_account_list_new (g_gconf_client);
+               g_account_list = eas_account_list_new (g_gsetting);
                if (g_account_list == NULL) {
-                       g_critical ("Error Failed to create account list ");
+                       g_critical ("Error Failed to create account list");
                        return;
                }
                g_debug ("-->created account_list");
 
-               // Find the DeviceType and DeviceId from GConf, or create them
-               // if they don't already exist
-               device_type = gconf_client_get_string (g_gconf_client,
-                                                      "/apps/activesyncd/device_type",
-                                                      NULL);
-               if (!device_type) {
-                       device_type = g_strdup ("MeeGo");
-                       gconf_client_set_string (g_gconf_client,
-                                                "/apps/activesyncd/device_type",
-                                                device_type, NULL);
+               device_type = g_settings_get_string (g_gsetting, "device-type");
+               if (!device_type || !device_type[0]) {
+                       device_type = strdup ("MeeGo");
+                       g_settings_set_string (g_gsetting, "device-type", device_type);
                }
 
-               device_id = gconf_client_get_string (g_gconf_client,
-                                                    "/apps/activesyncd/device_id",
-                                                    NULL);
-               if (!device_id) {
+               device_id = g_settings_get_string (g_gsetting, "device-id");
+               if (!device_id || !device_id[0]) {
                        device_id = g_strdup_printf ("%08x%08x%08x%08x",
                                                     g_random_int(), g_random_int(),
                                                     g_random_int(), g_random_int());
-                       gconf_client_set_string (g_gconf_client,
-                                                "/apps/activesyncd/device_id",
-                                                device_id, NULL);
+                       g_settings_set_string (g_gsetting, "device-id", device_id);
                }
+
+               g_debug("Sync now\n");
+
+               g_settings_sync ();
+
                g_debug ("device type %s, device id %s", device_type, device_id);
        }
        g_debug ("eas_connection_accounts_init--");
@@ -580,14 +574,17 @@ connection_authenticate (SoupSession *sess,
 
        g_debug ("  eas_connection - connection_authenticate++");
 
-       // @@FIX ME - Temporary grab of password from GConf
+       // @@FIX ME - Temporary grab of password from GSettings 
 
        password = eas_account_get_password (cnc->priv->account);
-       if (password) {
-               g_warning ("Found password in GConf, writing it to Gnome Keyring");
+
+       g_debug("Password = \'%s\'", password);
+
+       if (password && password[0]) {
+               g_warning ("Found password in GSettings, writing it to Gnome Keyring");
 
                if (GNOME_KEYRING_RESULT_OK != writePasswordToKeyring (password, username, serverUri)) {
-                       g_warning ("Failed to store GConf password in Gnome Keyring");
+                       g_warning ("Failed to store GSettings password in Gnome Keyring");
                }
        }
        
@@ -1061,7 +1058,7 @@ eas_connection_send_request (EasConnection* self,
        }
 
        fake_device_id = eas_account_get_device_id (priv->account);
-       if (fake_device_id) {
+       if (fake_device_id && fake_device_id[0]) {
                g_debug ("using fake_device_id");
                uri = g_strconcat (eas_account_get_uri (priv->account),
                                   "?Cmd=", cmd,
@@ -1080,6 +1077,8 @@ eas_connection_send_request (EasConnection* self,
                                   NULL);
        }
 
+//TODO: Remove this g_debug
+       g_debug ("The uri of soup_message_new is %s.", uri);
        msg = soup_message_new ("POST", uri);
        g_free (uri);
        if (!msg) {
@@ -2521,7 +2520,7 @@ handle_options_response (SoupSession *session, SoupMessage *msg, gpointer data)
        
        g_debug("handle_options_response++");
        
-       // parse response store the list in GConf (via EasAccount)
+       // parse response store the list in GSettings (via EasAccount)
        if (HTTP_STATUS_OK != msg->status_code) {
                g_critical ("Failed with status [%d] : %s", msg->status_code, (msg->reason_phrase ? 
msg->reason_phrase : "-"));
        }       
@@ -2531,7 +2530,7 @@ handle_options_response (SoupSession *session, SoupMessage *msg, gpointer data)
 
        g_debug("server supports protocols %s", protocol_versions);
 
-       // write the list to GConf using new EasAccount API
+       // write the list to GSettings using new EasAccount API
        eas_account_set_server_protocols(acc, protocol_versions);
 
        eas_account_list_save_item (g_account_list,
@@ -2557,7 +2556,7 @@ options_connection_authenticate (SoupSession *sess,
 
        g_debug ("options_connection_authenticate++");
 
-       // @@FIX ME - Temporary grab of password from GConf
+       // @@FIX ME - Temporary grab of password from GSettings
        password = eas_account_get_password (cnc->priv->account);
 
        soup_auth_authenticate (auth,
@@ -2578,7 +2577,7 @@ options_connection_authenticate (SoupSession *sess,
  the same thread that the gnome keyring stuff uses the idle loop of.
  
  use the HTTP OPTIONS command to ask server for a list of protocols
- store results in GConf 
+ store results in GSettings 
  */
 gboolean 
 eas_connection_fetch_server_protocols (EasConnection *cnc, GError **error)
@@ -2624,7 +2623,7 @@ eas_connection_fetch_server_protocols (EasConnection *cnc, GError **error)
        g_debug("send options message");
        soup_session_send_message(soup_session, msg);
 
-       // parse response store the list in GConf (via EasAccount)
+       // parse response store the list in GSettings (via EasAccount)
        if (HTTP_STATUS_OK != msg->status_code) {
                g_critical ("Failed with status [%d] : %s", msg->status_code, (msg->reason_phrase ? 
msg->reason_phrase : "-"));
                g_set_error (error,
@@ -2653,7 +2652,7 @@ eas_connection_fetch_server_protocols (EasConnection *cnc, GError **error)
                proto_vers = g_slist_append(proto_vers, GINT_TO_POINTER (proto_ver_int));
        }       
 
-       // write the list to GConf using new EasAccount API
+       // write the list to GSettings using new EasAccount API
        eas_account_set_server_protocols(acc, proto_vers);
 
        g_slist_free(proto_vers);
diff --git a/eas-daemon/libeas/eas-sync-folder-msg.c b/eas-daemon/libeas/eas-sync-folder-msg.c
index 667f1c6..d3dc4df 100644
--- a/eas-daemon/libeas/eas-sync-folder-msg.c
+++ b/eas-daemon/libeas/eas-sync-folder-msg.c
@@ -50,6 +50,8 @@
  *
  */
 
+#include <gio/gio.h>
+
 #include "eas-connection-errors.h"
 #include "eas-sync-folder-msg.h"
 #include <eas-folder.h>
@@ -199,12 +201,12 @@ eas_sync_folder_msg_parse_response (EasSyncFolderMsg* self, const xmlDoc *doc, G
        EasError error_details;
        EasAccount * acc = NULL;
        EasAccountList *account_list = NULL;
-       GConfClient* client = NULL;
+       GSettings *g_gsetting = NULL;
 
-       client = gconf_client_get_default();
-       g_assert (client != NULL);
-       /* Get list of accounts from gconf repository */
-       account_list = eas_account_list_new (client);
+       g_gsetting = g_settings_new ("org.meego.activesyncd");
+       g_assert (g_gsetting != NULL);
+       /* Get list of accounts from GSettings repository */
+       account_list = eas_account_list_new (g_gsetting);
        g_assert (account_list != NULL);
 
        acc = eas_account_list_find (account_list, EAS_ACCOUNT_FIND_ACCOUNT_UID, priv->account_id);
diff --git a/libeasaccount/src/Makefile.am b/libeasaccount/src/Makefile.am
index 5e1c1d0..101e48d 100644
--- a/libeasaccount/src/Makefile.am
+++ b/libeasaccount/src/Makefile.am
@@ -7,13 +7,13 @@ libeasaccount_la_CFLAGS = $(WARNING_FLAGS)
 
 libeasaccount_la_CPPFLAGS =                    \
                $(GLIB_CFLAGS)          \
-               $(GCONF_CFLAGS) \
+               $(GIO_CFLAGS) \
                $(EDATASERVER_CFLAGS) \
                $(NULL)
 
 libeasaccount_la_LDFLAGS =                     \
                $(GLIB_LIBS)            \
-               $(GCONF_LIBS) \
+               $(GIO_LIBS) \
                $(EDATASERVER_LIBS) \
                $(NULL)
 
diff --git a/libeasaccount/src/eas-account-list.c b/libeasaccount/src/eas-account-list.c
index 82979db..85bc296 100644
--- a/libeasaccount/src/eas-account-list.c
+++ b/libeasaccount/src/eas-account-list.c
@@ -30,7 +30,7 @@
 
 
 struct _EasAccountListPrivate {
-       GConfClient *gconf;
+       GSettings *setting;
        guint notify_id;
 };
 
@@ -99,13 +99,9 @@ eas_account_list_dispose (GObject *object)
 {
        EasAccountList *account_list = EAS_ACCOUNT_LIST (object);
        g_debug("eas_account_list_dispose++");
-       if (account_list->priv->gconf) {
-               if (account_list->priv->notify_id) {
-                       gconf_client_notify_remove (account_list->priv->gconf,
-                                                   account_list->priv->notify_id);
-               }
-               g_object_unref (account_list->priv->gconf);
-               account_list->priv->gconf = NULL;
+       if (account_list->priv->setting) {
+               g_object_unref (account_list->priv->setting);
+               account_list->priv->setting = NULL;
        }
        g_debug("eas_account_list_dispose--");
        G_OBJECT_CLASS (eas_account_list_parent_class)->dispose (object);
@@ -121,133 +117,76 @@ eas_account_list_finalize (GObject *object)
        G_OBJECT_CLASS (eas_account_list_parent_class)->finalize (object);
 }
 
-static gchar*
-get_key_absolute_path(const gchar *uid, const gchar *Key)
-{
-       int string_Key_len;
-       char* Key_path = NULL;
-       
-       string_Key_len = strlen(EAS_ACCOUNT_ROOT) + strlen("/") + strlen(uid) + strlen(Key) + 1;
-       
-       Key_path = g_malloc(string_Key_len);
-       if (Key_path)
-               g_snprintf(Key_path, (string_Key_len), "%s/%s%s%c", EAS_ACCOUNT_ROOT, uid, Key, '\0');
-
-       return Key_path;
-} 
-
 static void
-eas_account_list_set_account_info(EasAccountInfo *acc_info, const gchar* uid_path, GSList *entry_list)
+eas_account_list_set_account_info(EasAccountInfo *acc_info, const gchar* uid)
 {
-       const GConfValue* value = NULL;
-       const gchar* keyname = NULL;
-       gchar* uid = NULL;
-       gint last_token;
-       gchar **str_array = NULL; 
-       gchar* serveruri_Key_path = NULL;
-       gchar* username_Key_path = NULL;
-       gchar* policy_key_Key_path = NULL;
-       gchar* calendar_folder_Key_path = NULL;
-       gchar* contact_folder_Key_path = NULL;
-       gchar* password_Key_path = NULL;
-       gchar* protover_Key_path = NULL;
-       gchar* devover_Key_path = NULL;
-       gchar* servoprotovers_Key_path = NULL;
-       GSList *item = NULL;
+       gchar *key = NULL;
+       GVariant *value = NULL;
+       gchar **key_list;
+       int i = 0;
+       int len = 0;
 
+       g_debug("eas_account_list_set_account_info++");
+       
        /* g_debug("eas_account_list_set_account_info++"); */
        g_return_if_fail (acc_info != NULL);
-       g_return_if_fail (uid_path != NULL);
-       g_return_if_fail (entry_list != NULL);
-
-       /* strip the EAS_ACCOUNT_ROOT from the uid_path to get the uid only */
-       last_token = 4;
-       str_array = g_strsplit(uid_path, "/", -1);
-       uid = g_strdup(str_array[last_token]);
-       /* free the vector */
-       g_strfreev(str_array);
-
-       /* Concatenate "ROOT + UID + KEY" */
-       serveruri_Key_path       = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_SERVERURI);
-       username_Key_path        = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_USERNAME);
-       policy_key_Key_path      = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_POLICY_KEY);
-       contact_folder_Key_path  = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_CONTACT_FOLDER);
-       calendar_folder_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_CALENDAR_FOLDER);
-       password_Key_path        = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_PASSWORD);
-       protover_Key_path        = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_PROTOCOL_VERSION);
-       devover_Key_path         = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_DEVICE_ID);
-       servoprotovers_Key_path  = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_SERVER_PROTOCOLS);
-       acc_info->uid = uid; // Ownership passed to the account into structure.
-
-       for (item = entry_list; item; item = item->next)
-       {
-               GConfEntry *entry = item->data;
 
-               keyname = gconf_entry_get_key(entry);
-               if (keyname == NULL) {
+       acc_info->uid = g_strdup(uid); // Ownership passed to the account into structure.
+
+       gchar *account_address = g_strdup_printf ("/org/meego/activesyncd/account/%s/", uid);
+
+               g_debug("Path is %s\n", account_address);
+               
+       GSettings *setting = g_settings_new_with_path ("org.meego.activesyncd.account", account_address);
+
+       g_free (account_address);
+       account_address = NULL;
+
+       key_list = g_settings_list_keys (setting);
+       len = g_strv_length (key_list);
+
+       while (i < len) {
+               key = key_list[i];
+               if (key == NULL) {
                        /* g_debug("Couldn't get the key name - this could be a delete notification!");*/
                        continue;
                }
 
-               value = gconf_entry_get_value(entry);
+               value = g_settings_get_value (setting, (const gchar *)key);
                if (value == NULL) {
                        /*g_debug("Couldn't get the key value - this could be a delete notification!");*/
                        continue;
                }
 
-               // gconf_value_to_string passes memory ownership to the account into structure.
-               if (strcmp(keyname, serveruri_Key_path) == 0) {
-                       acc_info->serverUri = gconf_value_to_string(value);
-               } else if (strcmp(keyname, username_Key_path) == 0) {
-                       acc_info->username = gconf_value_to_string(value); 
-               } else if (strcmp(keyname, policy_key_Key_path) == 0) {
-                       acc_info->policy_key = gconf_value_to_string(value);
-               } else if (strcmp(keyname, calendar_folder_Key_path) == 0) {
-                       acc_info->calendar_folder = gconf_value_to_string(value);
-               } else if (strcmp(keyname, contact_folder_Key_path) == 0) {
-                       acc_info->contact_folder = gconf_value_to_string(value);
-               } else if (strcmp(keyname, password_Key_path) == 0) {
-                       acc_info->password = gconf_value_to_string(value); 
-               } else if (strcmp(keyname, protover_Key_path) == 0) {
-                       acc_info->protocol_version = gconf_value_get_int(value);
-               } else if (strcmp(keyname, devover_Key_path) == 0) {
-                       acc_info->device_id = gconf_value_to_string(value);
-               } else if (strcmp(keyname, servoprotovers_Key_path) == 0) {
-                       GSList *list;
-                       //GConfValueType type;
-                       gint prot;
-                       guint i;
-
-                       //type = value->type;
-                       //g_assert(type == GCONF_VALUE_LIST);
-                       list = gconf_value_get_list(value);
-                       //type = gconf_value_get_list_type (value);
-                       //g_assert(type == GCONF_VALUE_INT);
-                       g_debug("list length = %d", g_slist_length(list));
-                       //g_debug("type of elements in list: %d", type);
-                       for (i = 0; i < g_slist_length(list); i++){     
-                               prot = GPOINTER_TO_INT (g_slist_nth_data(list, i));
-                               g_debug("prot = %d", prot);
-                               // lrm TODO - copy the list to account info
-                               //acc_info->server_protocols = g_slist_append(acc_info->server_protocols, 
g_slist_nth_data(list, i));
-                       }
+               if (strcmp(key, EAS_ACCOUNT_KEY_SERVERURI) == 0) {
+                       acc_info->serverUri = g_variant_dup_string (value, NULL);
+                       g_debug("serverUri = %s", g_variant_dup_string (value, NULL));
+               } else if (strcmp(key, EAS_ACCOUNT_KEY_USERNAME) == 0) {
+                       acc_info->username = g_variant_dup_string (value, NULL);
+               } else if (strcmp(key, EAS_ACCOUNT_KEY_POLICY_KEY) == 0) {
+                       acc_info->policy_key = g_variant_dup_string (value, NULL);
+               } else if (strcmp(key, EAS_ACCOUNT_KEY_CALENDAR_FOLDER) == 0) {
+                       acc_info->calendar_folder = g_variant_dup_string (value, NULL);
+               } else if (strcmp(key, EAS_ACCOUNT_KEY_CONTACT_FOLDER) == 0) {
+                       acc_info->contact_folder = g_variant_dup_string (value, NULL);
+               } else if (strcmp(key, EAS_ACCOUNT_KEY_PASSWORD) == 0) {
+                       acc_info->password = g_variant_dup_string (value, NULL);
+               } else if (strcmp(key, EAS_ACCOUNT_KEY_PROTOCOL_VERSION) == 0) {
+                       acc_info->protocol_version = g_variant_get_int32(value);
+               } else if (strcmp(key, EAS_ACCOUNT_KEY_DEVICE_ID) == 0) {
+                       acc_info->device_id = g_variant_dup_string (value, NULL);
+               } else if (strcmp(key, EAS_ACCOUNT_KEY_SERVER_PROTOCOLS) == 0) {
+                       // TODO copy the list to account info
                } else {
-                       g_warning ("Unknown key: %s (value: [%s])\n", keyname, gconf_value_get_string 
(value));
+                       g_warning ("Unknown key: %s (value: [%s])\n", key, g_variant_get_string (value, 
NULL));
                }
+               i++;
        }
 
-       g_free (serveruri_Key_path);        serveruri_Key_path       = NULL;
-       g_free (username_Key_path);         username_Key_path        = NULL;
-       g_free (policy_key_Key_path);       policy_key_Key_path      = NULL;
-       g_free (calendar_folder_Key_path);  calendar_folder_Key_path = NULL;
-       g_free (contact_folder_Key_path);   contact_folder_Key_path  = NULL;
-       g_free (password_Key_path);         password_Key_path        = NULL;
-       g_free (username_Key_path);         username_Key_path        = NULL;
-       g_free (protover_Key_path);         protover_Key_path        = NULL;
-       g_free (devover_Key_path);          devover_Key_path         = NULL;
-       g_free (servoprotovers_Key_path);   servoprotovers_Key_path  = NULL;
-
-       /* g_debug("eas_account_list_set_account_info--"); */
+       g_strfreev (key_list);
+       g_object_unref (setting);
+
+       g_debug("eas_account_list_set_account_info--");
 }
 
 #if 0
@@ -259,7 +198,7 @@ void dump_accounts(EasAccountList *account_list)
        gint i=0;
 
        num_of_accounts = e_list_length((EList*)account_list);          
-       g_debug(" There are %d accounts in GConf \n", num_of_accounts );
+       g_debug(" There are %d accounts in GSettings \n", num_of_accounts );
        
        if (!num_of_accounts)
                return;
@@ -284,23 +223,42 @@ void dump_accounts(EasAccountList *account_list)
 }
 #endif
 
+static GSList *
+g_settings_get_all_accounts (GSettings *setting)
+{
+       gchar **accounts = g_settings_get_strv(setting, "accounts");
+       int len = g_strv_length (accounts);
+       GSList *list = NULL;
+       int i = 0;
+
+       while (i < len) {
+               list = g_slist_append (list, accounts[i]);
+               g_debug("account = %s", accounts[i]);
+               i++;
+       }
+
+       // Shouldn't use g_strfreev here
+       g_free (accounts);
+
+       return list;
+}
+
 static void
-gconf_accounts_changed (GConfClient *client, guint cnxn_id,
-                       GConfEntry *entry, gpointer user_data)
+gsettings_accounts_changed (GSettings *setting, gchar *key, gpointer user_data)
 {
        GSList *list = NULL, *l= NULL, *new_accounts = NULL;
        EasAccount *account = NULL;
        EList *old_accounts = NULL;
        EIterator *iter = NULL;
        gchar *uid = NULL;
-       GSList* gconf_entry_list = NULL;
+       //GSList* key_list = NULL;
        GSList *account_uids_list = NULL;
        EasAccountInfo* acc_info = NULL; 
        EasAccountList *account_list = NULL;
 
        account_list = user_data;
        
-       g_debug("gconf_accounts_changed++");
+       g_debug("gsettings_accounts_changed++");
        old_accounts = e_list_duplicate (E_LIST (account_list));
 
        /*      
@@ -308,7 +266,7 @@ gconf_accounts_changed (GConfClient *client, guint cnxn_id,
        these should be the account uids. Loop through these uids and populate
        the account list.
        */
-       account_uids_list = gconf_client_all_dirs (client, EAS_ACCOUNT_ROOT, NULL);
+       account_uids_list = g_settings_get_all_accounts (setting);
 
        for (l = account_uids_list; l; l = l->next) 
        {
@@ -316,13 +274,18 @@ gconf_accounts_changed (GConfClient *client, guint cnxn_id,
                if (!uid)
                        continue;
                /*
-                Get the key/value for an account with a given uid from GConf,
+                Get the key/value for an account with a given uid from GSettings,
                 save it in EasAccountInfo and append it to the "list" object
                */
                acc_info = g_new0 (EasAccountInfo, 1);
-               gconf_entry_list = gconf_client_all_entries(client, uid, NULL);
 
-               eas_account_list_set_account_info(acc_info, uid, gconf_entry_list);
+               g_debug("Enter");
+               g_debug("UID = %s\n", uid);
+
+               eas_account_list_set_account_info(acc_info, uid);
+
+
+               g_debug("Leave");
 
 #if 0
                g_debug ("uid              = %s", acc_info->uid); 
@@ -336,17 +299,8 @@ gconf_accounts_changed (GConfClient *client, guint cnxn_id,
 #endif
 
                list = g_slist_append (list, acc_info);
-
-               // free gconf_entry_list
-               if (gconf_entry_list) 
-               {
-                       g_slist_foreach (gconf_entry_list, (GFunc) gconf_entry_free, NULL);
-                       g_slist_free (gconf_entry_list);
-                       gconf_entry_list=NULL;
-               }
        }
 
-
        if (account_uids_list) {
                g_slist_foreach (account_uids_list, (GFunc) g_free, NULL);
                g_slist_free (account_uids_list);
@@ -435,7 +389,7 @@ gconf_accounts_changed (GConfClient *client, guint cnxn_id,
        
        g_object_unref (iter);
        g_object_unref (old_accounts);
-       g_debug("gconf_accounts_changed--");
+       g_debug("gsettings_accounts_changed--");
 }
 
 static gpointer
@@ -455,57 +409,49 @@ free_func (gpointer data, gpointer closure)
 
 /**
  * eas_account_list_new:
- * @client: a #GConfClient
+ * @setting: a #GSettings
  *
  * Reads the list of accounts from @client and listens for changes.
  * Will emit %account_added, %account_changed, and %account_removed
- * signals according to notifications from GConf.
+ * signals according to notifications from GSettings.
  *
  * You can modify the list using e_list_append(), e_list_remove(), and
  * e_iterator_delete(). After adding, removing, or changing accounts,
  * you must call eas_account_list_save() to push the changes back to
- * GConf.
+ * GSettings.
  *
  * Returns: the list of accounts
  **/
 EasAccountList *
-eas_account_list_new (GConfClient *gconf)
+eas_account_list_new (GSettings *setting)
 {
        EasAccountList *account_list;
        g_debug("eas_account_list_new++");
-       g_return_val_if_fail (GCONF_IS_CLIENT (gconf), NULL);
 
        account_list = g_object_new (EAS_TYPE_ACCOUNT_LIST, NULL);
-       eas_account_list_construct (account_list, gconf);
+       eas_account_list_construct (account_list, setting);
 
        g_debug("eas_account_list_new--");
        return account_list;
 }
 
 void
-eas_account_list_construct (EasAccountList *account_list, GConfClient *gconf)
+eas_account_list_construct (EasAccountList *account_list, GSettings *setting)
 {
-       g_return_if_fail (GCONF_IS_CLIENT (gconf));
-
        g_debug("eas_account_list_construct++");
        
        e_list_construct (E_LIST (account_list), copy_func, free_func, NULL);
-       account_list->priv->gconf = gconf;
-       g_object_ref (gconf);
+       account_list->priv->setting = setting;
+       g_object_ref (setting);
 
-       gconf_client_add_dir (account_list->priv->gconf,
-                            EAS_ACCOUNT_ROOT,
-                             GCONF_CLIENT_PRELOAD_RECURSIVE, NULL);
-       
-       account_list->priv->notify_id =
-               gconf_client_notify_add (account_list->priv->gconf,
-                                        EAS_ACCOUNT_ROOT,
-                                        gconf_accounts_changed, account_list,
-                                        NULL, NULL);
+       g_signal_connect (setting,
+                       "changed", 
+                       G_CALLBACK (gsettings_accounts_changed), 
+                       account_list);
 
-       gconf_accounts_changed (account_list->priv->gconf,
-                               account_list->priv->notify_id,
-                               NULL, account_list);
+       gsettings_accounts_changed (account_list->priv->setting,
+                               "accounts",
+                               account_list);
 
        g_debug("eas_account_list_construct--");
 }
@@ -524,96 +470,53 @@ eas_account_list_save_account(EasAccountList *account_list,
                return;
        }
 
-       if (eas_account_get_uri(account)){
-               gchar* serveruri_Key_path = NULL;
-               serveruri_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_SERVERURI);
+       gchar *account_address = g_strdup_printf ("/org/meego/activesyncd/account/%s/", uid);
+
+
+               g_debug("Path is %s\n", account_address);
                
-               gconf_client_set_string (account_list->priv->gconf,
-                                                               serveruri_Key_path,
-                                                               eas_account_get_uri(account),
-                                                               NULL);
-               g_free(serveruri_Key_path);
-               serveruri_Key_path = NULL;
+       GSettings *setting = g_settings_new_with_path ("org.meego.activesyncd.account", account_address);
+               
+       g_free (account_address);
+       account_address = NULL;
+
+       if (eas_account_get_uri(account)){
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_SERVERURI, eas_account_get_uri(account));
        }
 
        if (eas_account_get_username(account)){
-               gchar* username_Key_path = NULL;
-               username_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_USERNAME);
-               
-               gconf_client_set_string (account_list->priv->gconf,
-                                               username_Key_path,
-                                               eas_account_get_username(account),
-                                               NULL);
-               g_free(username_Key_path);
-               username_Key_path = NULL;
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_USERNAME, eas_account_get_username(account));
        }
        
        if (eas_account_get_policy_key(account)){
-               gchar* policy_key_Key_path = NULL;
-               policy_key_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_POLICY_KEY);
-               gconf_client_set_string (account_list->priv->gconf,
-                                                               policy_key_Key_path,
-                                                               eas_account_get_policy_key(account),
-                                                                       NULL);
-               g_free(policy_key_Key_path);
-               policy_key_Key_path = NULL;
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_POLICY_KEY, 
eas_account_get_policy_key(account));
        }
+
        if (eas_account_get_contact_folder(account)){
-               gchar* contact_folder_Key_path = NULL;
-               contact_folder_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_CONTACT_FOLDER);
-               gconf_client_set_string (account_list->priv->gconf,
-                                                               contact_folder_Key_path,
-                                                               eas_account_get_contact_folder(account),
-                                                                       NULL);
-               g_free(contact_folder_Key_path);
-               contact_folder_Key_path = NULL;
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_CONTACT_FOLDER, 
eas_account_get_contact_folder(account));
        }
+
        if (eas_account_get_calendar_folder(account)){
-               gchar* calendar_folder_Key_path = NULL;
-               calendar_folder_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_CALENDAR_FOLDER);
-               gconf_client_set_string (account_list->priv->gconf,
-                                                               calendar_folder_Key_path,
-                                                               eas_account_get_calendar_folder(account),
-                                                                       NULL);
-               g_free(calendar_folder_Key_path);
-               calendar_folder_Key_path = NULL;
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_CALENDAR_FOLDER, 
eas_account_get_calendar_folder(account));
        }
 
        if (eas_account_get_password(account)){
-               gchar* password_Key_path = NULL;
-               password_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_PASSWORD);
-
-               gconf_client_set_string (account_list->priv->gconf,
-                                               password_Key_path,
-                                               eas_account_get_password(account),
-                                               NULL);
-               g_free (password_Key_path);
-               password_Key_path = NULL;
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_PASSWORD, eas_account_get_password(account));
        }
 
        if (eas_account_get_protocol_version(account)){
-               gchar* protover_Key_path = NULL;
-               protover_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_PROTOCOL_VERSION);
-
-               gconf_client_set_int (account_list->priv->gconf,
-                                     protover_Key_path,
-                                     eas_account_get_protocol_version(account),
-                                     NULL);
-               g_free (protover_Key_path);
-               protover_Key_path = NULL;
+               g_settings_set_int (setting, EAS_ACCOUNT_KEY_PROTOCOL_VERSION, 
eas_account_get_protocol_version(account));
        }
+
        if (eas_account_get_device_id(account)){
-               gchar* devover_Key_path = NULL;
-               devover_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_DEVICE_ID);
-
-               gconf_client_set_string (account_list->priv->gconf,
-                                         devover_Key_path,
-                                         eas_account_get_device_id(account),
-                                         NULL);
-               g_free (devover_Key_path);
-               devover_Key_path = NULL;
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_DEVICE_ID, 
eas_account_get_device_id(account));
        }
 
+       g_debug("Sync now\n");
+
+       g_settings_sync ();
+       g_object_unref(setting);
+
        g_debug("eas_account_list_save_account--");
 }
 
@@ -627,103 +530,51 @@ eas_account_list_save_account_from_info(EasAccountList *account_list,
        
        uid = acc_info->uid;
 
-       if (acc_info->serverUri){
-               gchar* serveruri_Key_path = NULL;
-               serveruri_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_SERVERURI);
+       gchar *account_address = g_strdup_printf ("/org/meego/activesyncd/account/%s/", uid);
+
+               g_debug("Path is %s\n", account_address);
                
-               gconf_client_set_string (account_list->priv->gconf,
-                                                               serveruri_Key_path,
-                                                               acc_info->serverUri,
-                                                               NULL);
+       GSettings *setting = g_settings_new_with_path ("org.meego.activesyncd.account", account_address);
                
-               g_free(serveruri_Key_path);
-               serveruri_Key_path = NULL;              
+       g_free (account_address);
+       account_address = NULL;
+
+       if (acc_info->serverUri){
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_SERVERURI, acc_info->serverUri);
        }
 
        if (acc_info->username){
-               gchar* username_Key_path = NULL;
-               username_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_USERNAME);
-               
-               gconf_client_set_string (account_list->priv->gconf,
-                                               username_Key_path,
-                                               acc_info->username,
-                                               NULL);
-               g_free(username_Key_path);
-               username_Key_path = NULL;
-
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_USERNAME, acc_info->username);
        }
 
        if (acc_info->policy_key){
-               gchar* policy_key_Key_path = NULL;
-               policy_key_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_POLICY_KEY);
-               gconf_client_set_string (account_list->priv->gconf,
-                                                               policy_key_Key_path,
-                                                               acc_info->policy_key,
-                                                                       NULL);
-               g_free(policy_key_Key_path);
-               policy_key_Key_path = NULL;
-
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_POLICY_KEY, acc_info->policy_key);
        }
 
        if (acc_info->contact_folder){
-               gchar* contact_folder_Key_path = NULL;
-               contact_folder_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_CALENDAR_FOLDER);
-               gconf_client_set_string (account_list->priv->gconf,
-                                                               contact_folder_Key_path,
-                                                               acc_info->contact_folder,
-                                                                       NULL);
-               g_free(contact_folder_Key_path);
-               contact_folder_Key_path = NULL;
-
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_CONTACT_FOLDER, acc_info->contact_folder);
        }
 
        if (acc_info->calendar_folder){
-               gchar* calendar_folder_Key_path = NULL;
-               calendar_folder_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_CONTACT_FOLDER);
-               gconf_client_set_string (account_list->priv->gconf,
-                                                               calendar_folder_Key_path,
-                                                               acc_info->calendar_folder,
-                                                                       NULL);
-               g_free(calendar_folder_Key_path);
-               calendar_folder_Key_path = NULL;
-
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_CALENDAR_FOLDER, acc_info->calendar_folder);
        }
 
        if (acc_info->password){
-               gchar* password_Key_path = NULL;
-               password_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_PASSWORD);
-
-               gconf_client_set_string (account_list->priv->gconf,
-                                               password_Key_path,
-                                               acc_info->password,
-                                               NULL);
-               g_free (password_Key_path);
-               password_Key_path = NULL;
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_PASSWORD, acc_info->password);
        }
 
        if (acc_info->protocol_version){
-               gchar* protover_Key_path = NULL;
-               protover_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_PROTOCOL_VERSION);
-
-               gconf_client_set_int (account_list->priv->gconf,
-                                     protover_Key_path,
-                                     acc_info->protocol_version,
-                                     NULL);
-               g_free (protover_Key_path);
-               protover_Key_path = NULL;
+               g_settings_set_int (setting, EAS_ACCOUNT_KEY_PROTOCOL_VERSION, acc_info->protocol_version);
        }
 
        if (acc_info->device_id){
-               gchar* devover_Key_path = NULL;
-               devover_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_DEVICE_ID);
-
-               gconf_client_set_string (account_list->priv->gconf,
-                                               devover_Key_path,
-                                               acc_info->device_id,
-                                               NULL);
-               g_free (devover_Key_path);
-               devover_Key_path = NULL;
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_DEVICE_ID, acc_info->device_id);
        }
+
+       g_debug("Sync now\n");
+
+       g_settings_sync ();
+       g_object_unref(setting);
        
        
        g_debug("eas_account_list_save_account--");
@@ -734,7 +585,7 @@ eas_account_list_save_account_from_info(EasAccountList *account_list,
  * eas_account_list_save:
  * @account_list: an #EasAccountList
  *
- * Saves @account_list to GConf. Signals will be emitted for changes.
+ * Saves @account_list to GSettings. Signals will be emitted for changes.
  **/
 
 void
@@ -776,8 +627,6 @@ eas_account_list_save_list (EasAccountList *account_list)
                list = g_slist_remove (list, list->data);
        }
 
-       gconf_client_suggest_sync (account_list->priv->gconf, NULL);
-
        g_debug("eas_account_list_save--");
 }
 
@@ -793,133 +642,63 @@ eas_account_list_save_item(EasAccountList *account_list,
 
        uid = eas_account_get_uid(account);
        
+       gchar *account_address = g_strdup_printf ("/org/meego/activesyncd/account/%s/", uid);
+
+               g_debug("Path is %s\n", account_address);
+               
+       GSettings *setting = g_settings_new_with_path ("org.meego.activesyncd.account", account_address);
+               
+       g_free (account_address);
+       account_address = NULL;
+
        switch (type) {
        case EAS_ACCOUNT_SERVER_URI:
                {
-               gchar* serveruri_Key_path = NULL;
-               serveruri_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_SERVERURI);
-               gconf_client_set_string (account_list->priv->gconf,
-                                                               serveruri_Key_path,
-                                                               eas_account_get_uri(account),
-                                                               NULL);
-               
-               g_free(serveruri_Key_path);
-               serveruri_Key_path = NULL;              
-
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_SERVERURI, eas_account_get_uri(account));
                }
                break;
        case EAS_ACCOUNT_USERNAME:
                {
-               gchar* username_Key_path = NULL;
-               username_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_USERNAME);
-               gconf_client_set_string (account_list->priv->gconf,
-                                                               username_Key_path,
-                                                               eas_account_get_username(account),
-                                                               NULL);
-               g_free(username_Key_path);
-               username_Key_path = NULL;
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_USERNAME, eas_account_get_username(account));
                }
                break;
        case EAS_ACCOUNT_POLICY_KEY:
                {
-               gchar* policy_key_Key_path = NULL;
-               policy_key_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_POLICY_KEY);
-               gconf_client_set_string (account_list->priv->gconf,
-                                                               policy_key_Key_path,
-                                                               eas_account_get_policy_key(account),
-                                                                       NULL);
-               g_free(policy_key_Key_path);
-               policy_key_Key_path = NULL;
-
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_POLICY_KEY, 
eas_account_get_policy_key(account));
                }
                break;
        case EAS_ACCOUNT_CALENDAR_FOLDER:
                {
-               gchar* calendar_folder_Key_path = NULL;
-               calendar_folder_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_CALENDAR_FOLDER);
-               gconf_client_set_string (account_list->priv->gconf,
-                                                               calendar_folder_Key_path,
-                                                               eas_account_get_calendar_folder(account),
-                                                                       NULL);
-               g_free(calendar_folder_Key_path);
-               calendar_folder_Key_path = NULL;
-
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_CALENDAR_FOLDER, 
eas_account_get_calendar_folder(account));
                }
                break;
        case EAS_ACCOUNT_CONTACT_FOLDER:
                {
-               gchar* contact_folder_Key_path = NULL;
-               contact_folder_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_CONTACT_FOLDER);
-               gconf_client_set_string (account_list->priv->gconf,
-                                                               contact_folder_Key_path,
-                                                               eas_account_get_contact_folder(account),
-                                                                       NULL);
-               g_free(contact_folder_Key_path);
-               contact_folder_Key_path = NULL;
-
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_CONTACT_FOLDER, 
eas_account_get_contact_folder(account));
                }
                break;
        case EAS_ACCOUNT_PASSWORD:
                {
-               gchar* password_Key_path = NULL;
-               password_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_PASSWORD);
-               gconf_client_set_string (account_list->priv->gconf,
-                                                               password_Key_path,
-                                                               eas_account_get_password(account),
-                                                               NULL);
-
-               g_free (password_Key_path);
-               password_Key_path = NULL;
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_PASSWORD, eas_account_get_password(account));
                }
                break;
        case EAS_ACCOUNT_PROTOCOL_VERSION:
                {
-               gchar* protover_Key_path = NULL;
-               protover_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_PROTOCOL_VERSION);
-               gconf_client_set_int (account_list->priv->gconf,
-                                     protover_Key_path,
-                                     eas_account_get_protocol_version(account),
-                                     NULL);
-               g_free(protover_Key_path);
-               protover_Key_path = NULL;
-
+               g_settings_set_int (setting, EAS_ACCOUNT_KEY_PROTOCOL_VERSION, 
eas_account_get_protocol_version(account));
                }
                break;
        case EAS_ACCOUNT_DEVICE_ID:
                {
-               gchar* devover_Key_path = NULL;
-               devover_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_DEVICE_ID);
-               gconf_client_set_string (account_list->priv->gconf,
-                                                               devover_Key_path,
-                                                               eas_account_get_device_id(account),
-                                                               NULL);
-
-               g_free (devover_Key_path);
-               devover_Key_path = NULL;
+               g_settings_set_string (setting, EAS_ACCOUNT_KEY_DEVICE_ID, 
eas_account_get_device_id(account));
                }
                break;
        case EAS_ACCOUNT_SERVER_PROTOCOLS:
                {
-               gboolean ret;
-
-               gchar* server_protocols_Key_path = NULL;
-               g_debug("EAS_ACCOUNT_SERVER_PROTOCOLS");
-               server_protocols_Key_path = get_key_absolute_path(uid, EAS_ACCOUNT_KEY_SERVER_PROTOCOLS);
-               ret = gconf_client_set_list (account_list->priv->gconf,
-                                                               server_protocols_Key_path,
-                                                               GCONF_VALUE_INT,
-                                                               eas_account_get_server_protocols(account),
-                                                               NULL);
-               if(!ret){
-                       g_warning("Failed to set server protocol list");
-               }
-                               
-               g_free (server_protocols_Key_path);
-               server_protocols_Key_path = NULL;                       
+               //TODO set server protocols in setting 
                }
                break;
        default:
-               g_warning("GConf item Type ( %d ) is not supported", type);
+               g_warning("GSettings item Type ( %d ) is not supported", type);
                break;
        }
 
diff --git a/libeasaccount/src/eas-account-list.h b/libeasaccount/src/eas-account-list.h
index 91a9aef..a42dc2a 100644
--- a/libeasaccount/src/eas-account-list.h
+++ b/libeasaccount/src/eas-account-list.h
@@ -34,18 +34,18 @@
 #endif
 
 #include "eas-account.h"
-#include <gconf/gconf-client.h>
+#include <gio/gio.h>
 
 #define EAS_ACCOUNT_ROOT                       "/apps/activesyncd/accounts"
-#define EAS_ACCOUNT_KEY_SERVERURI      "/serverUri"
-#define EAS_ACCOUNT_KEY_USERNAME       "/username"
-#define EAS_ACCOUNT_KEY_POLICY_KEY     "/policy_key"
-#define EAS_ACCOUNT_KEY_CONTACT_FOLDER "/contact_folder"
-#define EAS_ACCOUNT_KEY_CALENDAR_FOLDER        "/calendar_folder"
-#define EAS_ACCOUNT_KEY_PASSWORD       "/password"
-#define EAS_ACCOUNT_KEY_DEVICE_ID      "/device_id"
-#define EAS_ACCOUNT_KEY_PROTOCOL_VERSION "/protocol_version"
-#define EAS_ACCOUNT_KEY_SERVER_PROTOCOLS "/server_protocols"
+#define EAS_ACCOUNT_KEY_SERVERURI      "serveruri"
+#define EAS_ACCOUNT_KEY_USERNAME       "username"
+#define EAS_ACCOUNT_KEY_POLICY_KEY     "policy-key"
+#define EAS_ACCOUNT_KEY_CONTACT_FOLDER "contact-folder"
+#define EAS_ACCOUNT_KEY_CALENDAR_FOLDER        "calendar-folder"
+#define EAS_ACCOUNT_KEY_PASSWORD       "password"
+#define EAS_ACCOUNT_KEY_DEVICE_ID      "device-id"
+#define EAS_ACCOUNT_KEY_PROTOCOL_VERSION "protocol-version"
+#define EAS_ACCOUNT_KEY_SERVER_PROTOCOLS "server-protocols"
 
 /* Standard GObject macros */
 #define EAS_TYPE_ACCOUNT_LIST \
@@ -107,9 +107,9 @@ struct _EasAccountListClass {
 };
 
 GType          eas_account_list_get_type               (void) G_GNUC_CONST;
-EasAccountList *       eas_account_list_new            (GConfClient *client);
+EasAccountList *       eas_account_list_new            (GSettings *setting);
 void           eas_account_list_construct      (EasAccountList *account_list,
-                                                GConfClient *client);
+                                                GSettings *setting);
 void           eas_account_list_save_list              (EasAccountList *account_list);
 
 void           eas_account_list_add            (EasAccountList *account_list,
diff --git a/org.meego.activesyncd.account.gschema.xml b/org.meego.activesyncd.account.gschema.xml
new file mode 100644
index 0000000..29df976
--- /dev/null
+++ b/org.meego.activesyncd.account.gschema.xml
@@ -0,0 +1,31 @@
+<schemalist>
+       <schema id="org.meego.activesyncd.account">
+               <key name='username' type='s'>
+                       <default>''</default>
+               </key>
+               <key name='serveruri' type='s'>
+                       <default>''</default>
+               </key>
+               <key name='policy-key' type='s'>
+                       <default>''</default>
+               </key>
+               <key name='calendar-folder' type='s'>
+                       <default>''</default>
+               </key>
+               <key name='contact-folder' type='s'>
+                       <default>''</default>
+               </key>
+               <key name='password' type='s'>
+                       <default>''</default>
+               </key>
+               <key name='protocol-version' type='i'>
+                       <default>0</default>
+               </key>
+               <key name='device-id' type='s'>
+                       <default>''</default>
+               </key>
+               <key name='server-protocols' type='as'>
+                       <default>[]</default>
+               </key>
+       </schema>
+</schemalist>
diff --git a/org.meego.activesyncd.gschema.xml b/org.meego.activesyncd.gschema.xml
new file mode 100644
index 0000000..ccfa5f9
--- /dev/null
+++ b/org.meego.activesyncd.gschema.xml
@@ -0,0 +1,13 @@
+<schemalist>
+       <schema id="org.meego.activesyncd" path="/org/meego/activesyncd/">
+               <key name='accounts' type='as'>
+                       <default>[]</default>
+               </key>
+               <key name='device-type' type='s'>
+                       <default>''</default>
+               </key>
+               <key name='device-id' type='s'>
+                       <default>''</default>
+               </key>
+       </schema>
+</schemalist>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]