From 0f720e60eae6b09e5e1b19c5d10f01188705f19a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Dapena=20Paz?= Date: Thu, 17 Dec 2009 17:29:21 +0100 Subject: [PATCH] Show calendar flag in headers list. --- src/hildon2/modest-icon-names.h | 1 + src/widgets/modest-gtkhtml-msg-view.c | 31 +++++++++++++++++++++++++++++++ src/widgets/modest-header-view-render.c | 22 +++++++++++++++++----- 3 files changed, 49 insertions(+), 5 deletions(-) diff --git a/src/hildon2/modest-icon-names.h b/src/hildon2/modest-icon-names.h index 4d79855..e30fc0a 100644 --- a/src/hildon2/modest-icon-names.h +++ b/src/hildon2/modest-icon-names.h @@ -46,6 +46,7 @@ #define MODEST_HEADER_ICON_ATTACH "email_attachment" #define MODEST_HEADER_ICON_HIGH "email_message_high_priority" #define MODEST_HEADER_ICON_LOW "email_message_low_priority" +#define MODEST_HEADER_ICON_CALENDAR "email_event_invitation" /* * until we have the custom cell renderer, we use the hacked icons below; diff --git a/src/widgets/modest-gtkhtml-msg-view.c b/src/widgets/modest-gtkhtml-msg-view.c index 4c3e9fe..242ed2d 100644 --- a/src/widgets/modest-gtkhtml-msg-view.c +++ b/src/widgets/modest-gtkhtml-msg-view.c @@ -232,6 +232,7 @@ static void remove_attachment (ModestGtkhtmlMsgView *view, TnyMimePart *attachme static void request_fetch_images (ModestGtkhtmlMsgView *view); static void set_branding (ModestGtkhtmlMsgView *view, const gchar *brand_name, const GdkPixbuf *brand_icon); static gboolean has_blocked_external_images (ModestGtkhtmlMsgView *view); +static void set_calendar (ModestGtkhtmlMsgView *self, TnyHeader *header, TnyMsg *msg); /* list properties */ enum { @@ -257,6 +258,8 @@ struct _ModestGtkhtmlMsgViewPrivate { #ifdef MODEST_TOOLKIT_HILDON2 GtkWidget *priority_box; GtkWidget *priority_icon; + GtkWidget *calendar_box; + GtkWidget *calendar_icon; #endif /* internal adjustments for set_scroll_adjustments */ @@ -1247,6 +1250,17 @@ modest_gtkhtml_msg_view_init (ModestGtkhtmlMsgView *obj) gtk_widget_hide_all (priv->priority_box); } + priv->calendar_icon = gtk_image_new (); + gtk_misc_set_alignment (GTK_MISC (priv->calendar_icon), 0.0, 0.5); + if (priv->calendar_icon) { + priv->calendar_box = (GtkWidget *) + modest_mail_header_view_add_custom_header (MODEST_MAIL_HEADER_VIEW (priv->mail_header_view), + _("TODO: invitation"), + priv->calendar_icon, + FALSE, FALSE); + + gtk_widget_hide_all (priv->calendar_box); + } #endif if (priv->attachments_view) { #ifndef MODEST_TOOLKIT_HILDON2 @@ -1834,6 +1848,7 @@ set_message (ModestGtkhtmlMsgView *self, TnyMsg *msg, TnyMimePart *other_body) gtk_widget_hide_all (priv->attachments_box); #ifdef MODEST_TOOKIT_HILDON2 gtk_widget_hide_all (priv->priority_box); + gtk_widget_hide_all (priv->calendar_box); #endif gtk_widget_set_no_show_all (priv->mail_header_view, TRUE); tny_mime_part_view_clear (TNY_MIME_PART_VIEW (priv->body_view)); @@ -1909,16 +1924,19 @@ set_message (ModestGtkhtmlMsgView *self, TnyMsg *msg, TnyMimePart *other_body) /* Refresh priority */ set_priority (self, tny_header_get_flags (header)); + set_calendar (self, header, msg); gtk_widget_show (priv->body_view); #ifdef MODEST_TOOLKIT_HILDON2 gtk_widget_set_no_show_all (priv->priority_box, TRUE); + gtk_widget_set_no_show_all (priv->calendar_box, TRUE); #endif gtk_widget_set_no_show_all (priv->attachments_box, TRUE); gtk_widget_show_all (priv->mail_header_view); gtk_widget_set_no_show_all (priv->attachments_box, FALSE); #ifdef MODEST_TOOLKIT_HILDON2 gtk_widget_set_no_show_all (priv->priority_box, FALSE); + gtk_widget_set_no_show_all (priv->calendar_box, FALSE); #endif gtk_widget_set_no_show_all (priv->mail_header_view, TRUE); @@ -2002,6 +2020,7 @@ set_header (ModestGtkhtmlMsgView *self, TnyHeader *header) gtk_widget_hide_all (priv->attachments_box); #ifdef MODEST_TOOLKIT_HILDON2 gtk_widget_hide_all (priv->priority_box); + gtk_widget_hide_all (priv->calendar_box); #endif gtk_widget_set_no_show_all (priv->mail_header_view, TRUE); tny_mime_part_view_clear (TNY_MIME_PART_VIEW (priv->body_view)); @@ -2763,3 +2782,15 @@ modest_gtkhtml_msg_view_has_blocked_external_images_default (ModestMsgView *self { return has_blocked_external_images (MODEST_GTKHTML_MSG_VIEW (self)); } + +static void +set_calendar (ModestGtkhtmlMsgView *self, TnyHeader *header, TnyMsg *msg) +{ + ModestGtkhtmlMsgViewPrivate *priv; + + g_return_if_fail (MODEST_IS_GTKHTML_MSG_VIEW (self)); + priv = MODEST_GTKHTML_MSG_VIEW_GET_PRIVATE (self); + + + +} diff --git a/src/widgets/modest-header-view-render.c b/src/widgets/modest-header-view-render.c index d2a6c96..455c94e 100644 --- a/src/widgets/modest-header-view-render.c +++ b/src/widgets/modest-header-view-render.c @@ -73,7 +73,7 @@ get_status_string (ModestTnySendQueueStatus status) } static GdkPixbuf* -get_pixbuf_for_flag (TnyHeaderFlags flag) +get_pixbuf_for_flag (TnyHeaderFlags flag, gboolean is_calendar) { /* optimization */ static GdkPixbuf *deleted_pixbuf = NULL; @@ -82,6 +82,14 @@ get_pixbuf_for_flag (TnyHeaderFlags flag) static GdkPixbuf *attachments_pixbuf = NULL; static GdkPixbuf *high_pixbuf = NULL; static GdkPixbuf *low_pixbuf = NULL; + static GdkPixbuf *calendar_pixbuf = NULL; + + if (is_calendar) { + if (G_UNLIKELY(!calendar_pixbuf)) + calendar_pixbuf = modest_platform_get_icon (MODEST_HEADER_ICON_CALENDAR, + SMALL_ICON_SIZE); + return calendar_pixbuf; + } switch (flag) { case TNY_HEADER_FLAG_DELETED: @@ -204,7 +212,7 @@ _modest_header_view_attach_cell_data (GtkTreeViewColumn *column, GtkCellRenderer if (flags & TNY_HEADER_FLAG_ATTACHMENTS) g_object_set (G_OBJECT (renderer), "pixbuf", - get_pixbuf_for_flag (TNY_HEADER_FLAG_ATTACHMENTS), + get_pixbuf_for_flag (TNY_HEADER_FLAG_ATTACHMENTS, FALSE), NULL); } @@ -296,6 +304,7 @@ _modest_header_view_compact_header_cell_data (GtkTreeViewColumn *column, GtkCe *recipient_box, *subject_box = NULL; TnyHeader *msg_header = NULL; TnyHeaderFlags prio = 0; + gboolean is_calendar = FALSE; #ifdef MAEMO_CHANGES #ifdef HAVE_GTK_TREE_VIEW_COLUMN_GET_CELL_DATA_HINT @@ -346,16 +355,19 @@ _modest_header_view_compact_header_cell_data (GtkTreeViewColumn *column, GtkCe /* FIXME: we might gain something by doing all the g_object_set's at once */ if (flags & TNY_HEADER_FLAG_ATTACHMENTS) g_object_set (G_OBJECT (attach_cell), "pixbuf", - get_pixbuf_for_flag (TNY_HEADER_FLAG_ATTACHMENTS), + get_pixbuf_for_flag (TNY_HEADER_FLAG_ATTACHMENTS, FALSE), NULL); else g_object_set (G_OBJECT (attach_cell), "pixbuf", NULL, NULL); - if (msg_header) + is_calendar = tny_header_get_user_flag (msg_header, "calendar"); + if (msg_header) { prio = tny_header_get_priority (msg_header); + } + g_object_set (G_OBJECT (priority_cell), "pixbuf", - get_pixbuf_for_flag (prio), + get_pixbuf_for_flag (prio, is_calendar), NULL); set_cell_text (subject_cell, (subject && subject[0] != 0)?subject:_("mail_va_no_subject"), -- 1.7.9.5