commit 73ae6b6b205c3a0cf61d4ac2e19566e459cd54ae
parent 1eb321597433fa8d044beabfa1c03fdf8bc284fd
Author: Paul Mangan <paul@claws-mail.org>
Date: Wed, 12 Mar 2008 06:22:29 +0000
2008-03-12 [paul] 3.3.1cvs21
* src/folder.c
* src/folder.h
* src/mainwindow.c
* src/procmsg.c
* src/summaryview.c
* src/plugins/trayicon/trayicon.c
add tooltip with extended folder stats
Diffstat:
9 files changed, 251 insertions(+), 21 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,3 +1,13 @@
+2008-03-12 [paul] 3.3.1cvs21
+
+ * src/folder.c
+ * src/folder.h
+ * src/mainwindow.c
+ * src/procmsg.c
+ * src/summaryview.c
+ * src/plugins/trayicon/trayicon.c
+ add tooltip with extended folder stats
+
2008-03-10 [colin] 3.3.1cvs20
* src/common/xml.c
diff --git a/PATCHSETS b/PATCHSETS
@@ -3255,3 +3255,4 @@
( cvs diff -u -r 1.274.2.234 -r 1.274.2.235 src/mainwindow.c; ) > 3.3.1cvs18.patchset
( cvs diff -u -r 1.274.2.235 -r 1.274.2.236 src/mainwindow.c; ) > 3.3.1cvs19.patchset
( cvs diff -u -r 1.1.4.23 -r 1.1.4.24 src/common/xml.c; ) > 3.3.1cvs20.patchset
+( cvs diff -u -r 1.213.2.178 -r 1.213.2.179 src/folder.c; cvs diff -u -r 1.87.2.56 -r 1.87.2.57 src/folder.h; cvs diff -u -r 1.274.2.236 -r 1.274.2.237 src/mainwindow.c; cvs diff -u -r 1.150.2.107 -r 1.150.2.108 src/procmsg.c; cvs diff -u -r 1.395.2.358 -r 1.395.2.359 src/summaryview.c; cvs diff -u -r 1.14.2.60 -r 1.14.2.61 src/plugins/trayicon/trayicon.c; ) > 3.3.1cvs21.patchset
diff --git a/configure.ac b/configure.ac
@@ -11,7 +11,7 @@ MINOR_VERSION=3
MICRO_VERSION=1
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=20
+EXTRA_VERSION=21
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
diff --git a/src/folder.c b/src/folder.c
@@ -1,6 +1,6 @@
/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 1999-2008 Hiroyuki Yamamoto and the Claws Mail team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -352,6 +352,11 @@ FolderItem *folder_item_new(Folder *folder, const gchar *name, const gchar *path
item->unreadmarked_msgs = 0;
item->marked_msgs = 0;
item->total_msgs = 0;
+ item->replied_msgs = 0;
+ item->forwarded_msgs = 0;
+ item->locked_msgs = 0;
+ item->ignored_msgs = 0;
+ item->watched_msgs = 0;
item->order = 0;
item->last_num = -1;
item->cache = NULL;
@@ -534,6 +539,16 @@ void folder_item_set_xml(Folder *folder, FolderItem *item, XMLTag *tag)
item->unreadmarked_msgs = atoi(attr->value);
else if (!strcmp(attr->name, "marked"))
item->marked_msgs = atoi(attr->value);
+ else if (!strcmp(attr->name, "replied"))
+ item->replied_msgs = atoi(attr->value);
+ else if (!strcmp(attr->name, "forwarded"))
+ item->forwarded_msgs = atoi(attr->value);
+ else if (!strcmp(attr->name, "locked"))
+ item->locked_msgs = atoi(attr->value);
+ else if (!strcmp(attr->name, "ignored"))
+ item->ignored_msgs = atoi(attr->value);
+ else if (!strcmp(attr->name, "watched"))
+ item->watched_msgs = atoi(attr->value);
else if (!strcmp(attr->name, "order"))
item->order = atoi(attr->value);
else if (!strcmp(attr->name, "total"))
@@ -649,6 +664,11 @@ XMLTag *folder_item_get_xml(Folder *folder, FolderItem *item)
xml_tag_add_attr(tag, xml_attr_new_int("unreadmarked", item->unreadmarked_msgs));
xml_tag_add_attr(tag, xml_attr_new_int("marked", item->marked_msgs));
xml_tag_add_attr(tag, xml_attr_new_int("total", item->total_msgs));
+ xml_tag_add_attr(tag, xml_attr_new_int("replied", item->replied_msgs));
+ xml_tag_add_attr(tag, xml_attr_new_int("forwarded", item->forwarded_msgs));
+ xml_tag_add_attr(tag, xml_attr_new_int("locked", item->locked_msgs));
+ xml_tag_add_attr(tag, xml_attr_new_int("ignore", item->ignored_msgs));
+ xml_tag_add_attr(tag, xml_attr_new_int("watched", item->watched_msgs));
xml_tag_add_attr(tag, xml_attr_new_int("order", item->order));
if (item->account)
@@ -989,6 +1009,11 @@ struct TotalMsgCount
guint unreadmarked_msgs;
guint marked_msgs;
guint total_msgs;
+ guint replied_msgs;
+ guint forwarded_msgs;
+ guint locked_msgs;
+ guint ignored_msgs;
+ guint watched_msgs;
};
struct FuncToAllFoldersData
@@ -1040,6 +1065,11 @@ static void folder_count_total_msgs_func(FolderItem *item, gpointer data)
count->unreadmarked_msgs += item->unreadmarked_msgs;
count->marked_msgs += item->marked_msgs;
count->total_msgs += item->total_msgs;
+ count->replied_msgs += item->replied_msgs;
+ count->forwarded_msgs += item->forwarded_msgs;
+ count->locked_msgs += item->locked_msgs;
+ count->ignored_msgs += item->ignored_msgs;
+ count->watched_msgs += item->watched_msgs;
}
struct TotalMsgStatus
@@ -1151,11 +1181,16 @@ gchar *folder_get_status(GPtrArray *folders, gboolean full)
void folder_count_total_msgs(guint *new_msgs, guint *unread_msgs,
guint *unreadmarked_msgs, guint *marked_msgs,
- guint *total_msgs)
+ guint *total_msgs, guint *replied_msgs,
+ guint *forwarded_msgs, guint *locked_msgs,
+ guint *ignored_msgs, guint *watched_msgs)
{
struct TotalMsgCount count;
- count.new_msgs = count.unread_msgs = count.unreadmarked_msgs = count.total_msgs = 0;
+ count.new_msgs = count.unread_msgs = count.unreadmarked_msgs = 0;
+ count.total_msgs = count.replied_msgs = count.forwarded_msgs = 0;
+ count.locked_msgs = count.ignored_msgs = count.watched_msgs = 0;
+ count.marked_msgs = 0;
debug_print("Counting total number of messages...\n");
@@ -1166,6 +1201,11 @@ void folder_count_total_msgs(guint *new_msgs, guint *unread_msgs,
*unreadmarked_msgs = count.unreadmarked_msgs;
*marked_msgs = count.marked_msgs;
*total_msgs = count.total_msgs;
+ *replied_msgs = count.replied_msgs;
+ *forwarded_msgs = count.forwarded_msgs;
+ *locked_msgs = count.locked_msgs;
+ *ignored_msgs = count.ignored_msgs;
+ *watched_msgs = count.watched_msgs;
}
Folder *folder_find_from_path(const gchar *path)
@@ -1968,6 +2008,9 @@ gint folder_item_scan_full(FolderItem *item, gboolean filtering)
GSList *newmsg_list = NULL;
guint newcnt = 0, unreadcnt = 0, totalcnt = 0;
guint markedcnt = 0, unreadmarkedcnt = 0;
+ guint repliedcnt = 0, forwardedcnt = 0;
+ guint lockedcnt = 0, ignoredcnt = 0, watchedcnt = 0;
+
guint cache_max_num, folder_max_num, cache_cur_num, folder_cur_num;
gboolean update_flags = 0, old_uids_valid = FALSE;
GHashTable *subject_table = NULL;
@@ -2263,6 +2306,16 @@ gint folder_item_scan_full(FolderItem *item, gboolean filtering)
unreadmarkedcnt++;
if (MSG_IS_MARKED(msginfo->flags))
markedcnt++;
+ if (MSG_IS_REPLIED(msginfo->flags))
+ repliedcnt++;
+ if (MSG_IS_FORWARDED(msginfo->flags))
+ forwardedcnt++;
+ if (MSG_IS_LOCKED(msginfo->flags))
+ lockedcnt++;
+ if (MSG_IS_IGNORE_THREAD(msginfo->flags))
+ ignoredcnt++;
+ if (MSG_IS_WATCH_THREAD(msginfo->flags))
+ watchedcnt++;
totalcnt++;
@@ -2277,7 +2330,10 @@ gint folder_item_scan_full(FolderItem *item, gboolean filtering)
if (item->new_msgs != newcnt || item->unread_msgs != unreadcnt
|| item->total_msgs != totalcnt || item->marked_msgs != markedcnt
- || item->unreadmarked_msgs != unreadmarkedcnt) {
+ || item->unreadmarked_msgs != unreadmarkedcnt
+ || item->replied_msgs != repliedcnt || item->forwarded_msgs != forwardedcnt
+ || item->locked_msgs != lockedcnt || item->ignored_msgs != ignoredcnt
+ || item->watched_msgs != watchedcnt) {
update_flags |= F_ITEM_UPDATE_CONTENT;
}
@@ -2286,6 +2342,11 @@ gint folder_item_scan_full(FolderItem *item, gboolean filtering)
item->total_msgs = totalcnt;
item->unreadmarked_msgs = unreadmarkedcnt;
item->marked_msgs = markedcnt;
+ item->replied_msgs = repliedcnt;
+ item->forwarded_msgs = forwardedcnt;
+ item->locked_msgs = lockedcnt;
+ item->ignored_msgs = ignoredcnt;
+ item->watched_msgs = watchedcnt;
update_flags |= F_ITEM_UPDATE_MSGCNT;
@@ -2449,6 +2510,9 @@ static void folder_item_read_cache(FolderItem *item)
MsgInfoList *list, *cur;
guint newcnt = 0, unreadcnt = 0;
guint markedcnt = 0, unreadmarkedcnt = 0;
+ guint repliedcnt = 0, forwardedcnt = 0;
+ guint lockedcnt = 0, ignoredcnt = 0;
+ guint watchedcnt = 0;
MsgInfo *msginfo;
item->cache = msgcache_new();
@@ -2468,12 +2532,27 @@ static void folder_item_read_cache(FolderItem *item)
unreadmarkedcnt++;
if (MSG_IS_MARKED(msginfo->flags))
markedcnt++;
+ if (MSG_IS_REPLIED(msginfo->flags))
+ repliedcnt++;
+ if (MSG_IS_FORWARDED(msginfo->flags))
+ forwardedcnt++;
+ if (MSG_IS_LOCKED(msginfo->flags))
+ lockedcnt++;
+ if (MSG_IS_IGNORE_THREAD(msginfo->flags))
+ ignoredcnt++;
+ if (MSG_IS_WATCH_THREAD(msginfo->flags))
+ watchedcnt++;
procmsg_msginfo_unset_flags(msginfo, MSG_FULLY_CACHED, 0);
}
item->new_msgs = newcnt;
item->unread_msgs = unreadcnt;
item->unreadmarked_msgs = unreadmarkedcnt;
item->marked_msgs = markedcnt;
+ item->replied_msgs = repliedcnt;
+ item->forwarded_msgs = forwardedcnt;
+ item->locked_msgs = lockedcnt;
+ item->ignored_msgs = ignoredcnt;
+ item->watched_msgs = watchedcnt;
procmsg_msg_list_free(list);
} else
msgcache_read_mark(item->cache, mark_file);
@@ -2831,6 +2910,16 @@ static void add_msginfo_to_cache(FolderItem *item, MsgInfo *newmsginfo, MsgInfo
item->unreadmarked_msgs++;
if (MSG_IS_MARKED(newmsginfo->flags))
item->marked_msgs++;
+ if (MSG_IS_REPLIED(newmsginfo->flags))
+ item->replied_msgs++;
+ if (MSG_IS_FORWARDED(newmsginfo->flags))
+ item->forwarded_msgs++;
+ if (MSG_IS_LOCKED(newmsginfo->flags))
+ item->locked_msgs++;
+ if (MSG_IS_IGNORE_THREAD(newmsginfo->flags))
+ item->ignored_msgs++;
+ if (MSG_IS_WATCH_THREAD(newmsginfo->flags))
+ item->watched_msgs++;
item->total_msgs++;
folder_item_update_freeze();
@@ -2859,6 +2948,16 @@ static void remove_msginfo_from_cache(FolderItem *item, MsgInfo *msginfo)
msginfo->folder->unreadmarked_msgs--;
if (MSG_IS_MARKED(msginfo->flags))
item->marked_msgs--;
+ if (MSG_IS_REPLIED(msginfo->flags))
+ item->replied_msgs--;
+ if (MSG_IS_FORWARDED(msginfo->flags))
+ item->forwarded_msgs--;
+ if (MSG_IS_LOCKED(msginfo->flags))
+ item->locked_msgs--;
+ if (MSG_IS_IGNORE_THREAD(msginfo->flags))
+ item->ignored_msgs--;
+ if (MSG_IS_WATCH_THREAD(msginfo->flags))
+ item->watched_msgs--;
msginfo->folder->total_msgs--;
@@ -3536,6 +3635,11 @@ gint folder_item_remove_all_msg(FolderItem *item)
item->unreadmarked_msgs = 0;
item->marked_msgs = 0;
item->total_msgs = 0;
+ item->replied_msgs = 0;
+ item->forwarded_msgs = 0;
+ item->locked_msgs = 0;
+ item->ignored_msgs = 0;
+ item->watched_msgs = 0;
folder_item_update(item, F_ITEM_UPDATE_MSGCNT | F_ITEM_UPDATE_CONTENT);
}
diff --git a/src/folder.h b/src/folder.h
@@ -2,7 +2,7 @@
/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 1999-2008 Hiroyuki Yamamoto and the Claws Mail team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -645,6 +645,11 @@ struct _FolderItem
gint total_msgs;
gint unreadmarked_msgs;
gint marked_msgs;
+ gint replied_msgs;
+ gint forwarded_msgs;
+ gint locked_msgs;
+ gint ignored_msgs;
+ gint watched_msgs;
gint order;
@@ -770,7 +775,9 @@ void folder_func_to_all_folders (FolderItemFunc function,
gpointer data);
void folder_count_total_msgs(guint *new_msgs, guint *unread_msgs,
guint *unreadmarked_msgs, guint *marked_msgs,
- guint *total_msgs);
+ guint *total_msgs, guint *replied_msgs,
+ guint *forwarded_msgs, guint *locked_msgs,
+ guint *ignored_msgs, guint *watched_msgs);
gchar *folder_get_status (GPtrArray *folders,
gboolean full);
diff --git a/src/mainwindow.c b/src/mainwindow.c
@@ -1,6 +1,6 @@
/*
Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
- Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team
+ Copyright (C) 1999-2008 Hiroyuki Yamamoto and the Claws Mail team
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -1447,9 +1447,12 @@ void mainwindow_maemo_led_set(gboolean state) {
static void led_update(FolderItem *removed_item)
{
- guint new, unread, unreadmarked, marked, total;
+ guint new, unread, unreadmarked, marked, total, replied;
+ guint forwarded, locked, ignored, watched;
- folder_count_total_msgs(&new, &unread, &unreadmarked, &marked, &total);
+ folder_count_total_msgs(&new, &unread, &unreadmarked, &marked, &total,
+ &replied, &forwarded, &locked, &ignored,
+ &watched);
if (removed_item) {
total -= removed_item->total_msgs;
new -= removed_item->new_msgs;
diff --git a/src/plugins/trayicon/trayicon.c b/src/plugins/trayicon/trayicon.c
@@ -1,6 +1,6 @@
/*
* Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 2003-2007 the Claws Mail Team
+ * Copyright (C) 2003-2008 the Claws Mail Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -186,10 +186,13 @@ static void set_trayicon_pixmap(TrayIconType icontype)
static void update(FolderItem *removed_item)
{
guint new, unread, unreadmarked, marked, total;
+ guint replied, forwarded, locked, ignored, watched;
gchar *buf;
TrayIconType icontype = TRAYICON_NOTHING;
- folder_count_total_msgs(&new, &unread, &unreadmarked, &marked, &total);
+ folder_count_total_msgs(&new, &unread, &unreadmarked, &marked, &total,
+ &replied, &forwarded, &locked, &ignored,
+ &watched);
if (removed_item) {
total -= removed_item->total_msgs;
new -= removed_item->new_msgs;
diff --git a/src/procmsg.c b/src/procmsg.c
@@ -1,6 +1,6 @@
/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 1999-2008 Hiroyuki Yamamoto and the Claws Mail team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -1842,6 +1842,46 @@ static void update_folder_msg_counts(FolderItem *item, MsgInfo *msginfo, MsgPerm
procmsg_update_unread_children(msginfo, FALSE);
item->marked_msgs--;
}
+
+ if (!(old_flags & MSG_REPLIED) && (new_flags & MSG_REPLIED)) {
+ item->replied_msgs++;
+ }
+
+ if ((old_flags & MSG_REPLIED) && !(new_flags & MSG_REPLIED)) {
+ item->replied_msgs--;
+ }
+
+ if (!(old_flags & MSG_FORWARDED) && (new_flags & MSG_FORWARDED)) {
+ item->forwarded_msgs++;
+ }
+
+ if ((old_flags & MSG_FORWARDED) && !(new_flags & MSG_FORWARDED)) {
+ item->forwarded_msgs--;
+ }
+
+ if (!(old_flags & MSG_LOCKED) && (new_flags & MSG_LOCKED)) {
+ item->locked_msgs++;
+ }
+
+ if ((old_flags & MSG_LOCKED) && !(new_flags & MSG_LOCKED)) {
+ item->locked_msgs--;
+ }
+
+ if ((old_flags & MSG_IGNORE_THREAD) && !(new_flags & MSG_IGNORE_THREAD)) {
+ item->ignored_msgs--;
+ }
+
+ if (!(old_flags & MSG_IGNORE_THREAD) && (new_flags & MSG_IGNORE_THREAD)) {
+ item->ignored_msgs++;
+ }
+
+ if ((old_flags & MSG_WATCH_THREAD) && !(new_flags & MSG_WATCH_THREAD)) {
+ item->watched_msgs--;
+ }
+
+ if (!(old_flags & MSG_WATCH_THREAD) && (new_flags & MSG_WATCH_THREAD)) {
+ item->watched_msgs++;
+ }
}
void procmsg_msginfo_set_flags(MsgInfo *msginfo, MsgPermFlags perm_flags, MsgTmpFlags tmp_flags)
@@ -1871,7 +1911,7 @@ void procmsg_msginfo_set_flags(MsgInfo *msginfo, MsgPermFlags perm_flags, MsgTmp
folder_item_change_msg_flags(msginfo->folder, msginfo, perm_flags_new);
update_folder_msg_counts(item, msginfo, perm_flags_old);
-
+ summary_update_unread(mainwindow_get_mainwindow()->summaryview, NULL);
}
/* Tmp flags handling */
diff --git a/src/summaryview.c b/src/summaryview.c
@@ -1,6 +1,6 @@
/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 1999-2008 Hiroyuki Yamamoto and the Claws Mail team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -1093,7 +1093,7 @@ static gboolean summaryview_quicksearch_recurse(gpointer data)
static gboolean summary_check_consistency(FolderItem *item, GSList *mlist)
{
- int u = 0, n = 0, m = 0, t = 0;
+ int u = 0, n = 0, m = 0, t = 0, r = 0, f = 0, l = 0, i = 0, w = 0;
GSList *cur;
START_TIMING("");
for(cur = mlist ; cur != NULL && cur->data != NULL ; cur = g_slist_next(cur)) {
@@ -1105,11 +1105,26 @@ static gboolean summary_check_consistency(FolderItem *item, GSList *mlist)
u++;
if (MSG_IS_MARKED(msginfo->flags))
m++;
+ if (MSG_IS_REPLIED(msginfo->flags))
+ r++;
+ if (MSG_IS_FORWARDED(msginfo->flags))
+ f++;
+ if (MSG_IS_LOCKED(msginfo->flags))
+ l++;
+ if (MSG_IS_IGNORE_THREAD(msginfo->flags))
+ i++;
+ if (MSG_IS_WATCH_THREAD(msginfo->flags))
+ w++;
}
if (t != item->total_msgs
|| n != item->new_msgs
|| u != item->unread_msgs
|| m != item->marked_msgs
+ || r != item->replied_msgs
+ || f != item->forwarded_msgs
+ || l != item->locked_msgs
+ || i != item->ignored_msgs
+ || w != item->watched_msgs
|| (m == 0 && item->unreadmarked_msgs != 0)
|| item->unreadmarked_msgs < 0) {
debug_print("Inconsistency\n");
@@ -2416,9 +2431,11 @@ static void summary_status_show(SummaryView *summaryview)
gchar *itstr;
GList *rowlist, *cur;
guint n_selected = 0, n_new = 0, n_unread = 0, n_total = 0;
+ guint n_marked = 0, n_replied = 0, n_forwarded = 0, n_locked = 0, n_ignored = 0, n_watched = 0;
off_t sel_size = 0, n_size = 0;
MsgInfo *msginfo;
gchar *name;
+ gchar *tooltip;
if (!summaryview->folder_item) {
gtk_label_set_text(GTK_LABEL(summaryview->statlabel_folder), "");
@@ -2453,11 +2470,29 @@ static void summary_status_show(SummaryView *summaryview)
n_new++;
if (MSG_IS_UNREAD(msginfo->flags))
n_unread++;
+ if (MSG_IS_MARKED(msginfo->flags))
+ n_marked++;
+ if (MSG_IS_REPLIED(msginfo->flags))
+ n_replied++;
+ if (MSG_IS_FORWARDED(msginfo->flags))
+ n_forwarded++;
+ if (MSG_IS_LOCKED(msginfo->flags))
+ n_locked++;
+ if (MSG_IS_IGNORE_THREAD(msginfo->flags))
+ n_ignored++;
+ if (MSG_IS_WATCH_THREAD(msginfo->flags))
+ n_watched++;
}
}
} else {
n_new = summaryview->folder_item->new_msgs;
n_unread = summaryview->folder_item->unread_msgs;
+ n_marked = summaryview->folder_item->marked_msgs;
+ n_replied = summaryview->folder_item->replied_msgs;
+ n_forwarded = summaryview->folder_item->forwarded_msgs;
+ n_locked = summaryview->folder_item->locked_msgs;
+ n_ignored = summaryview->folder_item->ignored_msgs;
+ n_watched = summaryview->folder_item->watched_msgs;
n_total = summaryview->folder_item->total_msgs;
n_size = summaryview->total_size;
}
@@ -2513,11 +2548,31 @@ static void summary_status_show(SummaryView *summaryview)
g_free(str);
str = g_strdup_printf(_("%d new, %d unread, %d total (%s)"),
-
n_new, n_unread, n_total,
to_human_readable(n_size));
+
gtk_label_set_text(GTK_LABEL(summaryview->statlabel_msgs), str);
+#if GTK_CHECK_VERSION(2, 12, 0)
+ tooltip = g_strdup_printf(_("<b>Message summary</b>\n"
+ "<b>New:</b> %d\n"
+ "<b>Unread:</b> %d\n"
+ "<b>Total:</b> %d\n"
+ "<b>Size:</b> %s\n\n"
+ "<b>Marked:</b> %d\n"
+ "<b>Replied:</b> %d\n"
+ "<b>Forwarded:</b> %d\n"
+ "<b>Locked:</b> %d\n"
+ "<b>Ignored:</b> %d\n"
+ "<b>Watched:</b> %d"),
+ n_new, n_unread, n_total,
+ to_human_readable(n_size),
+ n_marked,n_replied,n_forwarded,
+ n_locked,n_ignored,n_watched);
+
+ gtk_widget_set_tooltip_markup(GTK_WIDGET(summaryview->statlabel_msgs),
+ tooltip);
+#endif
g_free(str);
} else {
gchar *ssize, *tsize;
@@ -6431,8 +6486,10 @@ static void summary_selected(GtkCTree *ctree, GtkCTreeNode *row,
!MSG_IS_COPY(msginfo->flags)) {
if (MSG_IS_MARKED(msginfo->flags)) {
summary_unmark_row(summaryview, row);
+ summary_status_show(summaryview);
} else {
summary_mark_row(summaryview, row);
+ summary_status_show(summaryview);
}
}
break;
@@ -6455,11 +6512,13 @@ static void summary_selected(GtkCTree *ctree, GtkCTreeNode *row,
break;
case S_COL_LOCKED:
if (MSG_IS_LOCKED(msginfo->flags)) {
- summary_msginfo_unset_flags(msginfo, MSG_LOCKED, 0);
- summary_set_row_marks(summaryview, row);
+ summary_unlock_row(summaryview, row);
+ summary_status_show(summaryview);
}
- else
+ else {
summary_lock_row(summaryview, row);
+ summary_status_show(summaryview);
+ }
break;
default:
break;
@@ -7392,6 +7451,7 @@ static gboolean summary_update_msg(gpointer source, gpointer data)
void summary_update_unread(SummaryView *summaryview, FolderItem *removed_item)
{
guint new, unread, unreadmarked, marked, total;
+ guint replied, forwarded, locked, ignored, watched;
static gboolean tips_initialized = FALSE;
if (prefs_common.layout_mode != SMALL_LAYOUT) {
@@ -7404,7 +7464,9 @@ void summary_update_unread(SummaryView *summaryview, FolderItem *removed_item)
}
return;
}
- folder_count_total_msgs(&new, &unread, &unreadmarked, &marked, &total);
+ folder_count_total_msgs(&new, &unread, &unreadmarked, &marked, &total,
+ &replied, &forwarded, &locked, &ignored,
+ &watched);
if (removed_item) {
total -= removed_item->total_msgs;
new -= removed_item->new_msgs;