[evolution-ews] e_ews_connection_create_folder(): Add EwsFolderType argument.



commit 1202cc73ac2437d966a3a5122e48f8583e577e75
Author: Matthew Barnes <mbarnes redhat com>
Date:   Fri Aug 3 09:46:37 2012 -0400

    e_ews_connection_create_folder(): Add EwsFolderType argument.

 src/camel/camel-ews-store.c   |    4 +-
 src/server/e-ews-connection.c |   59 ++++++++++++++++++++++++++++++++++++++---
 src/server/e-ews-connection.h |    2 +
 3 files changed, 59 insertions(+), 6 deletions(-)
---
diff --git a/src/camel/camel-ews-store.c b/src/camel/camel-ews-store.c
index 59a554c..fb27310 100644
--- a/src/camel/camel-ews-store.c
+++ b/src/camel/camel-ews-store.c
@@ -752,8 +752,8 @@ ews_create_folder_sync (CamelStore *store,
 	success = e_ews_connection_create_folder_sync (
 		connection,
 		EWS_PRIORITY_MEDIUM, fid,
-		FALSE, folder_name, &folder_id,
-		cancellable, &local_error);
+		FALSE, folder_name, EWS_FOLDER_TYPE_MAILBOX,
+		&folder_id, cancellable, &local_error);
 
 	g_object_unref (connection);
 
diff --git a/src/server/e-ews-connection.c b/src/server/e-ews-connection.c
index 1ba41dc..5d893d9 100644
--- a/src/server/e-ews-connection.c
+++ b/src/server/e-ews-connection.c
@@ -118,6 +118,7 @@ struct _EwsAsyncData {
 	gchar *sync_state;
 	gboolean includes_last_item;
 	EwsDelegateDeliver deliver_to;
+	EwsFolderType folder_type;
 };
 
 struct _EwsNode {
@@ -1107,9 +1108,32 @@ ews_handle_create_folders_param (ESoapParameter *soapparam,
 	ESoapParameter *param, *node;
 	EwsFolderId *fid = NULL;
 	GSList *fids = NULL;
+	const gchar *folder_element;
+
+	switch (async_data->folder_type) {
+		case EWS_FOLDER_TYPE_MAILBOX:
+			folder_element = "Folder";
+			break;
+		case EWS_FOLDER_TYPE_CALENDAR:
+			folder_element = "CalendarFolder";
+			break;
+		case EWS_FOLDER_TYPE_CONTACTS:
+			folder_element = "ContactsFolder";
+			break;
+		case EWS_FOLDER_TYPE_SEARCH:
+			folder_element = "SearchFolder";
+			break;
+		case EWS_FOLDER_TYPE_TASKS:
+			folder_element = "TasksFolder";
+			break;
+		default:
+			g_warn_if_reached ();
+			folder_element = "Folder";
+			break;
+	}
 
 	node = e_soap_parameter_get_first_child_by_name (soapparam, "Folders");
-	node = e_soap_parameter_get_first_child_by_name (node, "Folder");
+	node = e_soap_parameter_get_first_child_by_name (node, folder_element);
 	param = e_soap_parameter_get_first_child_by_name (node, "FolderId");
 
 	fid = g_new0 (EwsFolderId, 1);
@@ -4849,6 +4873,7 @@ e_ews_connection_create_folder (EEwsConnection *cnc,
                                 const gchar *parent_folder_id,
                                 gboolean is_distinguished_id,
                                 const gchar *folder_name,
+                                EwsFolderType folder_type,
                                 GCancellable *cancellable,
                                 GAsyncReadyCallback callback,
                                 gpointer user_data)
@@ -4856,6 +4881,7 @@ e_ews_connection_create_folder (EEwsConnection *cnc,
 	ESoapMessage *msg;
 	GSimpleAsyncResult *simple;
 	EwsAsyncData *async_data;
+	const gchar *folder_element;
 
 	g_return_if_fail (cnc != NULL);
 
@@ -4876,8 +4902,30 @@ e_ews_connection_create_folder (EEwsConnection *cnc,
 
 	e_soap_message_end_element (msg);
 
+	switch (folder_type) {
+		case EWS_FOLDER_TYPE_MAILBOX:
+			folder_element = "Folder";
+			break;
+		case EWS_FOLDER_TYPE_CALENDAR:
+			folder_element = "CalendarFolder";
+			break;
+		case EWS_FOLDER_TYPE_CONTACTS:
+			folder_element = "ContactsFolder";
+			break;
+		case EWS_FOLDER_TYPE_QUERY:
+			folder_element = "SearchFolder";
+			break;
+		case EWS_FOLDER_TYPE_TASKS:
+			folder_element = "TasksFolder";
+			break;
+		default:
+			g_warn_if_reached ();
+			folder_element = "Folder";
+			break;
+	}
+
 	e_soap_message_start_element (msg, "Folders", "messages", NULL);
-	e_soap_message_start_element (msg, "Folder", NULL, NULL);
+	e_soap_message_start_element (msg, folder_element, NULL, NULL);
 	e_ews_message_write_string_parameter (msg, "DisplayName", NULL, folder_name);
 
 	e_soap_message_end_element (msg);
@@ -4890,6 +4938,8 @@ e_ews_connection_create_folder (EEwsConnection *cnc,
 		e_ews_connection_create_folder);
 
 	async_data = g_new0 (EwsAsyncData, 1);
+	async_data->folder_type = folder_type;
+
 	g_simple_async_result_set_op_res_gpointer (
 		simple, async_data, (GDestroyNotify) async_data_free);
 
@@ -4933,6 +4983,7 @@ e_ews_connection_create_folder_sync (EEwsConnection *cnc,
                                      const gchar *parent_folder_id,
                                      gboolean is_distinguished_id,
                                      const gchar *folder_name,
+                                     EwsFolderType folder_type,
                                      EwsFolderId **folder_id,
                                      GCancellable *cancellable,
                                      GError **error)
@@ -4947,8 +4998,8 @@ e_ews_connection_create_folder_sync (EEwsConnection *cnc,
 
 	e_ews_connection_create_folder (
 		cnc, pri, parent_folder_id,
-		is_distinguished_id,
-		folder_name, cancellable,
+		is_distinguished_id, folder_name,
+		folder_type, cancellable,
 		e_async_closure_callback, closure);
 
 	result = e_async_closure_wait (closure);
diff --git a/src/server/e-ews-connection.h b/src/server/e-ews-connection.h
index 5660747..7d08a5a 100644
--- a/src/server/e-ews-connection.h
+++ b/src/server/e-ews-connection.h
@@ -520,6 +520,7 @@ void		e_ews_connection_create_folder	(EEwsConnection *cnc,
 						 const gchar *parent_folder_id,
 						 gboolean is_distinguished_id,
 						 const gchar *folder_name,
+						 EwsFolderType folder_type,
 						 GCancellable *cancellable,
 						 GAsyncReadyCallback callback,
 						 gpointer user_data);
@@ -534,6 +535,7 @@ gboolean	e_ews_connection_create_folder_sync
 						 const gchar *parent_folder_id,
 						 gboolean is_distinguished_id,
 						 const gchar *folder_name,
+						 EwsFolderType folder_type,
 						 EwsFolderId **folder_id,
 						 GCancellable *cancellable,
 						 GError **error);



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