[prev in list] [next in list] [prev in thread] [next in thread]
List: sylpheed
Subject: [sylpheed:23195] NEW PATCH: Message summaries for collapsed folder trees
From: Sylpheed Patches <sylpheed () thewildbeast ! co ! uk>
Date: 2004-07-01 7:56:25
Message-ID: E1BfwQj-0003OI-00 () alpha ! xcalibre ! co ! uk
[Download RAW message or body]
ANNOUNCING THE RELEASE OF A NEW PATCH
Patch Author: Klaus Lüttich <luettich@tzi.de>
Title: Message summaries for collapsed folder trees
Filename: configure_unread_message_display-0.9.12.patch (6.9 kb)
Works with: 0.9.12
Description:
This patch adds two new options to Common Preferences -> Display
which affect the Folder View:
Enabling the first option causes
the name of an account to be bold or red when the account has
unred or new messages, the number of unread and new messages
is also displayed.
The second option enables the same summaries
for collapsed IMAP parent folders. When there are no new or
unread messages they are still greyed out. But when there are
new and/or unread messages the folder name is displayed in red
and/or bold and the number of new and/or unread messages is
shown.
--------------------------
This is an automated message from the Sylpheed Patch homepage.
<http://www.thewildbeast.co.uk/sylpheed>
If you have made a patch that you want included at the
Sylpheed Patch homepage, request details from
<sylpheed@thewildbeast.co.uk>.
["configure_unread_message_display-0.9.12.patch" (application/octet-stream)]
diff -ruN sylpheed-0.9.12/src/folderview.c sylpheed-0.9.12-patched/src/folderview.c
--- sylpheed-0.9.12/src/folderview.c 2004-05-20 07:16:18.000000000 +0200
+++ sylpheed-0.9.12-patched/src/folderview.c 2004-06-23 19:46:47.000000000 +0200
@@ -864,6 +864,48 @@
return FALSE;
}
+
+static void folderview_sum_up_unread_recursive(GtkCTree *ctree,
+ GtkCTreeNode *node,
+ GInt_Pair *accum)
+{
+ FolderItem *item;
+
+ if (node) {
+ item = gtk_ctree_node_get_row_data(ctree, node);
+ if (item && !item->no_select) {
+ accum->new += item->new;
+ accum->unread += item->unread;
+ }
+ node = GTK_CTREE_ROW(node)->children;
+ } else
+ node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
+
+ while (node) {
+ folderview_sum_up_unread_recursive(ctree, node,accum);
+ node = GTK_CTREE_ROW(node)->sibling;
+ }
+}
+
+static void folderview_sum_up_unread_children(FolderView *folderview,
+ GtkCTreeNode *node,
+ GInt_Pair *accum)
+{
+ GtkCTree *ctree = GTK_CTREE(folderview->ctree);
+
+ if (!node)
+ node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
+ if (!node)
+ return;
+
+ node = GTK_CTREE_ROW(node)->children;
+
+ while (node) {
+ folderview_sum_up_unread_recursive(ctree, node, accum);
+ node = GTK_CTREE_ROW(node)->sibling;
+ }
+}
+
static gboolean folderview_search_unread_recursive(GtkCTree *ctree,
GtkCTreeNode *node)
{
@@ -921,6 +963,7 @@
gchar *str;
gboolean add_unread_mark;
gboolean use_bold, use_color;
+ GInt_Pair res;
item = gtk_ctree_node_get_row_data(ctree, node);
g_return_if_fail(item != NULL);
@@ -1004,6 +1047,14 @@
else
add_unread_mark = FALSE;
+ /* calculate summary for accounts and imap superfolders */
+ res.new = res.unread = 0;
+ if (((prefs_common.display_account_unread && !item->parent) ||
+ (prefs_common.display_imap_superfolder_unread && item->no_select))
+ && add_unread_mark)
+ folderview_sum_up_unread_children(folderview,node,&res);
+
+
if (item->stype == F_QUEUE && item->total > 0 &&
prefs_common.display_folder_unread) {
str = g_strdup_printf("%s (%d%s)", name, item->total,
@@ -1030,10 +1081,20 @@
FALSE, GTK_CTREE_ROW(node)->expanded);
g_free(name);
- if (!item->parent) {
+ if (!prefs_common.display_account_unread && !item->parent) {
+ gtk_ctree_node_set_text(ctree, node, COL_NEW, "-");
+ gtk_ctree_node_set_text(ctree, node, COL_UNREAD, "-");
+ gtk_ctree_node_set_text(ctree, node, COL_TOTAL, "-");
+ } else if ((prefs_common.display_account_unread && !item->parent) ||
+ (prefs_common.display_imap_superfolder_unread && item->no_select)) {
+ if(!GTK_CTREE_ROW(node)->expanded) {
+ gtk_ctree_node_set_text(ctree, node, COL_NEW, itos(res.new));
+ gtk_ctree_node_set_text(ctree, node, COL_UNREAD, itos(res.unread));
+ } else {
gtk_ctree_node_set_text(ctree, node, COL_NEW, "-");
gtk_ctree_node_set_text(ctree, node, COL_UNREAD, "-");
- gtk_ctree_node_set_text(ctree, node, COL_TOTAL, "-");
+ }
+ gtk_ctree_node_set_text(ctree, node, COL_TOTAL, "-");
} else {
gtk_ctree_node_set_text(ctree, node, COL_NEW, itos(item->new));
gtk_ctree_node_set_text(ctree, node, COL_UNREAD, itos(item->unread));
@@ -1058,7 +1119,8 @@
gtk_ctree_node_set_foreground(ctree, node, NULL);
- if (item->no_select)
+ if (item->no_select && (!add_unread_mark ||
+ !prefs_common.display_imap_superfolder_unread))
gtk_ctree_node_set_foreground(ctree, node,
&folderview->color_noselect);
else if (use_bold && use_color)
diff -ruN sylpheed-0.9.12/src/folderview.h sylpheed-0.9.12-patched/src/folderview.h
--- sylpheed-0.9.12/src/folderview.h 2004-05-20 07:03:12.000000000 +0200
+++ sylpheed-0.9.12-patched/src/folderview.h 2004-06-23 19:46:47.000000000 +0200
@@ -27,6 +27,7 @@
#include "folder.h"
typedef struct _FolderView FolderView;
+typedef struct _GInt_Pair GInt_Pair;
#include "mainwindow.h"
#include "summaryview.h"
@@ -58,6 +59,11 @@
SummaryView *summaryview;
};
+struct _GInt_Pair {
+ gint new;
+ gint unread;
+};
+
FolderView *folderview_create (void);
void folderview_init (FolderView *folderview);
void folderview_set (FolderView *folderview);
diff -ruN sylpheed-0.9.12/src/prefs_common.c sylpheed-0.9.12-patched/src/prefs_common.c
--- sylpheed-0.9.12/src/prefs_common.c 2004-05-19 08:24:56.000000000 +0200
+++ sylpheed-0.9.12-patched/src/prefs_common.c 2004-06-23 19:46:47.000000000 +0200
@@ -119,6 +119,8 @@
GtkWidget *button_textfont;
GtkWidget *chkbtn_folder_unread;
+ GtkWidget *chkbtn_account_unread;
+ GtkWidget *chkbtn_imap_superfolder_unread;
GtkWidget *entry_ng_abbrev_len;
GtkWidget *spinbtn_ng_abbrev_len;
GtkObject *spinbtn_ng_abbrev_len_adj;
@@ -356,6 +358,17 @@
&prefs_common.display_folder_unread, P_BOOL,
&display.chkbtn_folder_unread,
prefs_set_data_from_toggle, prefs_set_toggle},
+
+ {"display_account_unread_num", "FALSE",
+ &prefs_common.display_account_unread, P_BOOL,
+ &display.chkbtn_account_unread,
+ prefs_set_data_from_toggle, prefs_set_toggle},
+
+ {"display_imap_superfolder_unread_num", "FALSE",
+ &prefs_common.display_imap_superfolder_unread, P_BOOL,
+ &display.chkbtn_imap_superfolder_unread,
+ prefs_set_data_from_toggle, prefs_set_toggle},
+
{"newsgroup_abbrev_len", "16",
&prefs_common.ng_abbrev_len, P_INT,
&display.spinbtn_ng_abbrev_len,
@@ -1517,6 +1530,8 @@
GtkWidget *button_textfont;
GtkWidget *chkbtn_transhdr;
GtkWidget *chkbtn_folder_unread;
+ GtkWidget *chkbtn_account_unread;
+ GtkWidget *chkbtn_imap_superfolder_unread;
GtkWidget *hbox1;
GtkWidget *label_ng_abbrev;
GtkWidget *spinbtn_ng_abbrev_len;
@@ -1573,6 +1588,12 @@
PACK_CHECK_BUTTON (vbox2, chkbtn_folder_unread,
_("Display unread number next to folder name"));
+ PACK_CHECK_BUTTON (vbox2, chkbtn_account_unread,
+ _("Display new and unread messages for collapsed accounts"));
+
+ PACK_CHECK_BUTTON (vbox2, chkbtn_imap_superfolder_unread,
+ _("Display new and unread messages for collapsed imap4 superfolders"));
+
PACK_VSPACER(vbox2, vbox3, VSPACING_NARROW_2);
hbox1 = gtk_hbox_new (FALSE, 8);
@@ -1653,6 +1674,8 @@
display.chkbtn_transhdr = chkbtn_transhdr;
display.chkbtn_folder_unread = chkbtn_folder_unread;
+ display.chkbtn_account_unread = chkbtn_account_unread;
+ display.chkbtn_imap_superfolder_unread = chkbtn_imap_superfolder_unread;
display.spinbtn_ng_abbrev_len = spinbtn_ng_abbrev_len;
display.spinbtn_ng_abbrev_len_adj = spinbtn_ng_abbrev_len_adj;
diff -ruN sylpheed-0.9.12/src/prefs_common.h sylpheed-0.9.12-patched/src/prefs_common.h
--- sylpheed-0.9.12/src/prefs_common.h 2004-05-19 08:24:50.000000000 +0200
+++ sylpheed-0.9.12-patched/src/prefs_common.h 2004-06-23 19:46:47.000000000 +0200
@@ -98,6 +98,8 @@
gboolean trans_hdr;
gboolean display_folder_unread;
+ gboolean display_account_unread;
+ gboolean display_imap_superfolder_unread;
gint ng_abbrev_len;
gboolean swap_from;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic