X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-header-view.c;h=7b501ce1670886f4cf7f551085b44b60be0f2cc9;hp=78ec1b3577aeb37287b5cb841f828c12f65e11dc;hb=e374da56f67092cecb1572dd4bee2ca34e0bc04c;hpb=f6d386ff93e929092ba105385a29d760aeba9ff7 diff --git a/src/widgets/modest-header-view.c b/src/widgets/modest-header-view.c index 78ec1b3..7b501ce 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); @@ -93,6 +94,7 @@ static void disable_drag_and_drop (GtkWidget *self); static GtkTreePath * get_selected_row (GtkTreeView *self, GtkTreeModel **model); +#ifndef MODEST_TOOLKIT_HILDON2 static gboolean on_focus_in (GtkWidget *sef, GdkEventFocus *event, gpointer user_data); @@ -100,6 +102,7 @@ static gboolean on_focus_in (GtkWidget *sef, static gboolean on_focus_out (GtkWidget *self, GdkEventFocus *event, gpointer user_data); +#endif static void folder_monitor_update (TnyFolderObserver *self, TnyFolderChange *change); @@ -155,6 +158,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; @@ -250,8 +255,8 @@ modest_header_view_class_init (ModestHeaderViewClass *klass) G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (ModestHeaderViewClass,header_activated), NULL, NULL, - g_cclosure_marshal_VOID__POINTER, - G_TYPE_NONE, 1, G_TYPE_POINTER); + gtk_marshal_VOID__POINTER_POINTER, + G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_POINTER); signals[ITEM_NOT_FOUND_SIGNAL] = @@ -280,6 +285,11 @@ modest_header_view_class_init (ModestHeaderViewClass *klass) NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); + +#ifdef MODEST_TOOLKIT_HILDON2 + gtk_rc_parse_string ("class \"ModestHeaderView\" style \"fremantle-touchlist\""); + +#endif } static void @@ -548,6 +558,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; @@ -582,6 +599,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)); } @@ -595,6 +616,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)); @@ -685,10 +711,12 @@ modest_header_view_new (TnyFolder *folder, ModestHeaderViewStyle style) g_signal_connect (self, "row-activated", G_CALLBACK (on_header_row_activated), NULL); +#ifndef MODEST_TOOLKIT_HILDON2 g_signal_connect (self, "focus-in-event", G_CALLBACK(on_focus_in), NULL); g_signal_connect (self, "focus-out-event", G_CALLBACK(on_focus_out), NULL); +#endif g_signal_connect (self, "button-press-event", G_CALLBACK(on_button_press_event), NULL); @@ -943,6 +971,9 @@ modest_header_view_on_expose_event(GtkTreeView *header_view, if (!model) return FALSE; +#ifdef MODEST_TOOLKIT_HILDON2 + return FALSE; +#endif sel = gtk_tree_view_get_selection(header_view); if(!gtk_tree_selection_count_selected_rows(sel)) { if (gtk_tree_model_get_iter_first(model, &tree_iter)) { @@ -1283,23 +1314,16 @@ void modest_header_view_set_folder (ModestHeaderView *self, TnyFolder *folder, gboolean refresh, + ModestWindow *progress_window, RefreshAsyncUserCallback callback, gpointer user_data) { ModestHeaderViewPrivate *priv; - ModestWindow *main_win; g_return_if_fail (self); priv = MODEST_HEADER_VIEW_GET_PRIVATE(self); - main_win = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr (), - FALSE); /* don't create */ - if (!main_win) { - g_warning ("%s: BUG: no main window", __FUNCTION__); - return; - } - if (priv->folder) { if (priv->status_timeout) { g_source_remove (priv->status_timeout); @@ -1343,9 +1367,10 @@ modest_header_view_set_folder (ModestHeaderView *self, info->user_data = user_data; /* Create the mail operation (source will be the parent widget) */ - mail_op = modest_mail_operation_new_with_error_handling (G_OBJECT(main_win), - refresh_folder_error_handler, - NULL, NULL); + if (progress_window) + mail_op = modest_mail_operation_new_with_error_handling (G_OBJECT(progress_window), + refresh_folder_error_handler, + NULL, NULL); if (refresh) { modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op); @@ -1424,7 +1449,7 @@ on_header_row_activated (GtkTreeView *treeview, GtkTreePath *path, /* Emit signal */ g_signal_emit (G_OBJECT(self), signals[HEADER_ACTIVATED_SIGNAL], - 0, header); + 0, header, path); /* Free */ frees: @@ -1669,6 +1694,9 @@ const GtkTargetEntry header_view_drag_types[] = { static void enable_drag_and_drop (GtkWidget *self) { +#ifdef MODEST_TOOLKIT_HILDON2 + return; +#endif gtk_drag_source_set (self, GDK_BUTTON1_MASK, header_view_drag_types, G_N_ELEMENTS (header_view_drag_types), @@ -1678,12 +1706,18 @@ enable_drag_and_drop (GtkWidget *self) static void disable_drag_and_drop (GtkWidget *self) { +#ifdef MODEST_TOOLKIT_HILDON2 + return; +#endif gtk_drag_source_unset (self); } static void setup_drag_and_drop (GtkWidget *self) { +#ifdef MODEST_TOOLKIT_HILDON2 + return; +#endif enable_drag_and_drop(self); g_signal_connect(G_OBJECT (self), "drag_data_get", G_CALLBACK(drag_data_get_cb), NULL); @@ -1719,6 +1753,7 @@ get_selected_row (GtkTreeView *self, GtkTreeModel **model) return path; } +#ifndef MODEST_TOOLKIT_HILDON2 /* * This function moves the tree view scroll to the current selected * row when the widget grabs the focus @@ -1786,6 +1821,7 @@ on_focus_out (GtkWidget *self, } return FALSE; } +#endif static gboolean on_button_release_event(GtkWidget * self, GdkEventButton * event, gpointer userdata) @@ -1930,7 +1966,7 @@ modest_header_view_clear (ModestHeaderView *self) { g_return_if_fail (self && MODEST_IS_HEADER_VIEW(self)); - modest_header_view_set_folder (self, NULL, FALSE, NULL, NULL); + modest_header_view_set_folder (self, NULL, FALSE, NULL, NULL, NULL); } void @@ -2219,3 +2255,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); +}