X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-compact-mail-header-view.c;h=ee661a4e2108e3a64fafa18d726d084250d613c2;hb=4a8de13d63fefd3935633c4b46bc07caf46d7ca5;hp=5d58b375c127c72e31a758454e6cf819ee2ba3fa;hpb=a943964a0f574ff40b869a4b9e78b98d523776e2;p=modest diff --git a/src/widgets/modest-compact-mail-header-view.c b/src/widgets/modest-compact-mail-header-view.c index 5d58b37..ee661a4 100644 --- a/src/widgets/modest-compact-mail-header-view.c +++ b/src/widgets/modest-compact-mail-header-view.c @@ -51,6 +51,7 @@ typedef struct _ModestCompactMailHeaderViewPriv ModestCompactMailHeaderViewPriv; struct _ModestCompactMailHeaderViewPriv { GtkWidget *headers_vbox; + GtkWidget *event_box; GtkWidget *fromto_label; GtkWidget *fromto_contents; @@ -122,28 +123,33 @@ static void fill_address (ModestCompactMailHeaderView *self); static void set_date_time (ModestCompactMailHeaderView *compact_mail_header) { - const guint BUF_SIZE = 64; - const gchar *date_str; - gchar date_buf[BUF_SIZE]; - GString *buffer = g_string_new (""); - ModestCompactMailHeaderViewPriv *priv = MODEST_COMPACT_MAIL_HEADER_VIEW_GET_PRIVATE (compact_mail_header); - modest_text_utils_strftime (date_buf, BUF_SIZE, _HL("wdgt_va_week"), priv->date_to_show); - buffer = g_string_append (buffer, date_buf); - buffer = g_string_append_c (buffer, ' '); - buffer = g_string_append_unichar (buffer, 0x2015); - buffer = g_string_append_c (buffer, ' '); - date_str = modest_datetime_formatter_format_time (priv->datetime_formatter, priv->date_to_show); - buffer = g_string_append (buffer, date_str); - gtk_label_set_text (GTK_LABEL (priv->time_label), buffer->str); - g_string_free (buffer, TRUE); - buffer = g_string_new (""); - modest_text_utils_strftime (date_buf, BUF_SIZE, _HL("wdgt_va_date_medium"), priv->date_to_show); - buffer = g_string_append (buffer, date_buf); - - gtk_label_set_text (GTK_LABEL (priv->date_label), buffer->str); - g_string_free (buffer, TRUE); + if (priv->date_to_show == 0) { + gtk_label_set_text (GTK_LABEL (priv->time_label), ""); + gtk_label_set_text (GTK_LABEL (priv->date_label), ""); + } else { + const guint BUF_SIZE = 64; + const gchar *date_str; + gchar date_buf[BUF_SIZE]; + GString *buffer = g_string_new (""); + + modest_text_utils_strftime (date_buf, BUF_SIZE, _HL("wdgt_va_week"), priv->date_to_show); + buffer = g_string_append (buffer, date_buf); + buffer = g_string_append_c (buffer, ' '); + buffer = g_string_append_unichar (buffer, 0x2015); + buffer = g_string_append_c (buffer, ' '); + date_str = modest_datetime_formatter_format_time (priv->datetime_formatter, priv->date_to_show); + buffer = g_string_append (buffer, date_str); + gtk_label_set_text (GTK_LABEL (priv->time_label), buffer->str); + g_string_free (buffer, TRUE); + buffer = g_string_new (""); + modest_text_utils_strftime (date_buf, BUF_SIZE, _HL("wdgt_va_date_medium"), priv->date_to_show); + buffer = g_string_append (buffer, date_buf); + + gtk_label_set_text (GTK_LABEL (priv->date_label), buffer->str); + g_string_free (buffer, TRUE); + } } @@ -325,6 +331,14 @@ datetime_format_changed (ModestDatetimeFormatter *formatter, } static void +unref_event_box (ModestCompactMailHeaderView *self, + GtkWidget *event_box) +{ + ModestCompactMailHeaderViewPriv *priv = MODEST_COMPACT_MAIL_HEADER_VIEW_GET_PRIVATE (self); + priv->event_box = NULL; +} + +static void modest_compact_mail_header_view_instance_init (GTypeInstance *instance, gpointer g_class) { ModestCompactMailHeaderView *self = (ModestCompactMailHeaderView *)instance; @@ -383,10 +397,6 @@ modest_compact_mail_header_view_instance_init (GTypeInstance *instance, gpointer 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); - priv->datetime_formatter = modest_datetime_formatter_new (); g_signal_connect (G_OBJECT (priv->datetime_formatter), "format-changed", G_CALLBACK (datetime_format_changed), (gpointer) self); @@ -409,11 +419,19 @@ modest_compact_mail_header_view_instance_init (GTypeInstance *instance, gpointer gtk_box_pack_start (GTK_BOX (main_vbox), headers_date_hbox, FALSE, FALSE, 0); main_align = gtk_alignment_new (0.0, 0.0, 1.0, 1.0); - gtk_alignment_set_padding (GTK_ALIGNMENT (main_align), 0, 0, MODEST_MARGIN_DOUBLE, 0); + gtk_alignment_set_padding (GTK_ALIGNMENT (main_align), 0, MODEST_MARGIN_HALF, MODEST_MARGIN_DOUBLE, 0); + priv->event_box = gtk_event_box_new (); + gtk_event_box_set_visible_window (GTK_EVENT_BOX (priv->event_box), TRUE); gtk_container_add (GTK_CONTAINER (main_align), main_vbox); - gtk_box_pack_start (GTK_BOX (self), main_align, TRUE, TRUE, 0); + gtk_container_add (GTK_CONTAINER (priv->event_box), main_align); + gtk_box_pack_start (GTK_BOX (self), priv->event_box, TRUE, TRUE, 0); + g_object_weak_ref (G_OBJECT (priv->event_box), (GWeakNotify) unref_event_box, (gpointer) self); - gtk_widget_show_all (main_align); + update_style (self); + + g_signal_connect (G_OBJECT (self), "notify::style", G_CALLBACK (on_notify_style), (gpointer) self); + + gtk_widget_show_all (priv->event_box); priv->is_outgoing = FALSE; priv->is_draft = FALSE; @@ -428,6 +446,11 @@ modest_compact_mail_header_view_finalize (GObject *object) ModestCompactMailHeaderView *self = (ModestCompactMailHeaderView *)object; ModestCompactMailHeaderViewPriv *priv = MODEST_COMPACT_MAIL_HEADER_VIEW_GET_PRIVATE (self); + if (priv->event_box) { + g_object_weak_unref (G_OBJECT (priv->event_box), (GWeakNotify) unref_event_box, (gpointer) self); + priv->event_box = NULL; + } + if (priv->datetime_formatter) { g_object_unref (priv->datetime_formatter); priv->datetime_formatter = NULL; @@ -669,6 +692,7 @@ update_style (ModestCompactMailHeaderView *self) PangoColor color; PangoAttrList *attr_list; GSList *node; + GdkColor bg_color; g_return_if_fail (MODEST_IS_COMPACT_MAIL_HEADER_VIEW (self)); priv = MODEST_COMPACT_MAIL_HEADER_VIEW_GET_PRIVATE (self); @@ -708,6 +732,8 @@ update_style (ModestCompactMailHeaderView *self) } pango_attr_list_unref (attr_list); + gdk_color_parse (MODEST_COMPACT_HEADER_BG, &bg_color); + gtk_widget_modify_bg (GTK_WIDGET (priv->event_box), GTK_STATE_NORMAL, &bg_color); } static void