[anjal] Add attachment icon to the message list for mails with attachments.



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]