[evolution-ews] Adapt to CamelNetworkSettings changes.



commit 3bef37fbbcbac6ab84f056f669b25382a4a46373
Author: Matthew Barnes <mbarnes redhat com>
Date:   Fri Oct 21 09:46:31 2011 -0400

    Adapt to CamelNetworkSettings changes.

 src/camel/camel-ews-folder.c    |   18 +++-
 src/camel/camel-ews-settings.c  |  209 ++++++++++++++++++++++++++++++++++++---
 src/camel/camel-ews-settings.h  |    7 ++
 src/camel/camel-ews-store.c     |   64 +++++++-----
 src/camel/camel-ews-transport.c |   34 +++++--
 src/camel/camel-ews-utils.c     |   60 +++++++-----
 6 files changed, 313 insertions(+), 79 deletions(-)
---
diff --git a/src/camel/camel-ews-folder.c b/src/camel/camel-ews-folder.c
index f37923e..ee19160 100644
--- a/src/camel/camel-ews-folder.c
+++ b/src/camel/camel-ews-folder.c
@@ -1439,19 +1439,29 @@ ews_folder_dispose (GObject *object)
 static void
 ews_folder_constructed (GObject *object)
 {
-	CamelFolder *folder;
+	CamelNetworkSettings *network_settings;
+	CamelSettings *settings;
 	CamelStore *parent_store;
-	CamelURL *url;
+	CamelService *service;
+	CamelFolder *folder;
 	const gchar *full_name;
+	const gchar *host;
+	const gchar *user;
 	gchar *description;
 
 	folder = CAMEL_FOLDER (object);
 	full_name = camel_folder_get_full_name (folder);
 	parent_store = camel_folder_get_parent_store (folder);
-	url = camel_service_get_camel_url (CAMEL_SERVICE (parent_store));
+
+	service = CAMEL_SERVICE (parent_store);
+	settings = camel_service_get_settings (service);
+
+	network_settings = CAMEL_NETWORK_SETTINGS (settings);
+	host = camel_network_settings_get_host (network_settings);
+	user = camel_network_settings_get_user (network_settings);
 
 	description = g_strdup_printf (
-		"%s %s:%s", url->user, url->host, full_name);
+		"%s %s:%s", user, host, full_name);
 	camel_folder_set_description (folder, description);
 	g_free (description);
 }
diff --git a/src/camel/camel-ews-settings.c b/src/camel/camel-ews-settings.c
index 7392332..70fb85e 100644
--- a/src/camel/camel-ews-settings.c
+++ b/src/camel/camel-ews-settings.c
@@ -18,18 +18,30 @@
 
 #include "camel-ews-settings.h"
 
