aboutsummaryrefslogtreecommitdiffstats
path: root/mail/em-folder-tree-model.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2009-05-25 03:24:15 +0800
committerMatthew Barnes <mbarnes@redhat.com>2009-05-25 03:24:15 +0800
commitd3a3c1c3f0616f9bf1559f88b073b70d8e5d0bfc (patch)
treea58155322fdb17a1d8b07b08c08fd62d4137b46e /mail/em-folder-tree-model.c
parentf575a7626a769b0a99e080944749958d644d4aef (diff)
downloadgsoc2013-evolution-d3a3c1c3f0616f9bf1559f88b073b70d8e5d0bfc.tar
gsoc2013-evolution-d3a3c1c3f0616f9bf1559f88b073b70d8e5d0bfc.tar.gz
gsoc2013-evolution-d3a3c1c3f0616f9bf1559f88b073b70d8e5d0bfc.tar.bz2
gsoc2013-evolution-d3a3c1c3f0616f9bf1559f88b073b70d8e5d0bfc.tar.lz
gsoc2013-evolution-d3a3c1c3f0616f9bf1559f88b073b70d8e5d0bfc.tar.xz
gsoc2013-evolution-d3a3c1c3f0616f9bf1559f88b073b70d8e5d0bfc.tar.zst
gsoc2013-evolution-d3a3c1c3f0616f9bf1559f88b073b70d8e5d0bfc.zip
Use named icons in the folder tree instead of pixbufs.
Diffstat (limited to 'mail/em-folder-tree-model.c')
-rw-r--r--mail/em-folder-tree-model.c62
1 files changed, 39 insertions, 23 deletions
diff --git a/mail/em-folder-tree-model.c b/mail/em-folder-tree-model.c
index 04e66e2c86..94b5e4f0bc 100644
--- a/mail/em-folder-tree-model.c
+++ b/mail/em-folder-tree-model.c
@@ -54,6 +54,7 @@
#include "mail-folder-cache.h"
#include "em-utils.h"
+#include "em-folder-utils.h"
#include <camel/camel-folder.h>
#include <camel/camel-vee-store.h>
@@ -66,11 +67,13 @@
static GType col_types[] = {
G_TYPE_STRING, /* display name */
G_TYPE_POINTER, /* store object */
- G_TYPE_STRING, /* path */
+ G_TYPE_STRING, /* full name */
+ G_TYPE_STRING, /* icon name */
G_TYPE_STRING, /* uri */
G_TYPE_UINT, /* unread count */
G_TYPE_UINT, /* flags */
G_TYPE_BOOLEAN, /* is a store node */
+ G_TYPE_BOOLEAN, /* is a folder node */
G_TYPE_BOOLEAN, /* has not-yet-loaded subfolders */
};
@@ -439,6 +442,7 @@ em_folder_tree_model_set_folder_info (EMFolderTreeModel *model, GtkTreeIter *ite
CamelFolderInfo *fi, int fully_loaded)
{
GtkTreeRowReference *uri_row, *path_row;
+ GtkTreeStore *tree_store;
unsigned int unread;
GtkTreePath *path;
GtkTreeIter sub;
@@ -446,12 +450,15 @@ em_folder_tree_model_set_folder_info (EMFolderTreeModel *model, GtkTreeIter *ite
struct _CamelFolder *folder;
gboolean emitted = FALSE;
const char *name;
+ const gchar *icon_name;
guint32 flags;
/* make sure we don't already know about it? */
if (g_hash_table_lookup (si->full_hash, fi->full_name))
return;
-
+
+ tree_store = GTK_TREE_STORE (model);
+
if (!fully_loaded)
load = fi->child == NULL && !(fi->flags & (CAMEL_FOLDER_NOCHILDREN | CAMEL_FOLDER_NOINFERIORS));
@@ -516,31 +523,40 @@ em_folder_tree_model_set_folder_info (EMFolderTreeModel *model, GtkTreeIter *ite
}
}
- gtk_tree_store_set ((GtkTreeStore *) model, iter,
- COL_STRING_DISPLAY_NAME, name,
- COL_POINTER_CAMEL_STORE, si->store,
- COL_STRING_FULL_NAME, fi->full_name,
- COL_STRING_URI, fi->uri,
- COL_UINT_FLAGS, flags,
- COL_BOOL_IS_STORE, FALSE,
- COL_BOOL_LOAD_SUBDIRS, load,
- -1);
+ /* Choose an icon name for the folder. */
+ icon_name = em_folder_utils_get_icon_name (flags);
+
+ gtk_tree_store_set (
+ tree_store, iter,
+ COL_STRING_DISPLAY_NAME, name,
+ COL_POINTER_CAMEL_STORE, si->store,
+ COL_STRING_FULL_NAME, fi->full_name,
+ COL_STRING_ICON_NAME, icon_name,
+ COL_STRING_URI, fi->uri,
+ COL_UINT_FLAGS, flags,
+ COL_BOOL_IS_STORE, FALSE,
+ COL_BOOL_IS_FOLDER, TRUE,
+ COL_BOOL_LOAD_SUBDIRS, load,
+ -1);
if (unread != ~0)
- gtk_tree_store_set ((GtkTreeStore *) model, iter, COL_UINT_UNREAD, unread, -1);
+ gtk_tree_store_set (tree_store, iter, COL_UINT_UNREAD, unread, -1);
if (load) {
/* create a placeholder node for our subfolders... */
- gtk_tree_store_append ((GtkTreeStore *) model, &sub, iter);
- gtk_tree_store_set ((GtkTreeStore *) model, &sub,
- COL_STRING_DISPLAY_NAME, _("Loading..."),
- COL_POINTER_CAMEL_STORE, NULL,
- COL_STRING_FULL_NAME, NULL,
- COL_BOOL_LOAD_SUBDIRS, FALSE,
- COL_BOOL_IS_STORE, FALSE,
- COL_STRING_URI, NULL,
- COL_UINT_UNREAD, 0,
- -1);
+ gtk_tree_store_append (tree_store, &sub, iter);
+ gtk_tree_store_set (
+ tree_store, &sub,
+ COL_STRING_DISPLAY_NAME, _("Loading..."),
+ COL_POINTER_CAMEL_STORE, NULL,
+ COL_STRING_FULL_NAME, NULL,
+ COL_STRING_ICON_NAME, NULL,
+ COL_BOOL_LOAD_SUBDIRS, FALSE,
+ COL_BOOL_IS_STORE, FALSE,
+ COL_BOOL_IS_FOLDER, FALSE,
+ COL_STRING_URI, NULL,
+ COL_UINT_UNREAD, 0,
+ -1);
path = gtk_tree_model_get_path ((GtkTreeModel *) model, iter);
g_signal_emit (model, signals[LOADING_ROW], 0, path, iter);
@@ -552,7 +568,7 @@ em_folder_tree_model_set_folder_info (EMFolderTreeModel *model, GtkTreeIter *ite
fi = fi->child;
do {
- gtk_tree_store_append ((GtkTreeStore *) model, &sub, iter);
+ gtk_tree_store_append (tree_store, &sub, iter);
if (!emitted) {
path = gtk_tree_model_get_path ((GtkTreeModel *) model, iter);