[evolution-mapi] Bug #666952 - Wrong date in message list
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-mapi] Bug #666952 - Wrong date in message list
- Date: Tue, 3 Jan 2012 15:23:18 +0000 (UTC)
commit ad228fd205c32288729c530bcb42ff86451092e9
Author: Milan Crha <mcrha redhat com>
Date: Tue Jan 3 16:22:44 2012 +0100
Bug #666952 - Wrong date in message list
src/camel/camel-mapi-folder.c | 25 +++++++++++++++++++++----
src/libexchangemapi/e-mapi-mail-utils.c | 23 +++++++++++++++++------
src/libexchangemapi/e-mapi-utils.c | 2 +-
3 files changed, 39 insertions(+), 11 deletions(-)
---
diff --git a/src/camel/camel-mapi-folder.c b/src/camel/camel-mapi-folder.c
index c993b4f..543db40 100644
--- a/src/camel/camel-mapi-folder.c
+++ b/src/camel/camel-mapi-folder.c
@@ -492,6 +492,8 @@ gather_object_summary_cb (EMapiConnection *conn,
info = camel_folder_summary_get (gos->folder->summary, uid_str);
if (!info) {
+ CamelMapiMessageInfo *minfo;
+
is_new = TRUE;
if (transport_headers && *transport_headers) {
@@ -519,15 +521,16 @@ gather_object_summary_cb (EMapiConnection *conn,
}
if (!info) {
- CamelMapiMessageInfo *minfo;
const gchar *subject, *message_id, *references, *in_reply_to, *display_to, *display_cc;
- const struct FILETIME *delivery_time;
+ const struct FILETIME *delivery_time, *submit_time;
const uint32_t *msg_size;
+ gint offset = 0;
gchar *formatted_addr, *from_name, *from_email;
CamelAddress *to_addr, *cc_addr, *bcc_addr;
subject = e_mapi_util_find_array_propval (&object->properties, PR_SUBJECT_UNICODE);
- delivery_time = e_mapi_util_find_array_propval (&object->properties, PR_MESSAGE_DELIVERY_TIME);
+ delivery_time = e_mapi_util_find_array_propval (&object->properties, PidTagMessageDeliveryTime);
+ submit_time = e_mapi_util_find_array_propval (&object->properties, PidTagClientSubmitTime);
msg_size = e_mapi_util_find_array_propval (&object->properties, PR_MESSAGE_SIZE);
message_id = e_mapi_util_find_array_propval (&object->properties, PR_INTERNET_MESSAGE_ID);
references = e_mapi_util_find_array_propval (&object->properties, PR_INTERNET_REFERENCES);
@@ -540,9 +543,15 @@ gather_object_summary_cb (EMapiConnection *conn,
minfo->info.uid = camel_pstring_strdup (uid_str);
minfo->info.subject = camel_pstring_strdup (subject);
- minfo->info.date_sent = minfo->info.date_received = e_mapi_util_filetime_to_time_t (delivery_time);
+ minfo->info.date_sent = e_mapi_util_filetime_to_time_t (submit_time);
+ minfo->info.date_received = e_mapi_util_filetime_to_time_t (delivery_time);
minfo->info.size = msg_size ? *msg_size : 0;
+ if (minfo->info.date_sent != 0)
+ minfo->info.date_sent = camel_header_decode_date (ctime (&minfo->info.date_sent), &offset);
+ if (minfo->info.date_received != 0)
+ minfo->info.date_received = camel_header_decode_date (ctime (&minfo->info.date_received), &offset);
+
/* Threading related properties */
mapi_set_message_id (minfo, message_id);
if (references || in_reply_to)
@@ -595,6 +604,14 @@ gather_object_summary_cb (EMapiConnection *conn,
g_free (from_name);
g_free (from_email);
}
+
+ minfo = (CamelMapiMessageInfo *) info;
+ if (minfo) {
+ if (minfo->info.date_sent == 0)
+ minfo->info.date_sent = minfo->info.date_received;
+ if (minfo->info.date_received == 0)
+ minfo->info.date_received = minfo->info.date_sent;
+ }
}
if (info) {
diff --git a/src/libexchangemapi/e-mapi-mail-utils.c b/src/libexchangemapi/e-mapi-mail-utils.c
index 6e9b016..1bafca3 100644
--- a/src/libexchangemapi/e-mapi-mail-utils.c
+++ b/src/libexchangemapi/e-mapi-mail-utils.c
@@ -660,7 +660,7 @@ e_mapi_mail_utils_object_to_message (EMapiConnection *conn, /* const */ EMapiObj
g_object_unref (part);
} else {
CamelInternetAddress *to_addr, *cc_addr, *bcc_addr;
- const struct FILETIME *delivery_time;
+ const struct FILETIME *msg_date;
gchar *name, *email;
to_addr = camel_internet_address_new ();
@@ -677,13 +677,15 @@ e_mapi_mail_utils_object_to_message (EMapiConnection *conn, /* const */ EMapiObj
g_object_unref (cc_addr);
g_object_unref (bcc_addr);
- delivery_time = e_mapi_util_find_array_propval (&object->properties, PidTagMessageDeliveryTime);
- if (delivery_time) {
- time_t received_time, actual_time;
+ msg_date = e_mapi_util_find_array_propval (&object->properties, PidTagClientSubmitTime);
+ if (!msg_date)
+ msg_date = e_mapi_util_find_array_propval (&object->properties, PidTagMessageDeliveryTime);
+ if (msg_date) {
+ time_t msg_date_t, actual_time;
gint offset = 0;
- received_time = e_mapi_util_filetime_to_time_t (delivery_time);
- actual_time = camel_header_decode_date (ctime (&received_time), &offset);
+ msg_date_t = e_mapi_util_filetime_to_time_t (msg_date);
+ actual_time = camel_header_decode_date (ctime (&msg_date_t), &offset);
camel_mime_message_set_date (msg, actual_time, offset);
}
@@ -1369,6 +1371,15 @@ e_mapi_mail_utils_message_to_object (struct _CamelMimeMessage *message,
e_mapi_util_time_t_to_filetime (msg_time, &msg_date);
+ set_value (PidTagClientSubmitTime, &msg_date);
+ }
+
+ msg_time = camel_mime_message_get_date_received (message, &msg_time_offset);
+ if (msg_time != 0) {
+ struct FILETIME msg_date = { 0 };
+
+ e_mapi_util_time_t_to_filetime (msg_time, &msg_date);
+
set_value (PidTagMessageDeliveryTime, &msg_date);
}
diff --git a/src/libexchangemapi/e-mapi-utils.c b/src/libexchangemapi/e-mapi-utils.c
index ed99c18..d7b075f 100644
--- a/src/libexchangemapi/e-mapi-utils.c
+++ b/src/libexchangemapi/e-mapi-utils.c
@@ -874,7 +874,7 @@ e_mapi_util_filetime_to_time_t (const struct FILETIME *filetime)
NTTIME nt;
if (!filetime)
- return (time_t) -1;
+ return (time_t) 0;
nt = filetime->dwHighDateTime;
nt = nt << 32;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]