X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-header-view-render.c;h=a7a242ac0242024d42a59aa84aaeaef922a97afb;hp=172853295e6839ebdffb49b9f5a03675ddedae1e;hb=4927d2ba3643bba250d1c0e12a8c732db905fad3;hpb=7691e2bcadbe4e08be6afac44ed922681dbb6b6f diff --git a/src/widgets/modest-header-view-render.c b/src/widgets/modest-header-view-render.c index 1728532..a7a242a 100644 --- a/src/widgets/modest-header-view-render.c +++ b/src/widgets/modest-header-view-render.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -41,10 +42,11 @@ #include #include -typedef enum { - RENDER_CELL_STYLE_DEFAULT=0, - RENDER_CELL_STYLE_GREY -} RenderCellStyle; +#ifdef MODEST_TOOLKIT_HILDON2 +#define SMALL_ICON_SIZE MODEST_ICON_SIZE_SMALL +#else +#define SMALL_ICON_SIZE MODEST_ICON_SIZE_SMALL +#endif static const gchar * get_status_string (ModestTnySendQueueStatus status) @@ -83,34 +85,34 @@ get_pixbuf_for_flag (TnyHeaderFlags flag) case TNY_HEADER_FLAG_DELETED: if (G_UNLIKELY(!deleted_pixbuf)) deleted_pixbuf = modest_platform_get_icon (MODEST_HEADER_ICON_DELETED, - MODEST_ICON_SIZE_SMALL); + SMALL_ICON_SIZE); return deleted_pixbuf; case TNY_HEADER_FLAG_SEEN: if (G_UNLIKELY(!seen_pixbuf)) seen_pixbuf = modest_platform_get_icon (MODEST_HEADER_ICON_READ, - MODEST_ICON_SIZE_SMALL); + SMALL_ICON_SIZE); return seen_pixbuf; case TNY_HEADER_FLAG_ATTACHMENTS: if (G_UNLIKELY(!attachments_pixbuf)) attachments_pixbuf = modest_platform_get_icon (MODEST_HEADER_ICON_ATTACH, - MODEST_ICON_SIZE_SMALL); + SMALL_ICON_SIZE); return attachments_pixbuf; case TNY_HEADER_FLAG_HIGH_PRIORITY: if (G_UNLIKELY(!high_pixbuf)) high_pixbuf = modest_platform_get_icon (MODEST_HEADER_ICON_HIGH, - MODEST_ICON_SIZE_SMALL); + SMALL_ICON_SIZE); return high_pixbuf; case TNY_HEADER_FLAG_LOW_PRIORITY: if (G_UNLIKELY(!low_pixbuf)) low_pixbuf = modest_platform_get_icon (MODEST_HEADER_ICON_LOW, - MODEST_ICON_SIZE_SMALL); + SMALL_ICON_SIZE); return low_pixbuf; case TNY_HEADER_FLAG_NORMAL_PRIORITY: return NULL; default: if (G_UNLIKELY(!unread_pixbuf)) unread_pixbuf = modest_platform_get_icon (MODEST_HEADER_ICON_UNREAD, - MODEST_ICON_SIZE_SMALL); + SMALL_ICON_SIZE); return unread_pixbuf; } } @@ -127,54 +129,45 @@ set_common_flags (GtkCellRenderer *renderer, TnyHeaderFlags flags) static void set_cell_text (GtkCellRenderer *renderer, const gchar *text, - TnyHeaderFlags flags, - RenderCellStyle style) + TnyHeaderFlags flags) { - PangoWeight weight; gboolean strikethrough; + gboolean bold_is_active_color; + GdkColor *color = NULL; + PangoWeight weight; - weight = (flags & TNY_HEADER_FLAG_SEEN) ? PANGO_WEIGHT_NORMAL: PANGO_WEIGHT_ULTRABOLD; + bold_is_active_color = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (renderer), BOLD_IS_ACTIVE_COLOR)); + if (bold_is_active_color) { + color = g_object_get_data (G_OBJECT (renderer), ACTIVE_COLOR); + } + +#ifdef MODEST_TOOLKIT_HILDON2 + weight = PANGO_WEIGHT_NORMAL; +#else + weight = (bold_is_active_color || (flags & TNY_HEADER_FLAG_SEEN)) ? PANGO_WEIGHT_NORMAL: PANGO_WEIGHT_ULTRABOLD; +#endif strikethrough = (flags & TNY_HEADER_FLAG_DELETED) ? TRUE:FALSE; g_object_freeze_notify (G_OBJECT (renderer)); g_object_set (G_OBJECT (renderer), "text", text, - "weight", (flags & TNY_HEADER_FLAG_SEEN) ? PANGO_WEIGHT_NORMAL : PANGO_WEIGHT_ULTRABOLD, + "weight", weight, "strikethrough", (flags &TNY_HEADER_FLAG_DELETED) ? TRUE : FALSE, NULL); - switch (style) { - case RENDER_CELL_STYLE_GREY: - g_object_set (G_OBJECT (renderer), - "foreground", "#666666", - "scale", PANGO_SCALE_SMALL, - NULL); - break; - case RENDER_CELL_STYLE_DEFAULT: - break; + if (bold_is_active_color && color) { + if (flags & TNY_HEADER_FLAG_SEEN) { + g_object_set (G_OBJECT (renderer), + "foreground-set", FALSE, + NULL); + } else { + g_object_set (G_OBJECT (renderer), + "foreground-gdk", color, + "foreground-set", TRUE, + NULL); + } } g_object_thaw_notify (G_OBJECT (renderer)); } - -void -_modest_header_view_msgtype_cell_data (GtkTreeViewColumn *column, GtkCellRenderer *renderer, - GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer user_data) -{ - TnyHeaderFlags flags; - - gtk_tree_model_get (tree_model, iter, TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, - &flags, -1); - - if (flags & TNY_HEADER_FLAG_DELETED) - g_object_set (G_OBJECT (renderer), "pixbuf", - get_pixbuf_for_flag (TNY_HEADER_FLAG_DELETED), NULL); - else if (flags & TNY_HEADER_FLAG_SEEN) - g_object_set (G_OBJECT (renderer), "pixbuf", - get_pixbuf_for_flag (TNY_HEADER_FLAG_SEEN), NULL); - else - g_object_set (G_OBJECT (renderer), "pixbuf", - get_pixbuf_for_flag (0), NULL); /* ughh, FIXME */ -} - void _modest_header_view_attach_cell_data (GtkTreeViewColumn *column, GtkCellRenderer *renderer, GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer user_data) @@ -220,9 +213,17 @@ _modest_header_view_date_cell_data (GtkTreeViewColumn *column, GtkCellRenderer TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, &flags, date_col, &date, -1); - + +#if GTK_CHECK_VERSION (2, 12, 0) + ModestHeaderView *header_view; + header_view = MODEST_HEADER_VIEW (gtk_tree_view_column_get_tree_view (column)); + set_cell_text (renderer, + _modest_header_view_get_display_date (header_view, date), + flags); +#else set_cell_text (renderer, modest_text_utils_get_display_date (date), - flags, RENDER_CELL_STYLE_DEFAULT); + flags); +#endif } void @@ -240,14 +241,16 @@ _modest_header_view_sender_receiver_cell_data (GtkTreeViewColumn *column, sender_receiver_col = TNY_GTK_HEADER_LIST_MODEL_FROM_COLUMN; else sender_receiver_col = TNY_GTK_HEADER_LIST_MODEL_TO_COLUMN; - + gtk_tree_model_get (tree_model, iter, sender_receiver_col, &address, TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, &flags, -1); - + modest_text_utils_get_display_address (address); /* string is changed in-place */ - set_cell_text (renderer, address, flags, RENDER_CELL_STYLE_DEFAULT); + + set_cell_text (renderer, (address && address[0] != '\0')?address:_("mail_va_no_to"), + flags); g_free (address); } /* @@ -259,27 +262,21 @@ void _modest_header_view_compact_header_cell_data (GtkTreeViewColumn *column, GtkCellRenderer *renderer, GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer user_data) { - /* Note that GtkTreeModel is a GtkTreeModelFilter. */ - - /* printf ("DEBUG: %s: tree_model gtype=%s\n", __FUNCTION__, G_OBJECT_TYPE_NAME (tree_model)); */ - TnyHeaderFlags flags = 0; - gchar *address = NULL; + gchar *recipients = NULL, *addresses; gchar *subject = NULL; time_t date; - -#ifdef MAEMO_CHANGES -#ifdef HAVE_GTK_TREE_VIEW_COLUMN_GET_CELL_DATA_HINT - GtkTreeCellDataHint hint; -#endif -#endif - GtkCellRenderer *recipient_cell, *date_or_status_cell, *subject_cell, *attach_cell, *priority_cell, *recipient_box, *subject_box = NULL; TnyHeader *msg_header = NULL; TnyHeaderFlags prio = 0; +#ifdef MAEMO_CHANGES +#ifdef HAVE_GTK_TREE_VIEW_COLUMN_GET_CELL_DATA_HINT + GtkTreeCellDataHint hint; +#endif +#endif g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (column)); g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); @@ -293,7 +290,7 @@ _modest_header_view_compact_header_cell_data (GtkTreeViewColumn *column, GtkCe return; #endif #endif - + recipient_box = GTK_CELL_RENDERER (g_object_get_data (G_OBJECT (renderer), "recpt-box-renderer")); subject_box = GTK_CELL_RENDERER (g_object_get_data (G_OBJECT (renderer), "subject-box-renderer")); priority_cell = GTK_CELL_RENDERER (g_object_get_data (G_OBJECT (subject_box), "priority-renderer")); @@ -307,7 +304,7 @@ _modest_header_view_compact_header_cell_data (GtkTreeViewColumn *column, GtkCe if (header_mode == MODEST_HEADER_VIEW_COMPACT_HEADER_MODE_IN) gtk_tree_model_get (tree_model, iter, TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, &flags, - TNY_GTK_HEADER_LIST_MODEL_FROM_COLUMN, &address, + TNY_GTK_HEADER_LIST_MODEL_FROM_COLUMN, &recipients, TNY_GTK_HEADER_LIST_MODEL_SUBJECT_COLUMN, &subject, TNY_GTK_HEADER_LIST_MODEL_DATE_RECEIVED_TIME_T_COLUMN, &date, TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &msg_header, @@ -315,7 +312,7 @@ _modest_header_view_compact_header_cell_data (GtkTreeViewColumn *column, GtkCe else gtk_tree_model_get (tree_model, iter, TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, &flags, - TNY_GTK_HEADER_LIST_MODEL_TO_COLUMN, &address, + TNY_GTK_HEADER_LIST_MODEL_TO_COLUMN, &recipients, TNY_GTK_HEADER_LIST_MODEL_SUBJECT_COLUMN, &subject, TNY_GTK_HEADER_LIST_MODEL_DATE_SENT_TIME_T_COLUMN, &date, TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &msg_header, @@ -337,14 +334,16 @@ _modest_header_view_compact_header_cell_data (GtkTreeViewColumn *column, GtkCe NULL); set_cell_text (subject_cell, (subject && subject[0] != 0)?subject:_("mail_va_no_subject"), - flags, RENDER_CELL_STYLE_DEFAULT); + flags); g_free (subject); - /* FIXME: we hardcode the color to #666666; instead we should use SecondaryTextColour from the - * theme (gtkrc file) */ - modest_text_utils_get_display_address (address); /* changed in-place */ - set_cell_text (recipient_cell, address, flags, RENDER_CELL_STYLE_GREY); - + /* Show the list of senders/recipients */ + addresses = modest_text_utils_get_display_addresses ((const gchar *) recipients); + set_cell_text (recipient_cell, (addresses) ? addresses : _("mail_va_no_to"), flags); + g_free (addresses); + g_free (recipients); + + /* Show status (outbox folder) or sent date */ if (header_mode == MODEST_HEADER_VIEW_COMPACT_HEADER_MODE_OUTBOX) { ModestTnySendQueueStatus status = MODEST_TNY_SEND_QUEUE_UNKNOWN; const gchar *status_str = ""; @@ -354,14 +353,22 @@ _modest_header_view_compact_header_cell_data (GtkTreeViewColumn *column, GtkCe tny_header_set_flag (msg_header, TNY_HEADER_FLAG_SUSPENDED); } } - + status_str = get_status_string (status); - set_cell_text (date_or_status_cell, status_str, flags, RENDER_CELL_STYLE_GREY); - } else { - set_cell_text (date_or_status_cell, date ? modest_text_utils_get_display_date (date) : "", - flags, RENDER_CELL_STYLE_GREY); + set_cell_text (date_or_status_cell, status_str, flags); + } else { +#if GTK_CHECK_VERSION (2, 12, 0) + ModestHeaderView *header_view; + header_view = MODEST_HEADER_VIEW (gtk_tree_view_column_get_tree_view (column)); + set_cell_text (date_or_status_cell, + date ? _modest_header_view_get_display_date (header_view, date) : "", + flags); +#else + set_cell_text (date_or_status_cell, + date ? modest_text_utils_get_display_date (date) : "", + flags); +#endif } - if (msg_header != NULL) g_object_unref (msg_header); } @@ -383,7 +390,7 @@ _modest_header_view_size_cell_data (GtkTreeViewColumn *column, GtkCellRenderer size_str = modest_text_utils_get_display_size (size); - set_cell_text (renderer, size_str, flags, RENDER_CELL_STYLE_DEFAULT); + set_cell_text (renderer, size_str, flags); g_free (size_str); } @@ -406,7 +413,7 @@ _modest_header_view_status_cell_data (GtkTreeViewColumn *column, GtkCellRender else status_str = g_strdup(_("mcen_li_outbox_waiting")); - set_cell_text (renderer, status_str, flags, RENDER_CELL_STYLE_DEFAULT); + set_cell_text (renderer, status_str, flags); g_free (status_str); }