[evolution-mapi] Recognize Replied and Forwarded mail messages
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-mapi] Recognize Replied and Forwarded mail messages
- Date: Tue, 24 Jan 2012 14:36:20 +0000 (UTC)
commit d6f3bde4f5a7d856833df0448bb6a494189406ef
Author: Milan Crha <mcrha redhat com>
Date: Tue Jan 24 15:35:32 2012 +0100
Recognize Replied and Forwarded mail messages
src/camel/camel-mapi-folder.c | 22 ++++++++++++++++++----
src/libexchangemapi/e-mapi-connection.c | 5 +++--
src/libexchangemapi/e-mapi-mail-utils.c | 9 +++++++++
3 files changed, 30 insertions(+), 6 deletions(-)
---
diff --git a/src/camel/camel-mapi-folder.c b/src/camel/camel-mapi-folder.c
index 0eaa248..5dbe644 100644
--- a/src/camel/camel-mapi-folder.c
+++ b/src/camel/camel-mapi-folder.c
@@ -378,7 +378,7 @@ gather_object_offline_cb (EMapiConnection *conn,
if (msg) {
gchar *uid_str;
const mapi_id_t *pmid;
- const uint32_t *pmsg_flags;
+ const uint32_t *pmsg_flags, *picon_index;
const struct FILETIME *last_modified;
uint32_t msg_flags;
CamelMessageInfo *info;
@@ -387,6 +387,7 @@ gather_object_offline_cb (EMapiConnection *conn,
pmid = e_mapi_util_find_array_propval (&object->properties, PR_MID);
pmsg_flags = e_mapi_util_find_array_propval (&object->properties, PR_MESSAGE_FLAGS);
last_modified = e_mapi_util_find_array_propval (&object->properties, PR_LAST_MODIFICATION_TIME);
+ picon_index = e_mapi_util_find_array_propval (&object->properties, PidTagIconIndex);
if (!pmid) {
g_debug ("%s: Received message [%d/%d] without PR_MID", G_STRFUNC, obj_index, obj_total);
@@ -412,7 +413,7 @@ gather_object_offline_cb (EMapiConnection *conn,
info = camel_folder_summary_info_new_from_message (gos->folder->summary, msg, NULL);
if (info) {
CamelMapiMessageInfo *minfo = (CamelMapiMessageInfo *) info;
- guint32 flags = 0, mask = CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_ATTACHMENTS;
+ guint32 flags = 0, mask = CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_ATTACHMENTS | CAMEL_MESSAGE_ANSWERED | CAMEL_MESSAGE_FORWARDED;
minfo->info.uid = camel_pstring_strdup (uid_str);
@@ -426,6 +427,12 @@ gather_object_offline_cb (EMapiConnection *conn,
flags |= CAMEL_MESSAGE_SEEN;
if ((msg_flags & MSGFLAG_HASATTACH) != 0)
flags |= CAMEL_MESSAGE_ATTACHMENTS;
+ if (picon_index) {
+ if (*picon_index == 0x105)
+ flags |= CAMEL_MESSAGE_ANSWERED;
+ if (*picon_index == 0x106)
+ flags |= CAMEL_MESSAGE_FORWARDED;
+ }
if ((camel_message_info_flags (info) & mask) != flags) {
if (is_new)
@@ -480,7 +487,7 @@ gather_object_summary_cb (EMapiConnection *conn,
struct GatherObjectSummaryData *gos = user_data;
gchar *uid_str;
const mapi_id_t *pmid;
- const uint32_t *pmsg_flags;
+ const uint32_t *pmsg_flags, *picon_index;
const struct FILETIME *last_modified;
const gchar *transport_headers;
uint32_t msg_flags;
@@ -495,6 +502,7 @@ gather_object_summary_cb (EMapiConnection *conn,
pmsg_flags = e_mapi_util_find_array_propval (&object->properties, PR_MESSAGE_FLAGS);
last_modified = e_mapi_util_find_array_propval (&object->properties, PR_LAST_MODIFICATION_TIME);
transport_headers = e_mapi_util_find_array_propval (&object->properties, PR_TRANSPORT_MESSAGE_HEADERS_UNICODE);
+ picon_index = e_mapi_util_find_array_propval (&object->properties, PidTagIconIndex);
if (!pmid) {
g_debug ("%s: Received message [%d/%d] without PR_MID", G_STRFUNC, obj_index, obj_total);
@@ -639,7 +647,7 @@ gather_object_summary_cb (EMapiConnection *conn,
if (info) {
CamelMapiMessageInfo *minfo = (CamelMapiMessageInfo *) info;
- guint32 flags = 0, mask = CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_ATTACHMENTS;
+ guint32 flags = 0, mask = CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_ATTACHMENTS | CAMEL_MESSAGE_ANSWERED | CAMEL_MESSAGE_FORWARDED;
if (last_modified) {
minfo->last_modified = e_mapi_util_filetime_to_time_t (last_modified);
@@ -651,6 +659,12 @@ gather_object_summary_cb (EMapiConnection *conn,
flags |= CAMEL_MESSAGE_SEEN;
if ((msg_flags & MSGFLAG_HASATTACH) != 0)
flags |= CAMEL_MESSAGE_ATTACHMENTS;
+ if (picon_index) {
+ if (*picon_index == 0x105)
+ flags |= CAMEL_MESSAGE_ANSWERED;
+ if (*picon_index == 0x106)
+ flags |= CAMEL_MESSAGE_FORWARDED;
+ }
if ((camel_message_info_flags (info) & mask) != flags) {
if (is_new)
diff --git a/src/libexchangemapi/e-mapi-connection.c b/src/libexchangemapi/e-mapi-connection.c
index 39a3dae..033d93c 100644
--- a/src/libexchangemapi/e-mapi-connection.c
+++ b/src/libexchangemapi/e-mapi-connection.c
@@ -2835,13 +2835,14 @@ e_mapi_connection_transfer_summary (EMapiConnection *conn,
goto cleanup;
}
- tags = set_SPropTagArray (mem_ctx, 6,
+ tags = set_SPropTagArray (mem_ctx, 7,
PR_FID,
PR_MID,
PR_MESSAGE_FLAGS,
PR_LAST_MODIFICATION_TIME,
PR_MESSAGE_CLASS,
- PR_TRANSPORT_MESSAGE_HEADERS_UNICODE);
+ PR_TRANSPORT_MESSAGE_HEADERS_UNICODE,
+ PidTagIconIndex);
ms = GetProps (&obj_message, MAPI_PROPS_SKIP_NAMEDID_CHECK | MAPI_UNICODE, tags, &lpProps, &prop_count);
if (ms == MAPI_E_SUCCESS) {
diff --git a/src/libexchangemapi/e-mapi-mail-utils.c b/src/libexchangemapi/e-mapi-mail-utils.c
index 3dec2cc..e42caa4 100644
--- a/src/libexchangemapi/e-mapi-mail-utils.c
+++ b/src/libexchangemapi/e-mapi-mail-utils.c
@@ -1397,6 +1397,15 @@ e_mapi_mail_utils_message_to_object (struct _CamelMimeMessage *message,
set_value (PidTagInternetCodepage, &ui32);
if ((create_flags & E_MAPI_CREATE_FLAG_SUBMIT) == 0) {
+ if ((message_camel_flags & CAMEL_MESSAGE_ANSWERED) != 0 ||
+ (message_camel_flags & CAMEL_MESSAGE_ANSWERED_ALL) != 0) {
+ ui32 = 0x105;
+ set_value (PidTagIconIndex, &ui32);
+ } else if ((message_camel_flags & CAMEL_MESSAGE_FORWARDED) != 0) {
+ ui32 = 0x106;
+ set_value (PidTagIconIndex, &ui32);
+ }
+
ui32 = 0;
if (message_camel_flags & CAMEL_MESSAGE_SEEN)
ui32 |= MSGFLAG_READ;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]