[evolution-mapi] Camel : Added append_message.
- From: Johnny Jacob <jjohnny src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [evolution-mapi] Camel : Added append_message.
- Date: Mon, 10 Aug 2009 03:39:49 +0000 (UTC)
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]