+#define CAMEL_EWS_SETTINGS_GET_PRIVATE(obj) \
+	(G_TYPE_INSTANCE_GET_PRIVATE \
+	((obj), CAMEL_TYPE_EWS_SETTINGS, CamelEwsSettingsPrivate))
+
 struct _CamelEwsSettingsPrivate {
 	gboolean check_all;
 	gboolean filter_junk;
 	gboolean filter_junk_inbox;
+	gchar *email;
+	gchar *hosturl;
 };
 
 enum {
 	PROP_0,
-	PROP_SECURITY_METHOD,
+	PROP_AUTH_MECHANISM,
 	PROP_CHECK_ALL,
+	PROP_EMAIL,
 	PROP_FILTER_JUNK,
-	PROP_FILTER_JUNK_INBOX
+	PROP_FILTER_JUNK_INBOX,
+	PROP_HOST,
+	PROP_HOSTURL,
+	PROP_PORT,
+	PROP_SECURITY_METHOD,
+	PROP_USER
 };
 
 G_DEFINE_TYPE_WITH_CODE (
@@ -46,10 +58,10 @@ ews_settings_set_property (GObject *object,
                             GParamSpec *pspec)
 {
 	switch (property_id) {
-		case PROP_SECURITY_METHOD:
-			camel_network_settings_set_security_method (
+		case PROP_AUTH_MECHANISM:
+			camel_network_settings_set_auth_mechanism (
 				CAMEL_NETWORK_SETTINGS (object),
-				g_value_get_enum (value));
+				g_value_get_string (value));
 			return;
 
 		case PROP_CHECK_ALL:
@@ -58,6 +70,12 @@ ews_settings_set_property (GObject *object,
 				g_value_get_boolean (value));
 			return;
 
+		case PROP_EMAIL:
+			camel_ews_settings_set_email (
+				CAMEL_EWS_SETTINGS (object),
+				g_value_get_string (value));
+			return;
+
 		case PROP_FILTER_JUNK:
 			camel_ews_settings_set_filter_junk (
 				CAMEL_EWS_SETTINGS (object),
@@ -69,6 +87,36 @@ ews_settings_set_property (GObject *object,
 				CAMEL_EWS_SETTINGS (object),
 				g_value_get_boolean (value));
 			return;
+
+		case PROP_HOST:
+			camel_network_settings_set_host (
+				CAMEL_NETWORK_SETTINGS (object),
+				g_value_get_string (value));
+			return;
+
+		case PROP_HOSTURL:
+			camel_ews_settings_set_hosturl (
+				CAMEL_EWS_SETTINGS (object),
+				g_value_get_string (value));
+			return;
+
+		case PROP_PORT:
+			camel_network_settings_set_port (
+				CAMEL_NETWORK_SETTINGS (object),
+				g_value_get_uint (value));
+			return;
+
+		case PROP_SECURITY_METHOD:
+			camel_network_settings_set_security_method (
+				CAMEL_NETWORK_SETTINGS (object),
+				g_value_get_enum (value));
+			return;
+
+		case PROP_USER:
+			camel_network_settings_set_user (
+				CAMEL_NETWORK_SETTINGS (object),
+				g_value_get_string (value));
+			return;
 	}
 
 	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -81,10 +129,10 @@ ews_settings_get_property (GObject *object,
                             GParamSpec *pspec)
 {
 	switch (property_id) {
-		case PROP_SECURITY_METHOD:
-			g_value_set_enum (
+		case PROP_AUTH_MECHANISM:
+			g_value_set_string (
 				value,
-				camel_network_settings_get_security_method (
+				camel_network_settings_get_auth_mechanism (
 				CAMEL_NETWORK_SETTINGS (object)));
 			return;
 
@@ -95,6 +143,13 @@ ews_settings_get_property (GObject *object,
 				CAMEL_EWS_SETTINGS (object)));
 			return;
 
+		case PROP_EMAIL:
+			g_value_set_string (
+				value,
+				camel_ews_settings_get_email (
+				CAMEL_EWS_SETTINGS (object)));
+			return;
+
 		case PROP_FILTER_JUNK:
 			g_value_set_boolean (
 				value,
@@ -108,6 +163,41 @@ ews_settings_get_property (GObject *object,
 				camel_ews_settings_get_filter_junk_inbox (
 				CAMEL_EWS_SETTINGS (object)));
 			return;
+
+		case PROP_HOST:
+			g_value_set_string (
+				value,
+				camel_network_settings_get_host (
+				CAMEL_NETWORK_SETTINGS (object)));
+			return;
+
+		case PROP_HOSTURL:
+			g_value_set_string (
+				value,
+				camel_ews_settings_get_hosturl (
+				CAMEL_EWS_SETTINGS (object)));
+			return;
+
+		case PROP_PORT:
+			g_value_set_uint (
+				value,
+				camel_network_settings_get_port (
+				CAMEL_NETWORK_SETTINGS (object)));
+			return;
+
+		case PROP_SECURITY_METHOD:
+			g_value_set_enum (
+				value,
+				camel_network_settings_get_security_method (
+				CAMEL_NETWORK_SETTINGS (object)));
+			return;
+
+		case PROP_USER:
+			g_value_set_string (
+				value,
+				camel_network_settings_get_user (
+				CAMEL_NETWORK_SETTINGS (object)));
+			return;
 	}
 
 	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -116,6 +206,13 @@ ews_settings_get_property (GObject *object,
 static void
 ews_settings_finalize (GObject *object)
 {
+	CamelEwsSettingsPrivate *priv;
+
+	priv = CAMEL_EWS_SETTINGS_GET_PRIVATE (object);
+
+	g_free (priv->email);
+	g_free (priv->hosturl);
+
 	/* Chain up to parent's finalize() method. */
 	G_OBJECT_CLASS (camel_ews_settings_parent_class)->finalize (object);
 }
@@ -135,10 +232,9 @@ camel_ews_settings_class_init (CamelEwsSettingsClass *class)
 	/* Inherited from CamelNetworkSettings. */
 	g_object_class_override_property (
 		object_class,
-		PROP_SECURITY_METHOD,
-		"security-method");
+		PROP_AUTH_MECHANISM,
+		"auth-mechanism");
 
-	/* Newly added properties */
 	g_object_class_install_property (
 		object_class,
 		PROP_CHECK_ALL,
@@ -153,6 +249,18 @@ camel_ews_settings_class_init (CamelEwsSettingsClass *class)
 
 	g_object_class_install_property (
 		object_class,
+		PROP_EMAIL,
+		g_param_spec_string (
+			"email",
+			"Email",
+			"Email",
+			NULL,
+			G_PARAM_READWRITE |
+			G_PARAM_CONSTRUCT |
+			G_PARAM_STATIC_STRINGS));
+
+	g_object_class_install_property (
+		object_class,
 		PROP_FILTER_JUNK,
 		g_param_spec_boolean (
 			"filter-junk",
@@ -174,13 +282,48 @@ camel_ews_settings_class_init (CamelEwsSettingsClass *class)
 			G_PARAM_READWRITE |
 			G_PARAM_CONSTRUCT |
 			G_PARAM_STATIC_STRINGS));
+
+	/* Inherited from CamelNetworkSettings. */
+	g_object_class_override_property (
+		object_class,
+		PROP_HOST,
+		"host");
+
+	g_object_class_install_property (
+		object_class,
+		PROP_HOSTURL,
+		g_param_spec_string (
+			"hosturl",
+			"Host URL",
+			"Host URL",
+			NULL,
+			G_PARAM_READWRITE |
+			G_PARAM_CONSTRUCT |
+			G_PARAM_STATIC_STRINGS));
+
+	/* Inherited from CamelNetworkSettings. */
+	g_object_class_override_property (
+		object_class,
+		PROP_PORT,
+		"port");
+
+	/* Inherited from CamelNetworkSettings. */
+	g_object_class_override_property (
+		object_class,
+		PROP_SECURITY_METHOD,
+		"security-method");
+
+	/* Inherited from CamelNetworkSettings. */
+	g_object_class_override_property (
+		object_class,
+		PROP_USER,
+		"user");
 }
 
 static void
 camel_ews_settings_init (CamelEwsSettings *settings)
 {
-	settings->priv = G_TYPE_INSTANCE_GET_PRIVATE (settings, CAMEL_TYPE_EWS_SETTINGS, CamelEwsSettingsPrivate);
-
+	settings->priv = CAMEL_EWS_SETTINGS_GET_PRIVATE (settings);
 }
 
 /**
@@ -221,6 +364,26 @@ camel_ews_settings_set_check_all (CamelEwsSettings *settings,
 	g_object_notify (G_OBJECT (settings), "check-all");
 }
 
+const gchar *
+camel_ews_settings_get_email (CamelEwsSettings *settings)
+{
+	g_return_val_if_fail (CAMEL_IS_EWS_SETTINGS (settings), NULL);
+
+	return settings->priv->email;
+}
+
+void
+camel_ews_settings_set_email (CamelEwsSettings *settings,
+                              const gchar *email)
+{
+	g_return_if_fail (CAMEL_IS_EWS_SETTINGS (settings));
+
+	g_free (settings->priv->email);
+	settings->priv->email = g_strdup (email);
+
+	g_object_notify (G_OBJECT (settings), "email");
+}
+
 /**
  * camel_ews_settings_get_filter_junk:
  * @settings: a #CamelEwsSettings
@@ -300,3 +463,23 @@ camel_ews_settings_set_filter_junk_inbox (CamelEwsSettings *settings,
 
 	g_object_notify (G_OBJECT (settings), "filter-junk-inbox");
 }
+
+const gchar *
+camel_ews_settings_get_hosturl (CamelEwsSettings *settings)
+{
+	g_return_val_if_fail (CAMEL_IS_EWS_SETTINGS (settings), NULL);
+
+	return settings->priv->hosturl;
+}
+
+void
+camel_ews_settings_set_hosturl (CamelEwsSettings *settings,
+                                const gchar *hosturl)
+{
+	g_return_if_fail (CAMEL_IS_EWS_SETTINGS (settings));
+
+	g_free (settings->priv->hosturl);
+	settings->priv->hosturl = g_strdup (hosturl);
+
+	g_object_notify (G_OBJECT (settings), "hosturl");
+}
diff --git a/src/camel/camel-ews-settings.h b/src/camel/camel-ews-settings.h
index 068d040..1ca1a84 100644
--- a/src/camel/camel-ews-settings.h
+++ b/src/camel/camel-ews-settings.h
@@ -59,12 +59,19 @@ GType		camel_ews_settings_get_type			(void) G_GNUC_CONST;
 gboolean	camel_ews_settings_get_check_all		(CamelEwsSettings *settings);
 void		camel_ews_settings_set_check_all		(CamelEwsSettings *settings,
 								 gboolean check_all);
+const gchar *	camel_ews_settings_get_email			(CamelEwsSettings *settings);
+void		camel_ews_settings_set_email			(CamelEwsSettings *settings,
+								 const gchar *email);
 gboolean	camel_ews_settings_get_filter_junk		(CamelEwsSettings *settings);
 void		camel_ews_settings_set_filter_junk		(CamelEwsSettings *settings,
 								 gboolean filter_junk);
 gboolean	camel_ews_settings_get_filter_junk_inbox	(CamelEwsSettings *settings);
 void		camel_ews_settings_set_filter_junk_inbox	(CamelEwsSettings *settings,
 								 gboolean filter_junk_inbox);
+const gchar *	camel_ews_settings_get_hosturl			(CamelEwsSettings *settings);
+void		camel_ews_settings_set_hosturl			(CamelEwsSettings *settings,
+								 const gchar *hosturl);
+
 G_END_DECLS
 
 #endif /* CAMEL_EWS_SETTINGS_H */
diff --git a/src/camel/camel-ews-store.c b/src/camel/camel-ews-store.c
index 70c600f..e16fdf8 100644
--- a/src/camel/camel-ews-store.c
+++ b/src/camel/camel-ews-store.c
@@ -63,7 +63,6 @@
 
 struct _CamelEwsStorePrivate {
 
-	gchar *host_url;
 	time_t last_refresh_time;
 	GMutex *get_finfo_lock;
 	EEwsConnection *cnc;
@@ -71,8 +70,7 @@ struct _CamelEwsStorePrivate {
 
 extern CamelServiceAuthType camel_ews_password_authtype; /*for the query_auth_types function*/
 static gboolean	ews_store_construct	(CamelService *service, CamelSession *session,
-			 		 CamelProvider *provider, CamelURL *url,
-		 			 GError **error);
+			 		 CamelProvider *provider, GError **error);
 
 static void camel_ews_store_initable_init (GInitableIface *interface);
 static GInitableIface *parent_initable_interface;
@@ -89,18 +87,16 @@ ews_store_initable_init		(GInitable *initable,
 {
 	CamelService *service;
 	CamelSession *session;
-	CamelURL *url;
 	gboolean ret;
 	
 	service = CAMEL_SERVICE (initable);
-	url = camel_service_get_camel_url (service);
 	session = camel_service_get_session (service);
 
 	/* Chain up to parent interface's init() method. */
 	if (!parent_initable_interface->init (initable, cancellable, error))
 		return FALSE;
 
-	ret = ews_store_construct (service, session, NULL, url, error);
+	ret = ews_store_construct (service, session, NULL, error);
 
 	/* Add transport here ? */
 
@@ -117,8 +113,7 @@ camel_ews_store_initable_init (GInitableIface *interface)
 
 static gboolean
 ews_store_construct	(CamelService *service, CamelSession *session,
-			 CamelProvider *provider, CamelURL *url,
-			 GError **error)
+			 CamelProvider *provider, GError **error)
 {
 	CamelEwsStore *ews_store;
 	CamelEwsStorePrivate *priv;
@@ -143,15 +138,6 @@ ews_store_construct	(CamelService *service, CamelSession *session,
 	}
 	ews_store->storage_path = session_storage_path;
 
-	priv->host_url = g_strdup (camel_url_get_param (url, "hosturl"));
-	if (!priv->host_url) {
-		g_set_error (
-			error, CAMEL_STORE_ERROR,
-			CAMEL_STORE_ERROR_INVALID,
-			_("EWS service has no host URL"));
-		return FALSE;
-	}
-
 	/* Note. update account-listener plugin if filename is changed here, as it would remove the summary
 	   by forming the path itself */
 	g_mkdir_with_parents (ews_store->storage_path, 0700);
@@ -200,15 +186,21 @@ ews_store_authenticate	(EEwsConnection *cnc,
 			 SoupMessage *msg, SoupAuth *auth,
 			 gboolean retrying, gpointer data)
 {
+	CamelNetworkSettings *network_settings;
+	CamelSettings *settings;
 	CamelService *service = data;
-	CamelURL *url;
 	const gchar *password;
+	const gchar *user;
 
-	url = camel_service_get_camel_url (service);
 	password = camel_service_get_password (service);
+	settings = camel_service_get_settings (service);
+
+	network_settings = CAMEL_NETWORK_SETTINGS (settings);
+	user = camel_network_settings_get_user (network_settings);
+
 	g_return_if_fail (password != NULL);
 
-	e_ews_connection_authenticate (cnc, auth, url->user, password, NULL);
+	e_ews_connection_authenticate (cnc, auth, user, password, NULL);
 }
 
 static gboolean
@@ -216,14 +208,24 @@ ews_connect_sync (CamelService *service, GCancellable *cancellable, GError **err
 {
 	CamelEwsStore *ews_store;
 	CamelEwsStorePrivate *priv;
+	CamelEwsSettings *ews_settings;
+	CamelNetworkSettings *network_settings;
+	CamelSettings *settings;
 	CamelSession *session;
-	CamelURL *url;
+	const gchar *hosturl;
+	const gchar *user;
 	gboolean success;
 
 	ews_store = (CamelEwsStore *) service;
 	priv = ews_store->priv;
-	url = camel_service_get_camel_url (service);
 	session = camel_service_get_session (service);
+	settings = camel_service_get_settings (service);
+
+	network_settings = CAMEL_NETWORK_SETTINGS (settings);
+	user = camel_network_settings_get_user (network_settings);
+
+	ews_settings = CAMEL_EWS_SETTINGS (settings);
+	hosturl = camel_ews_settings_get_hosturl (ews_settings);
 
 	if (camel_service_get_connection_status (service) == CAMEL_SERVICE_DISCONNECTED)
 		return FALSE;
@@ -235,7 +237,7 @@ ews_connect_sync (CamelService *service, GCancellable *cancellable, GError **err
 		return TRUE;
 	}
 
-	priv->cnc = e_ews_connection_new (priv->host_url, url->user, NULL,
+	priv->cnc = e_ews_connection_new (hosturl, user, NULL,
 					  G_CALLBACK (ews_store_authenticate), service,
 					  error);
 
@@ -824,15 +826,22 @@ ews_rename_folder_sync	(CamelStore *store,
 gchar *
 ews_get_name (CamelService *service, gboolean brief)
 {
-	CamelURL *url;
+	CamelNetworkSettings *network_settings;
+	CamelSettings *settings;
+	const gchar *host;
+	const gchar *user;
+
+	settings = camel_service_get_settings (service);
 
-	url = camel_service_get_camel_url (service);
+	network_settings = CAMEL_NETWORK_SETTINGS (settings);
+	host = camel_network_settings_get_host (network_settings);
+	user = camel_network_settings_get_user (network_settings);
 
 	if (brief)
-		return g_strdup_printf(_("Exchange server %s"), url->host);
+		return g_strdup_printf(_("Exchange server %s"), host);
 	else
 		return g_strdup_printf(_("Exchange service for %s on %s"),
-				       url->user, url->host);
+				       user, host);
 }
 
 EEwsConnection *
@@ -906,7 +915,6 @@ ews_store_finalize (GObject *object)
 	ews_store = CAMEL_EWS_STORE (object);
 
 	g_free (ews_store->storage_path);
-	g_free (ews_store->priv->host_url);
 	g_mutex_free (ews_store->priv->get_finfo_lock);
 
 	/* Chain up to parent's finalize() method. */
diff --git a/src/camel/camel-ews-transport.c b/src/camel/camel-ews-transport.c
index b3797d4..74cddeb 100644
--- a/src/camel/camel-ews-transport.c
+++ b/src/camel/camel-ews-transport.c
@@ -30,6 +30,7 @@
 
 #include <glib/gi18n-lib.h>
 
+#include "camel-ews-settings.h"
 #include "camel-ews-store.h"
 #include "camel-ews-transport.h"
 #include "camel-ews-utils.h"
@@ -49,18 +50,23 @@ ews_transport_connect_sync (CamelService *service,
 
 static gchar *
 ews_transport_get_name (CamelService *service,
-                              gboolean brief)
+                        gboolean brief)
 {
-	CamelURL *url = camel_service_get_camel_url (service);
+	CamelNetworkSettings *network_settings;
+	CamelSettings *settings;
+	const gchar *host;
+
+	settings = camel_service_get_settings (service);
+
+	network_settings = CAMEL_NETWORK_SETTINGS (settings);
+	host = camel_network_settings_get_host (network_settings);
 
 	if (brief)
 		return g_strdup_printf (
-			_("Exchange server %s"),
-			url->host);
+			_("Exchange server %s"), host);
 	else
 		return g_strdup_printf (
-			_("Exchange mail delivery via %s"),
-			url->host);
+			_("Exchange mail delivery via %s"), host);
 }
 
 static gboolean
@@ -71,17 +77,25 @@ ews_send_to_sync (CamelTransport *transport,
 		  GCancellable *cancellable,
 		  GError **error)
 {
+	CamelNetworkSettings *network_settings;
+	CamelEwsSettings *ews_settings;
+	CamelSettings *settings;
 	CamelService *service;
 	EEwsConnection *cnc;
 	const gchar *host_url;
-	CamelURL *url;
+	const gchar *user;
 	gboolean res;
 
 	service = CAMEL_SERVICE (transport);
-	url = camel_service_get_camel_url (service);
-	host_url = camel_url_get_param (url, "hosturl");
+	settings = camel_service_get_settings (service);
+
+	ews_settings = CAMEL_EWS_SETTINGS (settings);
+	host_url = camel_ews_settings_get_hosturl (ews_settings);
+
+	network_settings = CAMEL_NETWORK_SETTINGS (settings);
+	user = camel_network_settings_get_user (network_settings);
 
-	cnc = e_ews_connection_find (host_url, url->user);
+	cnc = e_ews_connection_find (host_url, user);
 	if (!cnc) {
 		g_set_error (error, CAMEL_SERVICE_ERROR,
 			     CAMEL_SERVICE_ERROR_NOT_CONNECTED,
diff --git a/src/camel/camel-ews-utils.c b/src/camel/camel-ews-utils.c
index 77afcbd..3a8bcc2 100644
--- a/src/camel/camel-ews-utils.c
+++ b/src/camel/camel-ews-utils.c
@@ -30,6 +30,7 @@
 #include <glib/gi18n-lib.h>
 #include <glib/gstdio.h>
 
+#include "camel-ews-settings.h"
 #include "camel-ews-utils.h"
 #include "ews-esource-utils.h"
 #include "e-ews-message.h"
@@ -291,21 +292,6 @@ camel_ews_utils_build_folder_info (CamelEwsStore *store, const gchar *fid)
 {
 	CamelEwsStoreSummary *ews_summary = store->summary;
 	CamelFolderInfo *fi;
-	gchar *url;
-	CamelURL *curl;
-
-	curl = camel_service_get_camel_url (CAMEL_SERVICE (store));
-	url = camel_url_to_string (curl,
-			 CAMEL_URL_HIDE_PARAMS|
-			 CAMEL_URL_HIDE_AUTH);
-
-	if ( url[strlen (url) - 1] != '/') {
-		gchar *temp_url;
-
-		temp_url = g_strconcat (url, "/", NULL);
-		g_free ((gchar *)url);
-		url = temp_url;
-	}
 
 	fi = camel_folder_info_new ();
 	fi->full_name = camel_ews_store_summary_get_folder_full_name (ews_summary,
@@ -319,8 +305,6 @@ camel_ews_utils_build_folder_info (CamelEwsStore *store, const gchar *fid)
 	fi->total = camel_ews_store_summary_get_folder_total (ews_summary,
 							      fid, NULL);
 
-	g_free (url);
-
 	return fi;
 }
 
@@ -349,8 +333,18 @@ static void
 sync_deleted_folders (CamelEwsStore *store, GSList *deleted_folders)
 {
 	CamelEwsStoreSummary *ews_summary = store->summary;
+	CamelEwsSettings *ews_settings;
+	CamelSettings *settings;
+	CamelService *service;
+	const gchar *email;
 	GSList *l;
 
+	service = CAMEL_SERVICE (store);
+	settings = camel_service_get_settings (service);
+
+	ews_settings = CAMEL_EWS_SETTINGS (settings);
+	email = camel_ews_settings_get_email (ews_settings);
+
 	for (l = deleted_folders; l != NULL; l = g_slist_next (l)) {
 		const gchar *fid = l->data;
 		EwsFolderType ftype;
@@ -370,10 +364,9 @@ sync_deleted_folders (CamelEwsStore *store, GSList *deleted_folders)
 			g_clear_error (&error);
 		} else {
 			struct remove_esrc_data *remove_data = g_new0(struct remove_esrc_data, 1);
-			CamelURL *url = camel_service_get_camel_url (CAMEL_SERVICE (store));
 
 			remove_data->fid = g_strdup (fid);
-			remove_data->account_name = g_strdup (camel_url_get_param (url, "email"));
+			remove_data->account_name = g_strdup (email);
 			remove_data->ftype = ftype;
 
 			/* This uses GConf so has to be done in the main thread */
@@ -558,7 +551,24 @@ static gboolean ews_do_add_esource (gpointer user_data)
 static void
 sync_created_folders (CamelEwsStore *ews_store, GSList *created_folders)
 {
+	CamelNetworkSettings *network_settings;
+	CamelEwsSettings *ews_settings;
+	CamelSettings *settings;
+	CamelService *service;
 	GSList *l;
+	const gchar *email;
+	const gchar *hosturl;
+	const gchar *user;
+
+	service = CAMEL_SERVICE (ews_store);
+	settings = camel_service_get_settings (service);
+
+	ews_settings = CAMEL_EWS_SETTINGS (settings);
+	email = camel_ews_settings_get_email (ews_settings);
+	hosturl = camel_ews_settings_get_hosturl (ews_settings);
+
+	network_settings = CAMEL_NETWORK_SETTINGS (settings);
+	user = camel_network_settings_get_user (network_settings);
 
 	for (l = created_folders; l != NULL; l = g_slist_next (l)) {
 		EEwsFolder *folder = (EEwsFolder *) l->data;
@@ -571,17 +581,19 @@ sync_created_folders (CamelEwsStore *ews_store, GSList *created_folders)
 		    ftype == EWS_FOLDER_TYPE_TASKS ||
 		    ftype == EWS_FOLDER_TYPE_CONTACTS) {
 			struct add_esrc_data *add_data = g_new0 (struct add_esrc_data, 1);
-			CamelURL *url = camel_service_get_camel_url (CAMEL_SERVICE (ews_store));
+			CamelURL *url = camel_service_new_camel_url (service);
 
 			add_data->folder = g_object_ref (folder);
 			add_data->account_uri = camel_url_to_string (url, CAMEL_URL_HIDE_PARAMS);
-			add_data->account_name = g_strdup (camel_url_get_param (url, "email"));
-			add_data->username = g_strdup (url->user);
+			add_data->account_name = g_strdup (email);
+			add_data->username = g_strdup (user);
 			/* Duplicate... for now */
-			add_data->email_id = g_strdup (camel_url_get_param (url, "email"));
-			add_data->hosturl = g_strdup (camel_url_get_param (url, "hosturl"));
+			add_data->email_id = g_strdup (email);
+			add_data->hosturl = g_strdup (hosturl);
 			/* FIXME pass right refresh timeout */
 
+			camel_url_free (url);
+
 			/* This uses GConf so has to be done in the main thread */
 			g_idle_add_full (G_PRIORITY_DEFAULT, ews_do_add_esource, add_data, NULL);
 



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