Now priority is a different line in the header view
authorJose Dapena Paz <jdapena@igalia.com>
Wed, 22 Apr 2009 15:10:42 +0000 (15:10 +0000)
committerJose Dapena Paz <jdapena@igalia.com>
Wed, 22 Apr 2009 15:10:42 +0000 (15:10 +0000)
pmo-trunk-r9044

src/widgets/modest-compact-mail-header-view.c
src/widgets/modest-gtkhtml-msg-view.c

index b7b6abd..4682044 100644 (file)
@@ -50,15 +50,10 @@ typedef struct _ModestCompactMailHeaderViewPriv ModestCompactMailHeaderViewPriv;
 struct _ModestCompactMailHeaderViewPriv
 {
        GtkWidget    *headers_vbox;
 struct _ModestCompactMailHeaderViewPriv
 {
        GtkWidget    *headers_vbox;
-       GtkWidget    *subject_box;
 
        GtkWidget    *fromto_label;
        GtkWidget    *fromto_contents;
 
        GtkWidget    *fromto_label;
        GtkWidget    *fromto_contents;
-       GtkWidget    *priority_icon;
-       GtkWidget    *details_label;
-       GtkWidget    *details_button;
        GtkWidget    *date_label;
        GtkWidget    *date_label;
-       GtkWidget    *subject_label;
 
        GSList       *custom_labels;
 
 
        GSList       *custom_labels;
 
@@ -114,7 +109,6 @@ static const GtkWidget *modest_compact_mail_header_view_add_custom_header_defaul
 
 /* internal */
 static void on_notify_style (GObject *obj, GParamSpec *spec, gpointer userdata);
 
 /* internal */
 static void on_notify_style (GObject *obj, GParamSpec *spec, gpointer userdata);
-static void on_details_button_clicked  (GtkButton *button, gpointer userdata);
 static void update_style (ModestCompactMailHeaderView *self);
 static void set_date_time (ModestCompactMailHeaderView *compact_mail_header);
 static void fill_address (ModestCompactMailHeaderView *self);
 static void update_style (ModestCompactMailHeaderView *self);
 static void set_date_time (ModestCompactMailHeaderView *compact_mail_header);
 static void fill_address (ModestCompactMailHeaderView *self);
@@ -215,11 +209,6 @@ modest_compact_mail_header_view_set_header_default (TnyHeaderView *self, TnyHead
 
                subject = tny_header_dup_subject (header);
 
 
                subject = tny_header_dup_subject (header);
 
-               if (subject && (subject[0] != '\0'))
-                       gtk_label_set_text (GTK_LABEL (priv->subject_label), subject);
-               else
-                       gtk_label_set_text (GTK_LABEL (priv->subject_label), _("mail_va_no_subject"));
-
                if (priv->is_outgoing && priv->is_draft) {
                        priv->date_to_show = tny_header_get_date_sent (header);
                } else {
                if (priv->is_outgoing && priv->is_draft) {
                        priv->date_to_show = tny_header_get_date_sent (header);
                } else {
@@ -332,8 +321,7 @@ modest_compact_mail_header_view_instance_init (GTypeInstance *instance, gpointer
 {
        ModestCompactMailHeaderView *self = (ModestCompactMailHeaderView *)instance;
        ModestCompactMailHeaderViewPriv *priv = MODEST_COMPACT_MAIL_HEADER_VIEW_GET_PRIVATE (self);
 {
        ModestCompactMailHeaderView *self = (ModestCompactMailHeaderView *)instance;
        ModestCompactMailHeaderViewPriv *priv = MODEST_COMPACT_MAIL_HEADER_VIEW_GET_PRIVATE (self);
-       GtkWidget *first_hbox, *second_hbox, *vbox, *main_vbox;
-       PangoAttrList *attr_list;
+       GtkWidget *from_date_hbox, *vbox, *main_vbox;
        GtkWidget *main_align;
 
        priv->header = NULL;
        GtkWidget *main_align;
 
        priv->header = NULL;
@@ -341,37 +329,12 @@ modest_compact_mail_header_view_instance_init (GTypeInstance *instance, gpointer
 
        main_vbox = gtk_vbox_new (FALSE, 0);
        vbox = gtk_vbox_new (FALSE, 0);
 
        main_vbox = gtk_vbox_new (FALSE, 0);
        vbox = gtk_vbox_new (FALSE, 0);
-       first_hbox = gtk_hbox_new (FALSE, MODEST_MARGIN_HALF);
-
-       priv->subject_box = gtk_hbox_new (FALSE, MODEST_MARGIN_HALF);
 
        /* We set here the style for widgets using standard text color. For
         * widgets with secondary text color, we set them in update_style,
         * as we want to track the style changes and update the color properly */
 
 
        /* We set here the style for widgets using standard text color. For
         * widgets with secondary text color, we set them in update_style,
         * as we want to track the style changes and update the color properly */
 
-       priv->subject_label = gtk_label_new (NULL);
-       gtk_misc_set_alignment (GTK_MISC (priv->subject_label), 0.0, 1.0);
-       gtk_label_set_ellipsize (GTK_LABEL (priv->subject_label), PANGO_ELLIPSIZE_NONE);
-       attr_list = pango_attr_list_new ();
-       pango_attr_list_insert (attr_list, pango_attr_scale_new (PANGO_SCALE_LARGE));
-       gtk_label_set_attributes (GTK_LABEL (priv->subject_label), attr_list);
-       pango_attr_list_unref (attr_list);
-
-       priv->details_button = gtk_button_new ();
-       gtk_widget_set_no_show_all (priv->details_button, TRUE);
-       gtk_widget_show (priv->details_button);
-       priv->details_label = gtk_label_new (_("mcen_ti_message_properties"));
-       gtk_widget_show (priv->details_label);
-       gtk_misc_set_alignment (GTK_MISC (priv->details_label), 1.0, 0.5);
-       gtk_container_add (GTK_CONTAINER (priv->details_button), priv->details_label);
-       gtk_button_set_relief (GTK_BUTTON (priv->details_button), GTK_RELIEF_NONE);
-       gtk_widget_set_size_request (priv->details_button, 200, -1);
-
-       gtk_box_pack_end (GTK_BOX (priv->subject_box), priv->subject_label, TRUE, TRUE, 0);
-       gtk_box_pack_start (GTK_BOX (first_hbox), priv->subject_box, TRUE, TRUE, 0);
-       gtk_box_pack_start (GTK_BOX (first_hbox), priv->details_button, FALSE, FALSE, 0);
-
-       second_hbox = gtk_hbox_new (FALSE, MODEST_MARGIN_DOUBLE);
+       from_date_hbox = gtk_hbox_new (FALSE, MODEST_MARGIN_DOUBLE);
 
        priv->fromto_label = gtk_label_new (NULL);
        gtk_misc_set_alignment (GTK_MISC (priv->fromto_label), 0.0, 1.0);
 
        priv->fromto_label = gtk_label_new (NULL);
        gtk_misc_set_alignment (GTK_MISC (priv->fromto_label), 0.0, 1.0);
@@ -385,19 +348,16 @@ modest_compact_mail_header_view_instance_init (GTypeInstance *instance, gpointer
        gtk_misc_set_alignment (GTK_MISC (priv->date_label), 1.0, 1.0);
        gtk_misc_set_padding (GTK_MISC (priv->date_label), MODEST_MARGIN_DOUBLE, 0);
 
        gtk_misc_set_alignment (GTK_MISC (priv->date_label), 1.0, 1.0);
        gtk_misc_set_padding (GTK_MISC (priv->date_label), MODEST_MARGIN_DOUBLE, 0);
 
-       gtk_box_pack_start (GTK_BOX (second_hbox), priv->fromto_label, FALSE, FALSE, 0);
-       gtk_box_pack_start (GTK_BOX (second_hbox), priv->fromto_contents, TRUE, TRUE, 0);
-       gtk_box_pack_start (GTK_BOX (second_hbox), priv->date_label, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (from_date_hbox), priv->fromto_label, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (from_date_hbox), priv->fromto_contents, TRUE, TRUE, 0);
+       gtk_box_pack_start (GTK_BOX (from_date_hbox), priv->date_label, FALSE, FALSE, 0);
 
 
-       gtk_box_pack_start (GTK_BOX (vbox), first_hbox, FALSE, FALSE, 0);
-       gtk_box_pack_start (GTK_BOX (vbox), second_hbox, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (vbox), from_date_hbox, FALSE, FALSE, 0);
 
        update_style (self);
 
        g_signal_connect (G_OBJECT (self), "notify::style", G_CALLBACK (on_notify_style), (gpointer) self);
 
 
        update_style (self);
 
        g_signal_connect (G_OBJECT (self), "notify::style", G_CALLBACK (on_notify_style), (gpointer) self);
 
-       g_signal_connect (G_OBJECT (priv->details_button), "clicked", G_CALLBACK (on_details_button_clicked), instance);
-
        priv->datetime_formatter = modest_datetime_formatter_new ();
        g_signal_connect (G_OBJECT (priv->datetime_formatter), "format-changed", 
                          G_CALLBACK (datetime_format_changed), (gpointer) self);
        priv->datetime_formatter = modest_datetime_formatter_new ();
        g_signal_connect (G_OBJECT (priv->datetime_formatter), "format-changed", 
                          G_CALLBACK (datetime_format_changed), (gpointer) self);
@@ -582,21 +542,6 @@ modest_compact_mail_header_view_set_priority_default (ModestMailHeaderView *head
        priv = MODEST_COMPACT_MAIL_HEADER_VIEW_GET_PRIVATE (headers_view);
 
        priv->priority_flags = flags & TNY_HEADER_FLAG_PRIORITY_MASK ;
        priv = MODEST_COMPACT_MAIL_HEADER_VIEW_GET_PRIVATE (headers_view);
 
        priv->priority_flags = flags & TNY_HEADER_FLAG_PRIORITY_MASK ;
-
-       if (priv->priority_flags == TNY_HEADER_FLAG_NORMAL_PRIORITY) {
-               if (priv->priority_icon != NULL) {
-                       gtk_widget_destroy (priv->priority_icon);
-                       priv->priority_icon = NULL;
-               }
-       } else if (priv->priority_flags == TNY_HEADER_FLAG_HIGH_PRIORITY) {
-               priv->priority_icon = gtk_image_new_from_icon_name (MODEST_HEADER_ICON_HIGH, GTK_ICON_SIZE_MENU);
-               gtk_box_pack_start (GTK_BOX (priv->subject_box), priv->priority_icon, FALSE, FALSE, 0);
-               gtk_widget_show (priv->priority_icon);
-       } else if (priv->priority_flags == TNY_HEADER_FLAG_LOW_PRIORITY) {
-               priv->priority_icon = gtk_image_new_from_icon_name (MODEST_HEADER_ICON_LOW, GTK_ICON_SIZE_MENU);
-               gtk_box_pack_start (GTK_BOX (priv->subject_box), priv->priority_icon, FALSE, FALSE, 0);
-               gtk_widget_show (priv->priority_icon);
-       }
 }
 
 static gboolean
 }
 
 static gboolean
@@ -631,12 +576,6 @@ modest_compact_mail_header_view_set_loading_default (ModestMailHeaderView *heade
        priv = MODEST_COMPACT_MAIL_HEADER_VIEW_GET_PRIVATE (headers_view);
 
        priv->is_loading = is_loading;
        priv = MODEST_COMPACT_MAIL_HEADER_VIEW_GET_PRIVATE (headers_view);
 
        priv->is_loading = is_loading;
-       gtk_widget_set_sensitive (priv->details_button, !is_loading);
-       if (is_loading) {
-               gtk_widget_hide (priv->details_label);
-       } else {
-               gtk_widget_show (priv->details_label);
-       }
 }
 
 static void 
 }
 
 static void 
@@ -681,14 +620,6 @@ update_style (ModestCompactMailHeaderView *self)
        gtk_label_set_attributes (GTK_LABEL (priv->fromto_label), attr_list);
        pango_attr_list_unref (attr_list);
 
        gtk_label_set_attributes (GTK_LABEL (priv->fromto_label), attr_list);
        pango_attr_list_unref (attr_list);
 
-       /* style of details label in details button */
-       attr_list = pango_attr_list_new ();
-       pango_attr_list_insert (attr_list, pango_attr_foreground_new (color.red, color.green, color.blue));
-       pango_attr_list_insert (attr_list, pango_attr_scale_new (PANGO_SCALE_SMALL));
-       pango_attr_list_insert (attr_list, pango_attr_underline_new (PANGO_UNDERLINE_SINGLE));
-       gtk_label_set_attributes (GTK_LABEL (priv->details_label), attr_list);
-       pango_attr_list_unref (attr_list);
-
        /* style of date time label */
        attr_list = pango_attr_list_new ();
        pango_attr_list_insert (attr_list, pango_attr_foreground_new (color.red, color.green, color.blue));
        /* style of date time label */
        attr_list = pango_attr_list_new ();
        pango_attr_list_insert (attr_list, pango_attr_foreground_new (color.red, color.green, color.blue));
@@ -748,13 +679,3 @@ fill_address (ModestCompactMailHeaderView *self)
 
 }
 
 
 }
 
-static void 
-on_details_button_clicked (GtkButton *button,
-                          gpointer userdata)
-{
-       ModestCompactMailHeaderView *self = (ModestCompactMailHeaderView *) userdata;
-
-       g_return_if_fail (MODEST_IS_COMPACT_MAIL_HEADER_VIEW (self));
-
-       g_signal_emit_by_name (G_OBJECT (self), "show-details");
-}
index 7637dc9..ef2f62e 100644 (file)
@@ -53,6 +53,7 @@
 #include <widgets/modest-gtkhtml-msg-view.h>
 #include <widgets/modest-isearch-view.h>
 #include <widgets/modest-ui-constants.h>
 #include <widgets/modest-gtkhtml-msg-view.h>
 #include <widgets/modest-isearch-view.h>
 #include <widgets/modest-ui-constants.h>
+#include <modest-icon-names.h>
 
 /* FIXNE: we should have no maemo-deps in widgets/ */
 #ifndef MODEST_TOOLKIT_GTK
 
 /* FIXNE: we should have no maemo-deps in widgets/ */
 #ifndef MODEST_TOOLKIT_GTK
@@ -237,14 +238,15 @@ struct _ModestGtkhtmlMsgViewPrivate {
        GtkWidget   *body_view;
        GtkWidget   *mail_header_view;
        GtkWidget   *attachments_view;
        GtkWidget   *body_view;
        GtkWidget   *mail_header_view;
        GtkWidget   *attachments_view;
+       GtkWidget   *priority_icon;
 
        TnyMsg      *msg;
 
        /* embedded elements */
        GtkWidget   *headers_box;
 
        TnyMsg      *msg;
 
        /* embedded elements */
        GtkWidget   *headers_box;
+       GtkWidget   *priority_box;
        GtkWidget   *html_scroll;
        GtkWidget   *attachments_box;
        GtkWidget   *html_scroll;
        GtkWidget   *attachments_box;
-       GtkWidget   *view_images_button;
 
        /* internal adjustments for set_scroll_adjustments */
        GtkAdjustment *hadj;
 
        /* internal adjustments for set_scroll_adjustments */
        GtkAdjustment *hadj;
@@ -1143,6 +1145,18 @@ modest_gtkhtml_msg_view_init (ModestGtkhtmlMsgView *obj)
        if (priv->mail_header_view)
                gtk_box_pack_start (GTK_BOX(priv->headers_box), priv->mail_header_view, FALSE, FALSE, 0);
        
        if (priv->mail_header_view)
                gtk_box_pack_start (GTK_BOX(priv->headers_box), priv->mail_header_view, FALSE, FALSE, 0);
        
+       priv->priority_icon = gtk_image_new ();
+       gtk_misc_set_alignment (GTK_MISC (priv->priority_icon), 0.0, 0.5);
+       if (priv->priority_icon) {
+               priv->priority_box = (GtkWidget *)
+                       modest_mail_header_view_add_custom_header (MODEST_MAIL_HEADER_VIEW (priv->mail_header_view),
+                                                                  _("mcen_me_editor_message_priority"),
+                                                                  priv->priority_icon,
+                                                                  FALSE, FALSE);
+                                                                  
+               gtk_widget_hide_all (priv->priority_box);
+       }
+
        if (priv->attachments_view) {
 #ifndef MODEST_TOOLKIT_HILDON2
                gchar *att_label = g_strconcat (_("mcen_me_viewer_attachments"), ":", NULL);
        if (priv->attachments_view) {
 #ifndef MODEST_TOOLKIT_HILDON2
                gchar *att_label = g_strconcat (_("mcen_me_viewer_attachments"), ":", NULL);
@@ -1491,7 +1505,8 @@ has_blocked_external_images (ModestGtkhtmlMsgView *self)
 {
        ModestGtkhtmlMsgViewPrivate *priv = MODEST_GTKHTML_MSG_VIEW_GET_PRIVATE (self);
 
 {
        ModestGtkhtmlMsgViewPrivate *priv = MODEST_GTKHTML_MSG_VIEW_GET_PRIVATE (self);
 
-       return modest_mime_part_view_has_external_images (MODEST_MIME_PART_VIEW (priv->body_view));
+       return (modest_mime_part_view_has_external_images (MODEST_MIME_PART_VIEW (priv->body_view)) &&
+               !modest_mime_part_view_get_view_images (MODEST_MIME_PART_VIEW (priv->body_view)));
 }
 
 static gboolean
 }
 
 static gboolean
@@ -1647,6 +1662,7 @@ set_message (ModestGtkhtmlMsgView *self, TnyMsg *msg)
        TnyMimePart *body;
        ModestGtkhtmlMsgViewPrivate *priv;
        TnyHeader *header;
        TnyMimePart *body;
        ModestGtkhtmlMsgViewPrivate *priv;
        TnyHeader *header;
+       TnyHeaderFlags flags;
        GtkAdjustment *html_vadj;
        
        g_return_if_fail (self);
        GtkAdjustment *html_vadj;
        
        g_return_if_fail (self);
@@ -1675,6 +1691,7 @@ set_message (ModestGtkhtmlMsgView *self, TnyMsg *msg)
                modest_attachments_view_set_message (MODEST_ATTACHMENTS_VIEW (priv->attachments_view), NULL);
                gtk_widget_hide_all (priv->mail_header_view);
                gtk_widget_hide_all (priv->attachments_box);
                modest_attachments_view_set_message (MODEST_ATTACHMENTS_VIEW (priv->attachments_view), NULL);
                gtk_widget_hide_all (priv->mail_header_view);
                gtk_widget_hide_all (priv->attachments_box);
+               gtk_widget_hide_all (priv->priority_box);
                gtk_widget_set_no_show_all (priv->mail_header_view, TRUE);
                tny_mime_part_view_clear (TNY_MIME_PART_VIEW (priv->body_view));
                gtk_widget_queue_resize (GTK_WIDGET(self));
                gtk_widget_set_no_show_all (priv->mail_header_view, TRUE);
                tny_mime_part_view_clear (TNY_MIME_PART_VIEW (priv->body_view));
                gtk_widget_queue_resize (GTK_WIDGET(self));
@@ -1721,17 +1738,21 @@ set_message (ModestGtkhtmlMsgView *self, TnyMsg *msg)
                tny_mime_part_view_clear (TNY_MIME_PART_VIEW (priv->body_view));
        }
 
                tny_mime_part_view_clear (TNY_MIME_PART_VIEW (priv->body_view));
        }
 
-       if (modest_mime_part_view_has_external_images (MODEST_MIME_PART_VIEW (priv->body_view)) &&
-           !modest_mime_part_view_get_view_images (MODEST_MIME_PART_VIEW (priv->body_view))) {
-               gtk_widget_show (priv->view_images_button);
+       /* Refresh priority */
+       flags = tny_header_get_flags (header);
+       flags = flags && TNY_HEADER_FLAG_PRIORITY_MASK;
+       if (flags == TNY_HEADER_FLAG_NORMAL_PRIORITY) {
+               gtk_widget_hide_all (priv->priority_box);
        } else {
        } else {
-               gtk_widget_hide (priv->view_images_button);
+               gtk_widget_show_all (priv->priority_box);
        }
 
        gtk_widget_show (priv->body_view);
        }
 
        gtk_widget_show (priv->body_view);
+       gtk_widget_set_no_show_all (priv->priority_box, TRUE);
        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);
        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);
+       gtk_widget_set_no_show_all (priv->priority_box, FALSE);
        gtk_widget_set_no_show_all (priv->mail_header_view, TRUE);
        gtk_widget_queue_resize (GTK_WIDGET(self));
        gtk_widget_queue_draw (GTK_WIDGET(self));
        gtk_widget_set_no_show_all (priv->mail_header_view, TRUE);
        gtk_widget_queue_resize (GTK_WIDGET(self));
        gtk_widget_queue_draw (GTK_WIDGET(self));
@@ -1783,6 +1804,7 @@ set_header (ModestGtkhtmlMsgView *self, TnyHeader *header)
        modest_attachments_view_set_message (MODEST_ATTACHMENTS_VIEW (priv->attachments_view), NULL);
        gtk_widget_show_all (priv->mail_header_view);
        gtk_widget_hide_all (priv->attachments_box);
        modest_attachments_view_set_message (MODEST_ATTACHMENTS_VIEW (priv->attachments_view), NULL);
        gtk_widget_show_all (priv->mail_header_view);
        gtk_widget_hide_all (priv->attachments_box);
+       gtk_widget_hide_all (priv->priority_box);
        gtk_widget_set_no_show_all (priv->mail_header_view, TRUE);
        tny_mime_part_view_clear (TNY_MIME_PART_VIEW (priv->body_view));
        gtk_widget_queue_resize (GTK_WIDGET(self));
        gtk_widget_set_no_show_all (priv->mail_header_view, TRUE);
        tny_mime_part_view_clear (TNY_MIME_PART_VIEW (priv->body_view));
        gtk_widget_queue_resize (GTK_WIDGET(self));
@@ -1853,11 +1875,28 @@ static void
 set_priority (ModestGtkhtmlMsgView *self, TnyHeaderFlags flags)
 {
        ModestGtkhtmlMsgViewPrivate *priv;
 set_priority (ModestGtkhtmlMsgView *self, TnyHeaderFlags flags)
 {
        ModestGtkhtmlMsgViewPrivate *priv;
+       TnyHeaderFlags priority_flags;
+       gboolean show_priority = FALSE;
 
        g_return_if_fail (MODEST_IS_GTKHTML_MSG_VIEW (self));
        priv = MODEST_GTKHTML_MSG_VIEW_GET_PRIVATE (self);
 
        modest_mail_header_view_set_priority (MODEST_MAIL_HEADER_VIEW (priv->mail_header_view), flags);
 
        g_return_if_fail (MODEST_IS_GTKHTML_MSG_VIEW (self));
        priv = MODEST_GTKHTML_MSG_VIEW_GET_PRIVATE (self);
 
        modest_mail_header_view_set_priority (MODEST_MAIL_HEADER_VIEW (priv->mail_header_view), flags);
+       priority_flags = flags & TNY_HEADER_FLAG_PRIORITY_MASK;
+
+       if (priority_flags == TNY_HEADER_FLAG_HIGH_PRIORITY) {
+               show_priority = TRUE;
+               gtk_image_set_from_icon_name (GTK_IMAGE (priv->priority_icon), MODEST_HEADER_ICON_HIGH, GTK_ICON_SIZE_MENU);
+       } else if (priority_flags == TNY_HEADER_FLAG_LOW_PRIORITY) {
+               show_priority = TRUE;
+               gtk_image_set_from_icon_name (GTK_IMAGE (priv->priority_icon), MODEST_HEADER_ICON_LOW, GTK_ICON_SIZE_MENU);
+       }
+
+       if (show_priority && MODEST_IS_COMPACT_MAIL_HEADER_VIEW (priv->mail_header_view)) {
+               gtk_widget_show_all  (priv->priority_box);
+       } else {
+               gtk_widget_hide_all (priv->priority_box);
+       }
 }
 
 /* INCREMENTAL SEARCH IMPLEMENTATION */
 }
 
 /* INCREMENTAL SEARCH IMPLEMENTATION */