GtkWidget *main_vbox;
GtkWidget *expander;
GtkWidget *headers_vbox;
+ GtkWidget *subject_box;
+ GtkWidget *priority_icon;
GtkSizeGroup *labels_size_group;
gboolean is_outgoing;
+ gboolean is_draft;
TnyHeader *header;
+ TnyHeaderFlags priority_flags;
};
#define MODEST_MAIL_HEADER_VIEW_GET_PRIVATE(o) \
static guint signals[LAST_SIGNAL] = {0};
static void
+add_date_time_header (ModestMailHeaderView *mail_header, const gchar *name, time_t date)
+{
+ const guint BUF_SIZE = 64;
+ gchar date_buf [BUF_SIZE];
+ gchar time_buf [BUF_SIZE];
+
+ ModestMailHeaderViewPriv *priv = MODEST_MAIL_HEADER_VIEW_GET_PRIVATE (mail_header);
+ GtkWidget *hbox, *date_hbox, *time_hbox;
+ GtkWidget *label;
+
+ modest_text_utils_strftime (date_buf, BUF_SIZE, "%x", date);
+ modest_text_utils_strftime (time_buf, BUF_SIZE, "%X", date);
+
+ hbox = gtk_hbox_new (FALSE, 48);
+ date_hbox = gtk_hbox_new (FALSE, 12);
+ time_hbox = gtk_hbox_new (FALSE, 12);
+
+ label = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL (label), name);
+ gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.0);
+ gtk_box_pack_start (GTK_BOX (date_hbox), label, FALSE, FALSE, 0);
+ gtk_size_group_add_widget (priv->labels_size_group, label);
+
+ label = gtk_label_new(date_buf);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.0);
+ gtk_box_pack_start (GTK_BOX (date_hbox), label, TRUE, TRUE, 0);
+
+ gtk_box_pack_start (GTK_BOX (hbox), date_hbox, FALSE, FALSE, 0);
+
+ label = gtk_label_new(NULL);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.0);
+ gtk_label_set_markup (GTK_LABEL (label), _("mail_va_time"));
+ gtk_box_pack_start (GTK_BOX (time_hbox), label, FALSE, FALSE, 0);
+
+ label = gtk_label_new(time_buf);
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.0);
+ gtk_box_pack_start (GTK_BOX (time_hbox), label, TRUE, TRUE, 0);
+
+ gtk_box_pack_start (GTK_BOX (hbox), time_hbox, TRUE, TRUE, 0);
+
+ gtk_box_pack_start (GTK_BOX (priv->headers_vbox), hbox, FALSE, FALSE, 0);
+ gtk_widget_show (hbox);
+}
+
+static void
activate_recpt (GtkWidget *recpt_view, const gchar *address, gpointer user_data)
{
ModestMailHeaderView * view = MODEST_MAIL_HEADER_VIEW (user_data);
g_signal_emit (G_OBJECT (view), signals[RECPT_ACTIVATED_SIGNAL], 0, address);
}
+#if 0 /* This function is not used. murrayc. */
static void
add_header (ModestMailHeaderView *widget, const gchar *field, const gchar *value)
{
ModestMailHeaderViewPriv *priv = MODEST_MAIL_HEADER_VIEW_GET_PRIVATE (widget);
GtkWidget *hbox;
GtkWidget *label_field, *label_value;
+ GtkWidget *scroll_text;
+ GtkTextBuffer *text_buffer;
hbox = gtk_hbox_new (FALSE, 12);
label_field = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label_field), field);
- gtk_misc_set_alignment (GTK_MISC (label_field), 0.0, 0.0);
- label_value = gtk_label_new (NULL);
- gtk_label_set_text (GTK_LABEL (label_value), value);
- gtk_label_set_selectable (GTK_LABEL (label_value), TRUE);
- gtk_misc_set_alignment (GTK_MISC (label_value), 0.0, 0.0);
+ gtk_misc_set_alignment (GTK_MISC (label_field), 1.0, 0.0);
+ scroll_text = modest_scroll_text_new (NULL, 2);
+ label_value = (GtkWidget *) modest_scroll_text_get_text_view (MODEST_SCROLL_TEXT (scroll_text));
+ text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (label_value));
+ gtk_text_buffer_set_text (text_buffer, value, -1);
gtk_box_pack_start (GTK_BOX (hbox), label_field, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (hbox), label_value, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox), scroll_text, TRUE, TRUE, 0);
gtk_size_group_add_widget (priv->labels_size_group, label_field);
gtk_box_pack_start (GTK_BOX (priv->headers_vbox), hbox, FALSE, FALSE, 0);
gtk_widget_show (hbox);
}
+#endif
+
static void
add_recpt_header (ModestMailHeaderView *widget, const gchar *field, const gchar *value)
hbox = gtk_hbox_new (FALSE, 12);
label_field = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label_field), field);
- gtk_misc_set_alignment (GTK_MISC (label_field), 0.0, 0.0);
+ gtk_misc_set_alignment (GTK_MISC (label_field), 1.0, 0.0);
label_value = modest_recpt_view_new ();
modest_recpt_view_set_recipients (MODEST_RECPT_VIEW(label_value), value);
g_signal_connect (G_OBJECT (label_value), "activate", G_CALLBACK (activate_recpt), widget);
}
switch (folder_type) {
+ case TNY_FOLDER_TYPE_DRAFTS:
case TNY_FOLDER_TYPE_OUTBOX:
case TNY_FOLDER_TYPE_SENT:
- case TNY_FOLDER_TYPE_DRAFTS:
priv->is_outgoing = TRUE;
break;
default:
priv->is_outgoing = FALSE;
}
+ priv->is_draft = (folder_type == TNY_FOLDER_TYPE_DRAFTS);
g_object_unref (folder);
}
if (header && G_IS_OBJECT (header))
{
const gchar *to, *from, *subject, *bcc, *cc;
+ GtkWidget *subject_label;
g_object_ref (G_OBJECT (header));
priv->header = header;
cc = tny_header_get_cc (header);
bcc = tny_header_get_bcc (header);
- if (subject)
- add_header (MODEST_MAIL_HEADER_VIEW (self), _("<b>Subject:</b>"), subject);
+ priv->subject_box = gtk_hbox_new (FALSE, 0);
+ subject_label = gtk_label_new (NULL);
+ if (subject && (subject[0] != '\0'))
+ gtk_label_set_text (GTK_LABEL (subject_label), subject);
+ else
+ gtk_label_set_text (GTK_LABEL (subject_label), _("mail_va_no_subject"));
+ gtk_label_set_single_line_mode (GTK_LABEL (subject_label), TRUE);
+ gtk_label_set_ellipsize (GTK_LABEL (subject_label), PANGO_ELLIPSIZE_END);
+ gtk_label_set_selectable (GTK_LABEL (subject_label), TRUE);
+ gtk_misc_set_alignment (GTK_MISC (subject_label), 0.0, 0.0);
+
+ /* TODO: code disabled until we can get real priority information from message */
+/* if (tny_header_get_flags (header) & TNY_HEADER_FLAG_PRIORITY) { */
+/* GtkWidget *priority_icon = gtk_image_new_from_icon_name ("qgn_list_messaging_high", GTK_ICON_SIZE_MENU); */
+/* gtk_box_pack_start (GTK_BOX (subject_box), priority_icon, FALSE, FALSE, 0); */
+/* } */
+ priv->priority_icon = NULL;
+ gtk_box_pack_end (GTK_BOX (priv->subject_box), subject_label, TRUE, TRUE, 0);
if (priv->is_outgoing) {
- gchar *sent = modest_text_utils_get_display_date (tny_header_get_date_sent (header));
- gtk_label_set_markup (GTK_LABEL (priv->fromto_label), _("<b>To:</b>"));
+ gtk_label_set_markup (GTK_LABEL (priv->fromto_label), _("mail_va_to"));
if (to)
modest_recpt_view_set_recipients (MODEST_RECPT_VIEW (priv->fromto_contents), to);
- add_header (MODEST_MAIL_HEADER_VIEW (self), _("<b>Sent:</b>"), sent);
- g_free (sent);
+ if (cc)
+ add_recpt_header (MODEST_MAIL_HEADER_VIEW (self), _("mail_va_cc"), cc);
+ if (bcc)
+ add_recpt_header (MODEST_MAIL_HEADER_VIEW (self), _("mail_va_hotfix1"), bcc);
+ if (priv->is_draft&& from)
+ add_recpt_header (MODEST_MAIL_HEADER_VIEW (self), _("mail_va_from"), from);
+ modest_mail_header_view_add_custom_header (MODEST_MAIL_HEADER_VIEW (self), _("mail_va_subject"),
+ priv->subject_box, TRUE, TRUE);
+ if (priv->is_draft)
+ add_date_time_header (MODEST_MAIL_HEADER_VIEW (self), _("mcen_fi_message_properties_created"),
+ tny_header_get_date_sent (header));
+ else
+ add_date_time_header (MODEST_MAIL_HEADER_VIEW (self), _("mcen_fi_message_properties_sent"),
+ tny_header_get_date_sent (header));
} else {
- gchar *received = modest_text_utils_get_display_date (tny_header_get_date_received (header));
- gtk_label_set_markup (GTK_LABEL (priv->fromto_label), _("<b>From:</b>"));
+ gtk_label_set_markup (GTK_LABEL (priv->fromto_label), _("mail_va_from"));
if (from)
modest_recpt_view_set_recipients (MODEST_RECPT_VIEW (priv->fromto_contents), from);
- add_header (MODEST_MAIL_HEADER_VIEW (self), _("<b>Received:</b>"), received);
- g_free (received);
+ if (to)
+ add_recpt_header (MODEST_MAIL_HEADER_VIEW (self), _("mail_va_to"), to);
+ if (cc)
+ add_recpt_header (MODEST_MAIL_HEADER_VIEW (self), _("mail_va_cc"), cc);
+ if (bcc)
+ add_recpt_header (MODEST_MAIL_HEADER_VIEW (self), _("mail_va_hotfix1"), bcc);
+ modest_mail_header_view_add_custom_header (MODEST_MAIL_HEADER_VIEW (self), _("mail_va_subject"),
+ priv->subject_box, TRUE, TRUE);
+ add_date_time_header (MODEST_MAIL_HEADER_VIEW (self), _("mcen_fi_message_properties_received"),
+ tny_header_get_date_received (header));
}
- if (cc)
- add_recpt_header (MODEST_MAIL_HEADER_VIEW (self), _("<b>Cc:</b>"), cc);
- if (bcc)
- add_recpt_header (MODEST_MAIL_HEADER_VIEW (self), _("<b>Bcc:</b>"), bcc);
}
gtk_widget_show_all (GTK_WIDGET (self));
gtk_widget_queue_draw (GTK_WIDGET (priv->expander));
}
+const GtkWidget *
+modest_mail_header_view_add_custom_header (ModestMailHeaderView *header_view,
+ const gchar *label,
+ GtkWidget *custom_widget,
+ gboolean with_expander,
+ gboolean start)
+{
+ ModestMailHeaderViewPriv *priv;
+ g_return_val_if_fail (MODEST_IS_MAIL_HEADER_VIEW (header_view), NULL);
+ GtkWidget *hbox;
+ GtkWidget *label_field;
+
+ priv = MODEST_MAIL_HEADER_VIEW_GET_PRIVATE (header_view);
+ hbox = gtk_hbox_new (FALSE, 12);
+ label_field = gtk_label_new (NULL);
+ gtk_label_set_markup (GTK_LABEL (label_field), label);
+ gtk_misc_set_alignment (GTK_MISC (label_field), 1.0, 0.0);
+ gtk_box_pack_start (GTK_BOX (hbox), label_field, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox), custom_widget, TRUE, TRUE, 0);
+ gtk_size_group_add_widget (priv->labels_size_group, label_field);
+
+ if (with_expander) {
+ if (start)
+ gtk_box_pack_start (GTK_BOX (priv->headers_vbox), hbox, FALSE, FALSE, 0);
+ else
+ gtk_box_pack_end (GTK_BOX (priv->headers_vbox), hbox, FALSE, FALSE, 0);
+ } else {
+ if (start)
+ gtk_box_pack_start (GTK_BOX (priv->main_vbox), hbox, FALSE, FALSE, 0);
+ else
+ gtk_box_pack_end (GTK_BOX (priv->main_vbox), hbox, FALSE, FALSE, 0);
+ }
+
+ return hbox;
+}
+
/**
* modest_mail_header_view_new:
*
* Return value: a new #ModestHeaderView instance implemented for Gtk+
**/
TnyHeaderView*
-modest_mail_header_view_new (void)
+modest_mail_header_view_new (gboolean expanded)
{
+ ModestMailHeaderViewPriv *priv;
ModestMailHeaderView *self = g_object_new (MODEST_TYPE_MAIL_HEADER_VIEW, NULL);
+ priv = MODEST_MAIL_HEADER_VIEW_GET_PRIVATE (self);
+ gtk_expander_set_expanded (GTK_EXPANDER (priv->expander), expanded);
+ expander_activate (priv->expander, self);
+
return TNY_HEADER_VIEW (self);
}
fromto_hbox = gtk_hbox_new (FALSE, 12);
priv->fromto_label = gtk_label_new (NULL);
- gtk_misc_set_alignment (GTK_MISC (priv->fromto_label), 0.0, 0.0);
+ gtk_misc_set_alignment (GTK_MISC (priv->fromto_label), 1.0, 0.0);
priv->fromto_contents = modest_recpt_view_new ();
g_signal_connect (G_OBJECT (priv->fromto_contents), "activate", G_CALLBACK (activate_recpt), instance);
gtk_container_set_reallocate_redraws (GTK_CONTAINER (instance), TRUE);
priv->is_outgoing = FALSE;
+ priv->is_draft = FALSE;
return;
}
g_type_class_add_private (object_class, sizeof (ModestMailHeaderViewPriv));
signals[RECPT_ACTIVATED_SIGNAL] =
- g_signal_new ("recpt-activated",
+ g_signal_new ("recpt_activated",
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET(ModestMailHeaderViewClass, recpt_activated),
return type;
}
+
+TnyHeaderFlags
+modest_mail_header_view_get_priority (ModestMailHeaderView *headers_view)
+{
+ ModestMailHeaderViewPriv *priv;
+
+ g_return_val_if_fail (MODEST_IS_MAIL_HEADER_VIEW (headers_view), 0);
+ priv = MODEST_MAIL_HEADER_VIEW_GET_PRIVATE (headers_view);
+
+ return priv->priority_flags;
+}
+
+void
+modest_mail_header_view_set_priority (ModestMailHeaderView *headers_view,
+ TnyHeaderFlags flags)
+{
+ ModestMailHeaderViewPriv *priv;
+
+ g_return_if_fail (MODEST_IS_MAIL_HEADER_VIEW (headers_view));
+ priv = MODEST_MAIL_HEADER_VIEW_GET_PRIVATE (headers_view);
+
+ priv->priority_flags = flags & (TNY_HEADER_FLAG_PRIORITY);
+
+ if (priv->priority_flags == 0) {
+ 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 ("qgn_list_messaging_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 ("qgn_list_messaging_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);
+ }
+}