X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-gtkhtml-msg-view.c;h=8f8b2cef8de7ea3c29226831fae80334c11495d3;hp=e61072df7c1320a420a451004b04f357d8ee6756;hb=HEAD;hpb=3da1b90ca197a40148e6da516477cbf9805a67be diff --git a/src/widgets/modest-gtkhtml-msg-view.c b/src/widgets/modest-gtkhtml-msg-view.c index e61072d..8f8b2ce 100644 --- a/src/widgets/modest-gtkhtml-msg-view.c +++ b/src/widgets/modest-gtkhtml-msg-view.c @@ -250,9 +250,11 @@ struct _ModestGtkhtmlMsgViewPrivate { #ifdef MODEST_TOOLKIT_HILDON2 GtkWidget *priority_box; GtkWidget *priority_icon; +#endif GtkWidget *calendar_box; GtkWidget *calendar_icon; -#endif + GtkWidget *calendar_actions_box; + GtkWidget *calendar_actions_container; /* internal adjustments for set_scroll_adjustments */ GtkAdjustment *hadj; @@ -1222,7 +1224,7 @@ modest_gtkhtml_msg_view_init (ModestGtkhtmlMsgView *obj) G_CALLBACK (html_adjustment_changed), obj); gtk_widget_push_composite_child (); - priv->headers_box = gtk_vbox_new (FALSE, MODEST_MARGIN_DEFAULT); + priv->headers_box = gtk_vbox_new (FALSE, 0); gtk_widget_set_composite_name (priv->headers_box, "headers"); gtk_widget_pop_composite_child (); @@ -1241,18 +1243,21 @@ modest_gtkhtml_msg_view_init (ModestGtkhtmlMsgView *obj) gtk_widget_hide_all (priv->priority_box); } +#endif + priv->calendar_actions_box = NULL; priv->calendar_icon = gtk_image_new (); + gtk_image_set_from_icon_name (GTK_IMAGE (priv->calendar_icon), MODEST_HEADER_ICON_CALENDAR, GTK_ICON_SIZE_MENU); 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"), + _("mail_fi_invitation"), priv->calendar_icon, FALSE, FALSE); gtk_widget_hide_all (priv->calendar_box); } -#endif + if (priv->attachments_view) { #ifndef MODEST_TOOLKIT_HILDON2 gchar *att_label = g_strconcat (_("mcen_me_viewer_attachments"), ":", NULL); @@ -1269,6 +1274,12 @@ modest_gtkhtml_msg_view_init (ModestGtkhtmlMsgView *obj) g_free (att_label); } + priv->calendar_actions_container = gtk_vbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (priv->headers_box), priv->calendar_actions_container, FALSE, FALSE, 0); + gtk_widget_hide (priv->calendar_actions_container); + gtk_widget_hide_all (priv->calendar_actions_container); + gtk_widget_set_no_show_all (priv->calendar_actions_container, TRUE); + #ifndef MODEST_TOOLKIT_HILDON2 separator = gtk_hseparator_new (); gtk_box_pack_start (GTK_BOX(priv->headers_box), separator, FALSE, FALSE, 0); @@ -1837,8 +1848,10 @@ 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_hide_all (priv->calendar_box); + gtk_widget_hide (priv->calendar_actions_container); + gtk_widget_hide_all (priv->calendar_actions_container); gtk_widget_set_no_show_all (priv->mail_header_view, TRUE); tny_mime_part_view_clear (TNY_MIME_PART_VIEW (priv->body_view)); @@ -1918,15 +1931,17 @@ set_message (ModestGtkhtmlMsgView *self, TnyMsg *msg, TnyMimePart *other_body) 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->calendar_box, TRUE); + gtk_widget_set_no_show_all (priv->calendar_actions_container, 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); #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->calendar_box, FALSE); + gtk_widget_set_no_show_all (priv->calendar_actions_container, FALSE); gtk_widget_set_no_show_all (priv->mail_header_view, TRUE); html_vadj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (priv->html_scroll)); @@ -2009,8 +2024,10 @@ 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_hide_all (priv->calendar_box); + gtk_widget_hide (priv->calendar_actions_container); + gtk_widget_hide_all (priv->calendar_actions_container); gtk_widget_set_no_show_all (priv->mail_header_view, TRUE); tny_mime_part_view_clear (TNY_MIME_PART_VIEW (priv->body_view)); priv->idle_changes_count = 0; @@ -2776,10 +2793,43 @@ static void set_calendar (ModestGtkhtmlMsgView *self, TnyHeader *header, TnyMsg *msg) { ModestGtkhtmlMsgViewPrivate *priv; + TnyMimePart *calendar_part; g_return_if_fail (MODEST_IS_GTKHTML_MSG_VIEW (self)); priv = MODEST_GTKHTML_MSG_VIEW_GET_PRIVATE (self); - + gtk_widget_hide (priv->calendar_actions_container); + gtk_widget_hide_all (priv->calendar_actions_container); + if (priv->calendar_actions_box) { + gtk_widget_destroy (priv->calendar_actions_box); + priv->calendar_actions_box = NULL; + } + calendar_part = modest_tny_msg_find_calendar (TNY_MSG (msg)); + + if (calendar_part) { + gboolean retval = FALSE; + priv->calendar_actions_box = gtk_vbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (priv->calendar_actions_container), priv->calendar_actions_box, FALSE, FALSE, 0); + g_signal_emit_by_name (G_OBJECT (self), "handle-calendar", calendar_part, priv->calendar_actions_box, &retval); + if (retval) { + gtk_widget_show (priv->calendar_actions_container); + gtk_widget_show_all (priv->calendar_actions_container); + gtk_widget_show (priv->calendar_actions_box); + gtk_widget_show_all (priv->calendar_actions_box); + } else { + gtk_widget_hide (priv->calendar_actions_container); + gtk_widget_hide_all (priv->calendar_actions_container); + gtk_widget_hide (priv->calendar_actions_box); + gtk_widget_hide_all (priv->calendar_actions_box); + } + gtk_widget_show_all (priv->calendar_box); + g_object_unref (calendar_part); + } else { + gtk_widget_hide_all (priv->calendar_box); + gtk_widget_hide (priv->calendar_actions_container); + gtk_widget_hide_all (priv->calendar_actions_container); + if (priv->calendar_actions_box) + gtk_widget_hide (priv->calendar_actions_box); + } }