aboutsummaryrefslogtreecommitdiffstats
path: root/mail/message-list.c
diff options
context:
space:
mode:
authorJon Trowbridge <trow@ximian.com>2001-12-10 11:50:36 +0800
committerJon Trowbridge <trow@src.gnome.org>2001-12-10 11:50:36 +0800
commitb5e7713c8e99f2cddf309d3034108c18190fd3cb (patch)
treeb6b22ff8bdbb379e0e4e939c09df54a8dd52c447 /mail/message-list.c
parent098db6b2ad41196ee43d68e7f4f7d879d97d93b7 (diff)
downloadgsoc2013-evolution-b5e7713c8e99f2cddf309d3034108c18190fd3cb.tar
gsoc2013-evolution-b5e7713c8e99f2cddf309d3034108c18190fd3cb.tar.gz
gsoc2013-evolution-b5e7713c8e99f2cddf309d3034108c18190fd3cb.tar.bz2
gsoc2013-evolution-b5e7713c8e99f2cddf309d3034108c18190fd3cb.tar.lz
gsoc2013-evolution-b5e7713c8e99f2cddf309d3034108c18190fd3cb.tar.xz
gsoc2013-evolution-b5e7713c8e99f2cddf309d3034108c18190fd3cb.tar.zst
gsoc2013-evolution-b5e7713c8e99f2cddf309d3034108c18190fd3cb.zip
Implements marking messages as "Need Reply".
Implements marking messages as "Need Reply". 2001-12-09 Jon Trowbridge <trow@ximian.com> * mail-need-reply.xpm: Added a really, really ugly and awful icon to symbolize "message needs a reply". * Makefile.am (EXTRA_DIST): Added mail-need-reply.xpm. 2001-12-09 Jon Trowbridge <trow@ximian.com> * camel-folder-summary.c: Add "NeedsReply" to the flag_names array for CAMEL_MESSAGE_NEEDS_REPLY. * camel-folder-summary.h: Added CAMEL_MESSAGE_NEEDS_REPLY flag. 2001-12-09 Jon Trowbridge <trow@ximian.com> * vfoldertypes.xml: Add "Needs Reply" option to different status types. * filtertypes.xml: Add "Needs Reply" option to different status types. 2001-12-09 Jon Trowbridge <trow@ximian.com> * message-list.c: #include "art/mail-need-reply.xpm". (ml_tree_value_at): Adjust magic numbers, show "Need Reply" icon if the message needs reply. (message_list_create_extras): Adjust magic numbers to add new icon. (on_click): Changed to toggle between unread, read, and need reply when the status icon is clicked. * mail-callbacks.c (mark_as_needing_reply): Added. (mark_as_not_needing_reply): Added. Add "set" value to struct post_send_data. (composer_sent_cb): Use both "flags" and "set" elements of post_send_data when setting message flags. (mail_reply): Clear "Needs Reply" flag when we actually reply to a message. * folder-browser.c: Changed flag values to be given by bit-shifting (1<<5) vs. base-ten (32). Added CAN_MARK_DOESNT_NEED_REPLY flag. Added "Mark as Needing Reply" and "Mark as Not Needing Reply" elements to context menu. (on_right_click): Hide "Mark as (Not) Needing Reply" context menu elements as appropriate. svn path=/trunk/; revision=14946
Diffstat (limited to 'mail/message-list.c')
-rw-r--r--mail/message-list.c70
1 files changed, 48 insertions, 22 deletions
diff --git a/mail/message-list.c b/mail/message-list.c
index 61ff949ac5..02e6d234c9 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -47,6 +47,7 @@
#include "art/mail-new.xpm"
#include "art/mail-read.xpm"
#include "art/mail-replied.xpm"
+#include "art/mail-need-reply.xpm"
#include "art/attachment.xpm"
#include "art/priority-high.xpm"
#include "art/empty.xpm"
@@ -137,6 +138,7 @@ static struct {
{ mail_new_xpm, NULL },
{ mail_read_xpm, NULL },
{ mail_replied_xpm, NULL },
+ { mail_need_reply_xpm, NULL },
/* FIXME: Replace these with pixmaps for multiple_read and multiple_unread */
{ mail_new_xpm, NULL },
{ mail_read_xpm, NULL },
@@ -792,12 +794,14 @@ ml_tree_value_at (ETreeModel *etm, ETreePath path, int col, void *model_data)
child = e_tree_model_node_get_first_child(etm, path);
if (child && !e_tree_node_is_expanded(message_list->tree, path)) {
if (subtree_unread(message_list, child))
- return (void *)3;
- else
return (void *)4;
+ else
+ return (void *)5;
}
- if (msg_info->flags & CAMEL_MESSAGE_ANSWERED)
+ if (msg_info->flags & CAMEL_MESSAGE_NEEDS_REPLY)
+ return GINT_TO_POINTER (3);
+ else if (msg_info->flags & CAMEL_MESSAGE_ANSWERED)
return GINT_TO_POINTER (2);
else if (msg_info->flags & CAMEL_MESSAGE_SEEN)
return GINT_TO_POINTER (1);
@@ -962,28 +966,28 @@ message_list_create_extras (void)
extras = e_table_extras_new();
e_table_extras_add_pixbuf(extras, "status", states_pixmaps [0].pixbuf);
- e_table_extras_add_pixbuf(extras, "score", states_pixmaps [13].pixbuf);
- e_table_extras_add_pixbuf(extras, "attachment", states_pixmaps [6].pixbuf);
- e_table_extras_add_pixbuf(extras, "flagged", states_pixmaps [7].pixbuf);
+ e_table_extras_add_pixbuf(extras, "score", states_pixmaps [14].pixbuf);
+ e_table_extras_add_pixbuf(extras, "attachment", states_pixmaps [7].pixbuf);
+ e_table_extras_add_pixbuf(extras, "flagged", states_pixmaps [8].pixbuf);
e_table_extras_add_compare(extras, "address_compare", address_compare);
e_table_extras_add_compare(extras, "subject_compare", subject_compare);
- for (i = 0; i < 5; i++)
+ for (i = 0; i < 6; i++)
images [i] = states_pixmaps [i].pixbuf;
- e_table_extras_add_cell(extras, "render_message_status", e_cell_toggle_new (0, 5, images));
+ e_table_extras_add_cell(extras, "render_message_status", e_cell_toggle_new (0, 6, images));
for (i = 0; i < 2; i++)
- images [i] = states_pixmaps [i + 5].pixbuf;
+ images [i] = states_pixmaps [i + 6].pixbuf;
e_table_extras_add_cell(extras, "render_attachment", e_cell_toggle_new (0, 2, images));
- images [1] = states_pixmaps [7].pixbuf;
+ images [1] = states_pixmaps [8].pixbuf;
e_table_extras_add_cell(extras, "render_flagged", e_cell_toggle_new (0, 2, images));
for (i = 0; i < 7; i++)
- images[i] = states_pixmaps [i + 7].pixbuf;
+ images[i] = states_pixmaps [i + 8].pixbuf;
e_table_extras_add_cell(extras, "render_score", e_cell_toggle_new (0, 7, images));
@@ -2024,29 +2028,51 @@ on_click (ETree *tree, gint row, ETreePath path, gint col, GdkEvent *event, Mess
int flag;
CamelMessageInfo *info;
- if (col == COL_MESSAGE_STATUS)
- flag = CAMEL_MESSAGE_SEEN;
- else if (col == COL_FLAGGED)
+ if (col == COL_MESSAGE_STATUS) {
+ guint32 msg_flags;
+
+ info = get_message_info (list, path);
+ if (info == NULL) {
+ return FALSE;
+ }
+
+ msg_flags = camel_folder_get_message_flags (list->folder, camel_message_info_uid (info));
+
+ if (msg_flags & CAMEL_MESSAGE_NEEDS_REPLY) {
+ flag = 0;
+ } else if (msg_flags & CAMEL_MESSAGE_SEEN) {
+ flag = CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_NEEDS_REPLY;
+ } else {
+ flag = CAMEL_MESSAGE_SEEN;
+ }
+
+ camel_folder_set_message_flags (list->folder, camel_message_info_uid (info),
+ CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_NEEDS_REPLY, flag);
+
+ if (flag & CAMEL_MESSAGE_SEEN && list->seen_id) {
+ gtk_timeout_remove (list->seen_id);
+ list->seen_id = 0;
+ }
+
+ return TRUE;
+ }
+
+ if (col == COL_FLAGGED)
flag = CAMEL_MESSAGE_FLAGGED;
else
return FALSE;
-
+
info = get_message_info (list, path);
if (info == NULL) {
return FALSE;
}
-
+
/* If a message was marked as deleted and the user flags it as important, undelete it */
if (col == COL_FLAGGED && (info->flags & CAMEL_MESSAGE_DELETED))
flag |= CAMEL_MESSAGE_DELETED;
camel_folder_set_message_flags (list->folder, camel_message_info_uid (info), flag, ~info->flags);
-
- if (flag == CAMEL_MESSAGE_SEEN && list->seen_id) {
- gtk_timeout_remove (list->seen_id);
- list->seen_id = 0;
- }
-
+
return TRUE;
}