Show calendar flag in headers list.
authorJosé Dapena Paz <jdapena@igalia.com>
Thu, 17 Dec 2009 16:29:21 +0000 (17:29 +0100)
committerJosé Dapena Paz <jdapena@igalia.com>
Mon, 18 Jan 2010 16:09:57 +0000 (17:09 +0100)
src/hildon2/modest-icon-names.h
src/widgets/modest-gtkhtml-msg-view.c
src/widgets/modest-header-view-render.c

index edc83d4..c9b7bd6 100644 (file)
@@ -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;
index 667281f..e61072d 100644 (file)
@@ -224,6 +224,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 {
@@ -249,6 +250,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 */
@@ -1238,6 +1241,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
@@ -1823,6 +1837,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));
@@ -1898,16 +1913,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);
 
@@ -1991,6 +2009,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));
@@ -2752,3 +2771,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);
+
+       
+
+}
index d2a6c96..455c94e 100644 (file)
@@ -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"),