[evolution-activesync: 4/6] Code of migration from GConf to GSettings
- From: dwmw2 <dwmw2 src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-activesync: 4/6] Code of migration from GConf to GSettings
- Date: Wed, 12 Aug 2015 22:05:51 +0000 (UTC)
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]