X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-header-view-render.c;h=825ada5dfd98cdc894db504fe1b10434d11be998;hp=6cc8e9aaf676318a59ec404bee837a2dddea5310;hb=434d0476d22cca10d080097e5c181d33eaeb1b7a;hpb=02b6ad38a4e0e221276c28d84baa0ff6534443d2 diff --git a/src/widgets/modest-header-view-render.c b/src/widgets/modest-header-view-render.c index 6cc8e9a..825ada5 100644 --- a/src/widgets/modest-header-view-render.c +++ b/src/widgets/modest-header-view-render.c @@ -41,7 +41,6 @@ #include #include - static const gchar * get_status_string (ModestTnySendQueueStatus status) { @@ -120,25 +119,23 @@ set_common_flags (GtkCellRenderer *renderer, TnyHeaderFlags flags) NULL); } - -void -_modest_header_view_msgtype_cell_data (GtkTreeViewColumn *column, GtkCellRenderer *renderer, - GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer user_data) +static void +set_cell_text (GtkCellRenderer *renderer, + const gchar *text, + TnyHeaderFlags flags) { - 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 */ + PangoWeight weight; + gboolean strikethrough; + + weight = (flags & TNY_HEADER_FLAG_SEEN) ? PANGO_WEIGHT_NORMAL: PANGO_WEIGHT_ULTRABOLD; + 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, + "strikethrough", (flags &TNY_HEADER_FLAG_DELETED) ? TRUE : FALSE, + NULL); + g_object_thaw_notify (G_OBJECT (renderer)); } void @@ -186,11 +183,17 @@ _modest_header_view_date_cell_data (GtkTreeViewColumn *column, GtkCellRenderer TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, &flags, date_col, &date, -1); - - g_object_set (G_OBJECT(renderer), "text", modest_text_utils_get_display_date (date), - NULL); - set_common_flags (renderer, flags); +#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); +#endif } void @@ -215,13 +218,10 @@ _modest_header_view_sender_receiver_cell_data (GtkTreeViewColumn *column, -1); modest_text_utils_get_display_address (address); /* string is changed in-place */ - g_object_set (G_OBJECT(renderer), - "text", - address, - NULL); + + set_cell_text (renderer, (address && address[0] != '\0')?address:_("mail_va_no_to"), + flags); g_free (address); - - set_common_flags (renderer, flags); } /* * this for both incoming and outgoing mail, depending on the the user_data @@ -239,20 +239,33 @@ _modest_header_view_compact_header_cell_data (GtkTreeViewColumn *column, GtkCe TnyHeaderFlags flags = 0; gchar *address = NULL; gchar *subject = NULL; - gchar *header = 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; - gchar *display_date = NULL, *tmp_date = NULL; TnyHeaderFlags prio = 0; g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (column)); g_return_if_fail (GTK_IS_CELL_RENDERER (renderer)); g_return_if_fail (GTK_IS_TREE_MODEL (tree_model)); + +#ifdef MAEMO_CHANGES +#ifdef HAVE_GTK_TREE_VIEW_COLUMN_GET_CELL_DATA_HINT + hint = gtk_tree_view_column_get_cell_data_hint (GTK_TREE_VIEW_COLUMN (column)); + + if (hint != GTK_TREE_CELL_DATA_HINT_ALL) + 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")); @@ -296,31 +309,15 @@ _modest_header_view_compact_header_cell_data (GtkTreeViewColumn *column, GtkCe get_pixbuf_for_flag (prio), NULL); - if (subject && strlen (subject)) { - gchar* escaped_subject = g_markup_escape_text (subject, -1); - g_object_set (G_OBJECT (subject_cell), "markup", - escaped_subject, NULL); - g_free (escaped_subject); - } else { - g_object_set (G_OBJECT (subject_cell), "markup", - _("mail_va_no_subject"), NULL); - } - + set_cell_text (subject_cell, (subject && subject[0] != 0)?subject:_("mail_va_no_subject"), + flags); g_free (subject); - set_common_flags (subject_cell, flags); /* 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 */ - header = g_markup_printf_escaped ("%s", - address); + set_cell_text (recipient_cell, (address && address[0] != '\0')?address:_("mail_va_no_to"), flags); g_free (address); - g_object_set (G_OBJECT (recipient_cell), - "markup", header, - NULL); - g_free (header); - header = NULL; - set_common_flags (recipient_cell, flags); if (header_mode == MODEST_HEADER_VIEW_COMPACT_HEADER_MODE_OUTBOX) { ModestTnySendQueueStatus status = MODEST_TNY_SEND_QUEUE_UNKNOWN; @@ -333,28 +330,22 @@ _modest_header_view_compact_header_cell_data (GtkTreeViewColumn *column, GtkCe } status_str = get_status_string (status); - display_date = g_strdup_printf("%s", status_str); - g_object_set (G_OBJECT (date_or_status_cell), - "markup", display_date, - NULL); - g_free (display_date); - display_date = NULL; - } else { - display_date = g_strdup_printf ("%s", - date ? modest_text_utils_get_display_date (date) : ""); - g_object_set (G_OBJECT (date_or_status_cell), - "markup", display_date, - NULL); - g_free (tmp_date); - tmp_date = NULL; - g_free (display_date); - display_date = NULL; + 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); - - set_common_flags (date_or_status_cell, flags); } @@ -374,8 +365,7 @@ _modest_header_view_size_cell_data (GtkTreeViewColumn *column, GtkCellRenderer size_str = modest_text_utils_get_display_size (size); - g_object_set (G_OBJECT(renderer), "text", size_str, NULL); - set_common_flags (renderer, flags); + set_cell_text (renderer, size_str, flags); g_free (size_str); } @@ -398,8 +388,7 @@ _modest_header_view_status_cell_data (GtkTreeViewColumn *column, GtkCellRender else status_str = g_strdup(_("mcen_li_outbox_waiting")); - g_object_set (G_OBJECT(renderer), "text", status_str, NULL); - set_common_flags (renderer, flags); + set_cell_text (renderer, status_str, flags); g_free (status_str); }