diff options
Diffstat (limited to 'mail')
-rw-r--r-- | mail/message-list.c | 62 | ||||
-rw-r--r-- | mail/message-list.etspec | 6 |
2 files changed, 50 insertions, 18 deletions
diff --git a/mail/message-list.c b/mail/message-list.c index 571788b6c1..72f4893063 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -1650,10 +1650,15 @@ ml_tree_value_at_ex (ETreeModel *etm, tag = camel_message_info_user_tag (msg_info, "due-by"); if (tag && *tag) { + gint64 *res; + due_by = camel_header_decode_date (tag, NULL); - return GINT_TO_POINTER (due_by); + res = g_new0 (gint64, 1); + *res = (gint64) due_by; + + return res; } else { - return GINT_TO_POINTER (0); + return NULL; } } case COL_FOLLOWUP_FLAG: @@ -1678,21 +1683,31 @@ ml_tree_value_at_ex (ETreeModel *etm, return (gpointer) get_normalised_string (message_list, msg_info, col); case COL_SENT: { struct LatestData ld; + gint64 *res; + ld.sent = TRUE; ld.latest = 0; for_node_and_subtree_if_collapsed (message_list, node, msg_info, latest_foreach, &ld); - return GINT_TO_POINTER (ld.latest); + res = g_new0 (gint64, 1); + *res = (gint64) ld.latest; + + return res; } case COL_RECEIVED: { struct LatestData ld; + gint64 *res; + ld.sent = FALSE; ld.latest = 0; for_node_and_subtree_if_collapsed (message_list, node, msg_info, latest_foreach, &ld); - return GINT_TO_POINTER (ld.latest); + res = g_new0 (gint64, 1); + *res = (gint64) ld.latest; + + return res; } case COL_TO: str = camel_message_info_to (msg_info); @@ -1850,17 +1865,18 @@ ml_tree_value_at_ex (ETreeModel *etm, } static gchar * -filter_date (time_t date) +filter_date (const gint64 *pdate) { time_t nowdate = time (NULL); - time_t yesdate; + time_t yesdate, date; struct tm then, now, yesterday; gchar buf[26]; gboolean done = FALSE; - if (date == 0) + if (!pdate || *pdate == 0) return g_strdup (_("?")); + date = (time_t) *pdate; localtime_r (&date, &then); localtime_r (&nowdate, &now); if (then.tm_mday == now.tm_mday && @@ -2913,6 +2929,7 @@ message_list_sort_value_at (ETreeModel *tree_model, { MessageList *message_list; struct LatestData ld; + gint64 *res; message_list = MESSAGE_LIST (tree_model); @@ -2930,7 +2947,11 @@ message_list_sort_value_at (ETreeModel *tree_model, e_tree_model_node_traverse ( tree_model, path, latest_foreach, &ld); - return GINT_TO_POINTER (ld.latest); + + res = g_new0 (gint64, 1); + *res = (gint64) ld.latest; + + return res; } static gpointer @@ -2965,12 +2986,9 @@ message_list_duplicate_value (ETreeModel *tree_model, case COL_ATTACHMENT: case COL_DELETED: case COL_UNREAD: - case COL_SENT: - case COL_RECEIVED: case COL_SIZE: case COL_FOLLOWUP_FLAG: case COL_FOLLOWUP_FLAG_STATUS: - case COL_FOLLOWUP_DUE_BY: return (gpointer) value; case COL_FROM: @@ -2984,6 +3002,20 @@ message_list_duplicate_value (ETreeModel *tree_model, case COL_LABELS: return g_strdup (value); + case COL_SENT: + case COL_RECEIVED: + case COL_FOLLOWUP_DUE_BY: + if (value) { + gint64 *res; + const gint64 *pvalue = value; + + res = g_new0 (gint64, 1); + *res = *pvalue; + + return res; + } else + return value; + default: g_return_val_if_reached (NULL); } @@ -3001,12 +3033,9 @@ message_list_free_value (ETreeModel *tree_model, case COL_ATTACHMENT: case COL_DELETED: case COL_UNREAD: - case COL_SENT: - case COL_RECEIVED: case COL_SIZE: case COL_FOLLOWUP_FLAG: case COL_FOLLOWUP_FLAG_STATUS: - case COL_FOLLOWUP_DUE_BY: case COL_FROM: case COL_FROM_NORM: case COL_TO: @@ -3023,6 +3052,9 @@ message_list_free_value (ETreeModel *tree_model, case COL_MIXED_SENDER: case COL_MIXED_RECIPIENTS: case COL_LABELS: + case COL_SENT: + case COL_RECEIVED: + case COL_FOLLOWUP_DUE_BY: g_free (value); break; @@ -3133,7 +3165,7 @@ message_list_value_to_string (ETreeModel *tree_model, case COL_SENT: case COL_RECEIVED: case COL_FOLLOWUP_DUE_BY: - return filter_date (GPOINTER_TO_INT (value)); + return filter_date (value); case COL_SIZE: return filter_size (GPOINTER_TO_INT (value)); diff --git a/mail/message-list.etspec b/mail/message-list.etspec index 8d2a10e821..efbf8c4811 100644 --- a/mail/message-list.etspec +++ b/mail/message-list.etspec @@ -11,9 +11,9 @@ <ETableColumn model_col="5" compare_col="21" _title="Subject" expansion="1.6" minimum_width="32" resizable="true" cell="render_tree" compare="string" search="string"/> - <ETableColumn model_col="6" _title="Date" expansion="0.4" minimum_width="32" resizable="true" cell="render_date" compare="integer"/> + <ETableColumn model_col="6" _title="Date" expansion="0.4" minimum_width="32" resizable="true" cell="render_date" compare="pointer-integer64"/> - <ETableColumn model_col="7" _title="Received" expansion="0.4" minimum_width="32" resizable="true" cell="render_date" compare="integer"/> + <ETableColumn model_col="7" _title="Received" expansion="0.4" minimum_width="32" resizable="true" cell="render_date" compare="pointer-integer64"/> <ETableColumn model_col="8" compare_col="22" _title="To" expansion="1.0" minimum_width="32" resizable="true" cell="render_text" compare="address_compare" search="string" priority="5"/> @@ -23,7 +23,7 @@ <ETableColumn model_col="11" _title="Follow Up Flag" expansion="0.2" minimum_width="32" resizable="true" cell="render_text" compare="collate"/> - <ETableColumn model_col="12" _title="Due By" expansion="0.2" minimum_width="32" resizable="true" cell="render_date" compare="integer"/> + <ETableColumn model_col="12" _title="Due By" expansion="0.2" minimum_width="32" resizable="true" cell="render_date" compare="pointer-integer64"/> <ETableColumn model_col="13" _title="Location" expansion="0.2" minimum_width="32" resizable="true" cell="render_text" compare="collate"/> |