From 246442269a2e310532da90bb4d12c508244e3779 Mon Sep 17 00:00:00 2001 From: Jose Dapena Paz Date: Fri, 12 Dec 2008 16:28:00 +0000 Subject: [PATCH] Add support for datetime formatter in header view pmo-trunk-r6817 --- src/widgets/modest-header-view-priv.h | 2 ++ src/widgets/modest-header-view-render.c | 10 ++++++++-- src/widgets/modest-header-view.c | 27 +++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/widgets/modest-header-view-priv.h b/src/widgets/modest-header-view-priv.h index 226c42d..5fdc7a8 100644 --- a/src/widgets/modest-header-view-priv.h +++ b/src/widgets/modest-header-view-priv.h @@ -60,6 +60,8 @@ void _modest_header_view_sender_receiver_cell_data (GtkTreeViewColumn *column, void _modest_header_view_compact_header_cell_data (GtkTreeViewColumn *column, GtkCellRenderer *renderer, GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer user_data); +const gchar *_modest_header_view_get_display_date (ModestHeaderView *self, time_t date); + typedef enum _ModestHeaderViewCompactHeaderMode { MODEST_HEADER_VIEW_COMPACT_HEADER_MODE_IN = 0, MODEST_HEADER_VIEW_COMPACT_HEADER_MODE_OUT = 1, diff --git a/src/widgets/modest-header-view-render.c b/src/widgets/modest-header-view-render.c index 9b03093..5b60543 100644 --- a/src/widgets/modest-header-view-render.c +++ b/src/widgets/modest-header-view-render.c @@ -189,6 +189,7 @@ _modest_header_view_date_cell_data (GtkTreeViewColumn *column, GtkCellRenderer TnyHeaderFlags flags; guint date, date_col; gboolean received = GPOINTER_TO_INT(user_data); + ModestHeaderView *header_view; if (received) date_col = TNY_GTK_HEADER_LIST_MODEL_DATE_RECEIVED_TIME_T_COLUMN; @@ -200,7 +201,9 @@ _modest_header_view_date_cell_data (GtkTreeViewColumn *column, GtkCellRenderer date_col, &date, -1); - set_cell_text (renderer, modest_text_utils_get_display_date (date), + 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, RENDER_CELL_STYLE_DEFAULT); } @@ -258,12 +261,15 @@ _modest_header_view_compact_header_cell_data (GtkTreeViewColumn *column, GtkCe *recipient_box, *subject_box = NULL; TnyHeader *msg_header = NULL; TnyHeaderFlags prio = 0; + ModestHeaderView *header_view; 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)); + header_view = MODEST_HEADER_VIEW (gtk_tree_view_column_get_tree_view (column)); + #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)); @@ -338,7 +344,7 @@ _modest_header_view_compact_header_cell_data (GtkTreeViewColumn *column, GtkCe 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) : "", + set_cell_text (date_or_status_cell, date ? _modest_header_view_get_display_date (header_view, date) : "", flags, RENDER_CELL_STYLE_GREY); } diff --git a/src/widgets/modest-header-view.c b/src/widgets/modest-header-view.c index 2a68e09..45d1c26 100644 --- a/src/widgets/modest-header-view.c +++ b/src/widgets/modest-header-view.c @@ -49,6 +49,7 @@ #include "modest-platform.h" #include #include +#include static void modest_header_view_class_init (ModestHeaderViewClass *klass); static void modest_header_view_init (ModestHeaderView *obj); @@ -155,6 +156,8 @@ struct _ModestHeaderViewPrivate { HeaderViewStatus status; guint status_timeout; gboolean notify_status; /* whether or not the filter_row should notify about changes in the filtering */ + + ModestDatetimeFormatter *datetime_formatter; }; typedef struct _HeadersCountChangedHelper HeadersCountChangedHelper; @@ -553,6 +556,13 @@ modest_header_view_set_columns (ModestHeaderView *self, const GList *columns, Tn } static void +datetime_format_changed (ModestDatetimeFormatter *formatter, + ModestHeaderView *self) +{ + gtk_widget_queue_draw (GTK_WIDGET (self)); +} + +static void modest_header_view_init (ModestHeaderView *obj) { ModestHeaderViewPrivate *priv; @@ -587,6 +597,10 @@ modest_header_view_init (ModestHeaderView *obj) } } + priv->datetime_formatter = modest_datetime_formatter_new (); + g_signal_connect (G_OBJECT (priv->datetime_formatter), "format-changed", + G_CALLBACK (datetime_format_changed), (gpointer) obj); + setup_drag_and_drop (GTK_WIDGET(obj)); } @@ -600,6 +614,11 @@ modest_header_view_dispose (GObject *obj) self = MODEST_HEADER_VIEW(obj); priv = MODEST_HEADER_VIEW_GET_PRIVATE(self); + if (priv->datetime_formatter) { + g_object_unref (priv->datetime_formatter); + priv->datetime_formatter = NULL; + } + /* Free in the dispose to avoid unref cycles */ if (priv->folder) { tny_folder_remove_observer (priv->folder, TNY_FOLDER_OBSERVER (obj)); @@ -2231,3 +2250,11 @@ modest_header_view_notify_observers(ModestHeaderView *header_view, g_mutex_unlock(priv->observer_list_lock); } +const gchar * +_modest_header_view_get_display_date (ModestHeaderView *self, time_t date) +{ + ModestHeaderViewPrivate *priv = NULL; + + priv = MODEST_HEADER_VIEW_GET_PRIVATE(self); + return modest_datetime_formatter_display_datetime (priv->datetime_formatter, date); +} -- 1.7.9.5