aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--ChangeLog.ja5
-rw-r--r--src/foldersel.c57
3 files changed, 52 insertions, 15 deletions
diff --git a/ChangeLog b/ChangeLog
index 8f502927..e72725f1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-07-13
+
+ * src/foldersel.c: display folder names with new/unread
+ representation.
+
2005-07-12
* src/compose.c: compose_get_line_break_pos(): don't break line after
diff --git a/ChangeLog.ja b/ChangeLog.ja
index c9778156..54d8df6a 100644
--- a/ChangeLog.ja
+++ b/ChangeLog.ja
@@ -1,3 +1,8 @@
+2005-07-13
+
+ * src/foldersel.c: フォルダ名を新着/未読の表現付きで表示するように
+ した。
+
2005-07-12
* src/compose.c: compose_get_line_break_pos(): '-' の後で改行しない
diff --git a/src/foldersel.c b/src/foldersel.c
index a039a5f5..e6a8cfc9 100644
--- a/src/foldersel.c
+++ b/src/foldersel.c
@@ -61,7 +61,8 @@ enum {
FOLDERSEL_FOLDERITEM,
FOLDERSEL_PIXBUF,
FOLDERSEL_PIXBUF_OPEN,
- FOLDERSEL_EXPANDER,
+ FOLDERSEL_FOREGROUND,
+ FOLDERSEL_BOLD,
N_FOLDERSEL_COLUMNS
};
@@ -256,6 +257,7 @@ static void foldersel_create(void)
G_TYPE_POINTER,
GDK_TYPE_PIXBUF,
GDK_TYPE_PIXBUF,
+ GDK_TYPE_COLOR,
G_TYPE_BOOLEAN);
gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(tree_store),
FOLDERSEL_FOLDERNAME,
@@ -285,7 +287,6 @@ static void foldersel_create(void)
gtk_tree_view_column_pack_start(column, renderer, FALSE);
gtk_tree_view_column_set_attributes
(column, renderer,
- "is-expander", FOLDERSEL_EXPANDER,
"pixbuf", FOLDERSEL_PIXBUF,
"pixbuf-expander-open", FOLDERSEL_PIXBUF_OPEN,
"pixbuf-expander-closed", FOLDERSEL_PIXBUF,
@@ -294,9 +295,13 @@ static void foldersel_create(void)
/* create text renderer */
renderer = gtk_cell_renderer_text_new();
gtk_tree_view_column_pack_start(column, renderer, TRUE);
- gtk_tree_view_column_set_attributes(column, renderer,
- "text", FOLDERSEL_FOLDERNAME,
- NULL);
+ gtk_tree_view_column_set_attributes
+ (column, renderer,
+ "text", FOLDERSEL_FOLDERNAME,
+ "foreground-gdk", FOLDERSEL_FOREGROUND,
+ "weight-set", FOLDERSEL_BOLD,
+ NULL);
+ g_object_set(G_OBJECT(renderer), "weight", PANGO_WEIGHT_BOLD, NULL);
gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
@@ -338,8 +343,12 @@ static void foldersel_init(void)
static void foldersel_append_item(GtkTreeStore *store, FolderItem *item,
GtkTreeIter *iter, GtkTreeIter *parent)
{
- const gchar *name;
+ gchar *name;
GdkPixbuf *pixbuf, *pixbuf_open;
+ gboolean use_bold, use_color;
+ GdkColor *foreground = NULL;
+ static GdkColor color_noselect = {0, COLOR_DIM, COLOR_DIM, COLOR_DIM};
+ static GdkColor color_new = {0, (guint16)55000, 15000, 15000};
name = item->name;
@@ -383,21 +392,43 @@ static void foldersel_append_item(GtkTreeStore *store, FolderItem *item,
}
}
- gtk_tree_store_append(store, iter, parent);
+ if (item->stype == F_QUEUE && item->total > 0) {
+ name = g_strdup_printf("%s (%d)", name, item->total);
+ } else if (item->unread > 0) {
+ name = g_strdup_printf("%s (%d)", name, item->unread);
+ } else
+ name = g_strdup(name);
- pixbuf = item->no_select ? foldernoselect_pixbuf : folder_pixbuf,
+ pixbuf = item->no_select ? foldernoselect_pixbuf : folder_pixbuf;
pixbuf_open =
- item->no_select ? foldernoselect_pixbuf : folderopen_pixbuf,
+ item->no_select ? foldernoselect_pixbuf : folderopen_pixbuf;
+
+ if (item->stype == F_OUTBOX || item->stype == F_DRAFT ||
+ item->stype == F_TRASH) {
+ use_bold = use_color = FALSE;
+ } else if (item->stype == F_QUEUE) {
+ use_bold = use_color = (item->total > 0);
+ } else {
+ use_bold = (item->unread > 0);
+ use_color = (item->new > 0);
+ }
+
+ if (item->no_select)
+ foreground = &color_noselect;
+ else if (use_color)
+ foreground = &color_new;
/* insert this node */
+ gtk_tree_store_append(store, iter, parent);
gtk_tree_store_set(store, iter,
FOLDERSEL_FOLDERNAME, name,
FOLDERSEL_FOLDERITEM, item,
FOLDERSEL_PIXBUF, pixbuf,
FOLDERSEL_PIXBUF_OPEN, pixbuf_open,
- FOLDERSEL_EXPANDER,
- item->node->children ? TRUE : FALSE,
+ FOLDERSEL_FOREGROUND, foreground,
+ FOLDERSEL_BOLD, use_bold,
-1);
+ g_free(name);
}
static void foldersel_insert_gnode_in_store(GtkTreeStore *store, GNode *node,
@@ -538,10 +569,6 @@ static void foldersel_new_folder(GtkButton *button, gpointer data)
return;
}
- /* parent can expand */
- gtk_tree_store_set(store, &selected, FOLDERSEL_EXPANDER, TRUE,
- -1);
-
/* add new child */
foldersel_append_item(store, new_item, &new_child, &selected);
selected_p = gtk_tree_model_get_path(GTK_TREE_MODEL(store), &selected);