evolution r35842 - trunk/mail



Author: lucilanga
Date: Sun Jul 27 19:15:42 2008
New Revision: 35842
URL: http://svn.gnome.org/viewvc/evolution?rev=35842&view=rev

Log:
2008-07-27  Lucian Langa <lucilanga gnome org>

* mail/em-event.h (struct _EMEventTargetCustomIcon):
* mail/em-event.c (em_event_target_new_custom_icon):
* mail/em-folder-tree.c (render_pixbuf):
** See bug #544969: Added the hook for folder custom icon.

Modified:
   trunk/mail/ChangeLog
   trunk/mail/em-event.c
   trunk/mail/em-event.h
   trunk/mail/em-folder-tree.c

Modified: trunk/mail/em-event.c
==============================================================================
--- trunk/mail/em-event.c	(original)
+++ trunk/mail/em-event.c	Sun Jul 27 19:15:42 2008
@@ -189,6 +189,18 @@
 	return t;
 }
 
+EMEventTargetCustomIcon *
+em_event_target_new_custom_icon(EMEvent *eme, GtkCellRenderer *renderer, const char *folder_name, guint32 flags)
+{
+	EMEventTargetCustomIcon *t = e_event_target_new(&eme->popup, EM_EVENT_TARGET_CUSTOM_ICON, sizeof(*t));
+
+	t->renderer = renderer;
+	t->folder_name = folder_name;
+	t->target.mask = ~flags;
+
+	return t;
+}
+
 /* ********************************************************************** */
 
 static void *emeh_parent_class;
@@ -215,11 +227,16 @@
 	{ NULL }
 };
 
+static const EEventHookTargetMask emeh_custom_icon_masks[] = {
+	{ "customicon", EM_EVENT_CUSTOM_ICON },
+	{ NULL }
+};
 static const EEventHookTargetMap emeh_targets[] = {
 	{ "folder", EM_EVENT_TARGET_FOLDER, emeh_folder_masks },
 	{ "message", EM_EVENT_TARGET_MESSAGE, emeh_message_masks },
 	{ "composer", EM_EVENT_TARGET_COMPOSER, emeh_composer_masks},
 	{ "sendreceive", EM_EVENT_TARGET_SEND_RECEIVE, emeh_send_receive_masks},
+	{ "customicon", EM_EVENT_TARGET_CUSTOM_ICON, emeh_custom_icon_masks},
 	{ NULL }
 };
 

Modified: trunk/mail/em-event.h
==============================================================================
--- trunk/mail/em-event.h	(original)
+++ trunk/mail/em-event.h	Sun Jul 27 19:15:42 2008
@@ -46,6 +46,7 @@
 	EM_EVENT_TARGET_MESSAGE,
 	EM_EVENT_TARGET_COMPOSER,
 	EM_EVENT_TARGET_SEND_RECEIVE,
+	EM_EVENT_TARGET_CUSTOM_ICON,
 };
 
 /* Flags that describe TARGET_FOLDER */
@@ -68,6 +69,11 @@
 	EM_EVENT_SEND_RECEIVE = 1<< 0,
 };
 
+/* Flags that describe TARGET_CUSTOM_ICON*/
+enum {
+	EM_EVENT_CUSTOM_ICON = 1<< 0,
+};
+
 typedef struct _EMEventTargetFolder EMEventTargetFolder;
 
 struct _EMEventTargetFolder {
@@ -105,6 +111,14 @@
 	int row;
 };
 
+typedef struct _EMEventTargetCustomIcon EMEventTargetCustomIcon;
+
+struct _EMEventTargetCustomIcon {
+	EEventTarget target;
+
+	GtkCellRenderer *renderer;
+	char 		*folder_name;
+};
 
 typedef struct _EEventItem EMEventItem;
 
@@ -127,6 +141,7 @@
 EMEventTargetComposer *em_event_target_new_composer(EMEvent *emp, const struct _EMsgComposer *composer, guint32 flags);
 EMEventTargetMessage *em_event_target_new_message(EMEvent *emp, struct _CamelFolder *folder, struct _CamelMimeMessage *message, const char *uid, guint32 flags);
 EMEventTargetSendReceive * em_event_target_new_send_receive(EMEvent *eme, struct _GtkWidget *table, gpointer data, int row, guint32 flags);
+EMEventTargetCustomIcon * em_event_target_new_custom_icon(EMEvent *eme, GtkCellRenderer *renderer, const char *uri, guint32 flags);
 
 /* ********************************************************************** */
 

Modified: trunk/mail/em-folder-tree.c
==============================================================================
--- trunk/mail/em-folder-tree.c	(original)
+++ trunk/mail/em-folder-tree.c	Sun Jul 27 19:15:42 2008
@@ -72,6 +72,7 @@
 #include "em-folder-selector.h"
 #include "em-folder-selection.h"
 #include "em-folder-properties.h"
+#include "em-event.h"
 
 #define d(x)
 
@@ -285,6 +286,8 @@
 	GdkPixbuf *pixbuf = NULL;
 	gboolean is_store;
 	guint32 flags;
+	EMEventTargetCustomIcon *target;
+	const char *folder_name;
 
 	if (!initialised) {
 		folder_icons[FOLDER_ICON_NORMAL] = e_icon_factory_get_icon ("folder", E_ICON_SIZE_MENU);
@@ -326,8 +329,14 @@
 				pixbuf = folder_icons[FOLDER_ICON_SHARED_BY_ME];
 			else if (flags & CAMEL_FOLDER_VIRTUAL)
 				pixbuf = folder_icons[FOLDER_ICON_VIRTUAL];
-			else
+			else {
 				pixbuf = folder_icons[FOLDER_ICON_NORMAL];
+				g_object_set (renderer, "pixbuf", pixbuf, "visible", !is_store, NULL);
+				gtk_tree_model_get (model, iter, COL_STRING_FULL_NAME, &folder_name, -1);
+				target = em_event_target_new_custom_icon (em_event_peek(), renderer, folder_name, EM_EVENT_CUSTOM_ICON);
+     				e_event_emit ((EEvent *)em_event_peek (), "folder.customicon", (EEventTarget *) target);
+				return;
+			}
 		}
 	}
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]