aboutsummaryrefslogtreecommitdiff
path: root/src/foldersel.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-07-13 05:20:58 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-07-13 05:20:58 +0000
commit3083452938b15891e80313f14be554dd22ce933e (patch)
treec82fc021cc113f76d864b866a77405a57c66c0f9 /src/foldersel.c
parentb3893bb06bae9fa9b3ccbd65ecfe6cada9135924 (diff)
display folder names of folder selection dialog with new/unread representation.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@426 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/foldersel.c')
-rw-r--r--src/foldersel.c57
1 files changed, 42 insertions, 15 deletions
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);