[anjal] Add attachment icon to the message list for mails with attachments.
- From: Srinivasa Ragavan <sragavan src gnome org>
- To: svn-commits-list gnome org
- Subject: [anjal] Add attachment icon to the message list for mails with attachments.
- Date: Thu, 16 Jul 2009 12:47:13 +0000 (UTC)
commit 6fb7ae7b73136347787c59ea4c17e5490f9b632e
Author: Srinivasa Ragavan <sragavan novell com>
Date: Thu Jul 16 18:13:42 2009 +0530
Add attachment icon to the message list for mails with attachments.
src/custom-cell-renderer-hbox.c | 4 ++--
src/em-tree-store.c | 9 +++++++--
src/em-tree-store.h | 1 +
src/mail-folder-view.c | 26 ++++++++++++++++++++++++--
4 files changed, 34 insertions(+), 6 deletions(-)
---
diff --git a/src/custom-cell-renderer-hbox.c b/src/custom-cell-renderer-hbox.c
index 6cf182a..23f6f2e 100644
--- a/src/custom-cell-renderer-hbox.c
+++ b/src/custom-cell-renderer-hbox.c
@@ -471,7 +471,7 @@ custom_cell_renderer_hbox_render (GtkCellRenderer *cell,
gboolean custom = GPOINTER_TO_INT(g_object_get_data ((GObject *)child, "p-custom"));
gtk_cell_renderer_get_size (child, widget, cell_area, &cx, &cy, &cw, &ch);
- cell_area->x = cell_area->x - cw - (child->xpad);
+ cell_area->x = cell_area->x - cw - (child->xpad) -cx;
if (custom && cw >20) {
GdkColor col;
gdk_color_parse ("#f57900", &col);
@@ -483,7 +483,7 @@ custom_cell_renderer_hbox_render (GtkCellRenderer *cell,
cairo_destroy (cr);
} else
gtk_cell_renderer_render (child, window, widget, background_area, cell_area, expose_area, flags);
-
+ cell_area->x += cx;
tmp = tmp->next;
}
}
diff --git a/src/em-tree-store.c b/src/em-tree-store.c
index 338ed26..c261069 100644
--- a/src/em-tree-store.c
+++ b/src/em-tree-store.c
@@ -84,7 +84,8 @@ struct _emts_column_info emts_column_info[EMTS_COL_NUMBER] = {
{ G_TYPE_UINT, "flags", N_("Flags") },
{ G_TYPE_STRING, "threadcount", N_("Thread Count")},
{ G_TYPE_STRING, "threadpreview", N_("Thread Preview") },
- { G_TYPE_BOOLEAN, "unread", N_("Unread") }
+ { G_TYPE_BOOLEAN, "unread", N_("Unread") },
+ { G_TYPE_BOOLEAN, "attachment", N_("Attachment") }
};
static EMTreeNode *
@@ -256,6 +257,7 @@ emts_get_value(GtkTreeModel *tree_model, GtkTreeIter *iter, gint column, GValue
g_value_set_ulong(value, 0);
break;
case EMTS_COL_UNREAD:
+ case EMTS_COL_ATTACHMENT:
g_value_set_boolean (value, FALSE);
break;
case EMTS_COL_FLAGS:
@@ -279,7 +281,10 @@ emts_get_value(GtkTreeModel *tree_model, GtkTreeIter *iter, gint column, GValue
break;
case EMTS_COL_UNREAD:
g_value_set_boolean(value, emts_thread_unread((EMTreeStore *)tree_model, node));
- break;
+ break;
+ case EMTS_COL_ATTACHMENT:
+ g_value_set_boolean(value, (camel_message_info_flags(node->info) & CAMEL_MESSAGE_ATTACHMENTS) != 0);
+ break;
case EMTS_COL_FROM:
case EMTS_COL_TO: {
char **str = NULL, *newstr = NULL;
diff --git a/src/em-tree-store.h b/src/em-tree-store.h
index 1070287..9fe2555 100644
--- a/src/em-tree-store.h
+++ b/src/em-tree-store.h
@@ -72,6 +72,7 @@ typedef enum {
EMTS_COL_THREADCOUNT,
EMTS_COL_THREADPREVIEW,
EMTS_COL_UNREAD,
+ EMTS_COL_ATTACHMENT,
EMTS_COL_NUMBER
} emts_col_t;
diff --git a/src/mail-folder-view.c b/src/mail-folder-view.c
index 523da79..2409c73 100644
--- a/src/mail-folder-view.c
+++ b/src/mail-folder-view.c
@@ -790,6 +790,7 @@ draw_text (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *
}
}
+
i=-1;
t = t->next;
}
@@ -842,6 +843,18 @@ draw_text (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *
"ellipsize", ellipsize ? PANGO_ELLIPSIZE_END : PANGO_ELLIPSIZE_NONE, NULL);
g_value_unset (&value1);
+ } else {
+ /* We render attachment icon here */
+ GValue v1 = {0};
+ g_value_init (&v1, G_TYPE_BOOLEAN);
+ g_value_unset (&v1);
+
+ gtk_tree_model_get_value (tree_model, iter, EMTS_COL_ATTACHMENT, &v1);
+ if (g_value_get_boolean (&v1)) {
+ g_object_set ((GObject *)c, "pixbuf", mail_utils_get_icon("mail-attachment", GTK_ICON_SIZE_MENU), NULL);
+ } else {
+ g_object_set ((GObject *)c, "pixbuf", gdk_pixbuf_new_from_xpm_data ((const char **) empty_xpm), NULL);
+ }
}
i=-1;
t = t->next;
@@ -1499,7 +1512,7 @@ mail_folder_view_construct (MailFolderView *shell)
column->editable_widget = (gpointer)0xdeadbeef;
gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED);
- /* gtk_tree_view_column_set_fixed_width (column, 720); */
+ gtk_tree_view_column_set_fixed_width (column, 720);
gtk_tree_view_column_set_title (column, _("Messages"));
gtk_tree_view_append_column (GTK_TREE_VIEW (shell->tree), column);
@@ -1543,7 +1556,7 @@ mail_folder_view_construct (MailFolderView *shell)
/* Pack toggle at the start of the cell */
custom_cell_renderer_hbox_pack_start (hbox, cell, FALSE);
#endif
-
+
/* Show a box for number of mails */
if (!shell->priv->light) {
cell = gtk_cell_renderer_text_new ();
@@ -1557,6 +1570,15 @@ mail_folder_view_construct (MailFolderView *shell)
custom_cell_renderer_hbox_pack_end (hbox, cell, FALSE);
}
+ /* Show the attachment icon */
+ if (!shell->priv->light) {
+ cell = gtk_cell_renderer_pixbuf_new ();
+ g_object_set_data ((GObject *)cell, "data", GINT_TO_POINTER (EMTS_COL_ATTACHMENT));
+
+ /* Pack Date at the end of the cell */
+ custom_cell_renderer_hbox_pack_end (hbox, cell, FALSE);
+ }
+
/* Create a renderer for Date to be shown */
cell = gtk_cell_renderer_text_new ();
if (shell->priv->light)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]