[evolution-mapi] Camel : Added append_message.



commit dd192cb67223e19d257fb84d38888d1f2d82e6a4
Author: Johnny Jacob <jjohnny novell com>
Date:   Mon Aug 10 09:01:17 2009 +0530

    Camel : Added append_message.

 src/camel/ChangeLog           |    4 +++
 src/camel/camel-mapi-folder.c |   57 +++++++++++++++++++++++++++++++++++++++-
 src/camel/camel-mapi-utils.c  |    1 -
 3 files changed, 59 insertions(+), 3 deletions(-)
---
diff --git a/src/camel/ChangeLog b/src/camel/ChangeLog
index 062b482..b669ea1 100644
--- a/src/camel/ChangeLog
+++ b/src/camel/ChangeLog
@@ -1,3 +1,7 @@
+2009-08-06  Johnny Jacob  <jjohnny novell com>
+
+	* camel-mapi-folder.c (mapi_append_message): Added.
+
 2009-08-05  Johnny Jacob  <jjohnny novell com>
 
 	Bug 590242 â?? apply filter automatically to new message doesn't work.
diff --git a/src/camel/camel-mapi-folder.c b/src/camel/camel-mapi-folder.c
index 971767b..d82d60d 100644
--- a/src/camel/camel-mapi-folder.c
+++ b/src/camel/camel-mapi-folder.c
@@ -55,6 +55,7 @@
 #include "camel-mapi-folder.h"
 #include "camel-mapi-private.h"
 #include "camel-mapi-summary.h"
+#include "camel-mapi-utils.h"
 
 #define DEBUG_FN( ) printf("----%u %s\n", (unsigned int)pthread_self(), __FUNCTION__);
 #define SUMMARY_FETCH_BATCH_COUNT 150
@@ -1908,6 +1909,57 @@ mapi_cmp_uids (CamelFolder *folder, const char *uid1, const char *uid2)
 }
 
 static void
+mapi_append_message (CamelFolder *folder, CamelMimeMessage *message,
+		const CamelMessageInfo *info, gchar **appended_uid,
+		CamelException *ex)
+{
+	CamelMapiStore *mapi_store= CAMEL_MAPI_STORE(folder->parent_store);
+	CamelOfflineStore *offline = (CamelOfflineStore *) folder->parent_store;
+	CamelAddress *from = NULL, *recipients = NULL;
+	CamelStoreInfo *si;
+
+	MapiItem *item = NULL;
+	mapi_id_t fid = 0, mid = 0;
+	const gchar *folder_id;
+
+	/*Reject outbox / sent & trash*/
+	si = camel_store_summary_path ((CamelStoreSummary *)mapi_store->summary,
+				       folder->full_name);
+
+	if (si->flags & CAMEL_FOLDER_TYPE_TRASH ||
+	    si->flags & CAMEL_FOLDER_TYPE_OUTBOX) {
+		camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, 
+				      _("Cannot append message to folder '%s'"),
+				      folder->full_name);
+		return;
+	}
+
+	if (offline->state == CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL) {
+		camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, 
+				      _("Offline. '%s'"));
+		return;
+	}
+
+	folder_id =  camel_mapi_store_folder_id_lookup (mapi_store,
+							folder->full_name);
+
+	exchange_mapi_util_mapi_id_from_string (folder_id, &fid);
+
+	/* Convert MIME to Item */
+	from = (CamelAddress *) camel_mime_message_get_from (message);
+	recipients = (CamelAddress *) camel_mime_message_get_recipients (message, "to");
+
+	item = camel_mapi_utils_mime_to_item (message, from, recipients, ex);
+
+	mid = exchange_mapi_create_item (olFolderOutbox, fid, NULL, NULL, 
+					 camel_mapi_utils_create_item_build_props, item,
+					 item->recipients, item->attachments,
+					 item->generic_streams, 0);
+
+	*appended_uid = exchange_mapi_util_mapi_ids_to_uid(fid, mid);
+}
+
+static void
 camel_mapi_folder_class_init (CamelMapiFolderClass *camel_mapi_folder_class)
 {
 	CamelFolderClass *camel_folder_class = CAMEL_FOLDER_CLASS (camel_mapi_folder_class);
@@ -1923,7 +1975,7 @@ camel_mapi_folder_class_init (CamelMapiFolderClass *camel_mapi_folder_class)
 /* 	camel_folder_class->get_message_info = mapi_get_message_info; */
 /* 	camel_folder_class->search_by_uids = mapi_folder_search_by_uids;  */
 	camel_folder_class->search_free = mapi_folder_search_free;
-/* 	camel_folder_class->append_message = mapi_append_message; */
+	camel_folder_class->append_message = mapi_append_message;
 	camel_folder_class->refresh_info = mapi_refresh_info;
 	camel_folder_class->sync = mapi_sync;
 	camel_folder_class->expunge = mapi_expunge;
@@ -1974,7 +2026,8 @@ camel_mapi_folder_get_type (void)
 }
 
 CamelFolder *
-camel_mapi_folder_new(CamelStore *store, const char *folder_name, const char *folder_dir, guint32 flags, CamelException *ex)
+camel_mapi_folder_new (CamelStore *store, const char *folder_name, const char *folder_dir,
+		      guint32 flags, CamelException *ex)
 {
 
 	CamelFolder	*folder = NULL;
diff --git a/src/camel/camel-mapi-utils.c b/src/camel/camel-mapi-utils.c
index 329197b..cc6008b 100644
--- a/src/camel/camel-mapi-utils.c
+++ b/src/camel/camel-mapi-utils.c
@@ -346,7 +346,6 @@ camel_mapi_utils_mime_to_item (CamelMimeMessage *message, CamelAddress *from, Ca
 		}
 	}
 
-	item->attachments = attach_list;
 	item->recipients = recipient_list;
 	
 	return item;



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