X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fhildon2%2Fmodest-header-window.c;h=47835081c8a727dccfaa0768e34042faa8b21573;hb=4ab4ff904fc23d7cac7da69d52db8b0acc4c3525;hp=11075f5cf42a9f06b6b0e2f463969d9a4c2789b5;hpb=db40c6a177d3e7f4a5dd53685faa6cf0397495c9;p=modest diff --git a/src/hildon2/modest-header-window.c b/src/hildon2/modest-header-window.c index 11075f5..4783508 100644 --- a/src/hildon2/modest-header-window.c +++ b/src/hildon2/modest-header-window.c @@ -52,6 +52,7 @@ #include #include #include +#include typedef enum { CONTENTS_STATE_NONE = 0, @@ -159,7 +160,11 @@ static void update_progress_hint (ModestHeaderWindow *self); static void on_sort_column_changed (GtkTreeSortable *treesortable, gpointer user_data); static void update_sort_button (ModestHeaderWindow *self); - +static void on_horizontal_movement (HildonPannableArea *hildonpannable, + gint direction, + gdouble initial_x, + gdouble initial_y, + gpointer user_data); /* globals */ static GtkWindowClass *parent_class = NULL; @@ -250,6 +255,9 @@ modest_header_window_finalize (GObject *obj) priv = MODEST_HEADER_WINDOW_GET_PRIVATE(obj); + tny_folder_sync_async (TNY_FOLDER (priv->folder), + FALSE, NULL, NULL, NULL); + g_object_unref (priv->folder); g_object_unref (priv->header_view); g_object_unref (priv->empty_view); @@ -322,9 +330,8 @@ connect_signals (ModestHeaderWindow *self) G_CALLBACK (on_expose_event), self); - sortable = GTK_TREE_SORTABLE (gtk_tree_model_filter_get_model - (GTK_TREE_MODEL_FILTER (gtk_tree_view_get_model ( - GTK_TREE_VIEW (priv->header_view))))); + sortable = GTK_TREE_SORTABLE (gtk_tree_view_get_model (GTK_TREE_VIEW (priv->header_view))); + priv->sighandlers = modest_signal_mgr_connect (priv->sighandlers, G_OBJECT (sortable), @@ -351,11 +358,19 @@ connect_signals (ModestHeaderWindow *self) G_OBJECT (modest_runtime_get_window_mgr ()), "progress-list-changed", G_CALLBACK (on_progress_list_changed), self); - priv->sighandlers = + priv->sighandlers = modest_signal_mgr_connect (priv->sighandlers, G_OBJECT (priv->new_message_button), "clicked", G_CALLBACK (modest_ui_actions_on_new_msg), self); + + /* Pannable area */ + priv->sighandlers = + modest_signal_mgr_connect (priv->sighandlers, + (GObject *) priv->contents_view, + "horizontal-movement", + G_CALLBACK (on_horizontal_movement), + self); } static void @@ -578,7 +593,7 @@ modest_header_window_new (TnyFolder *folder, const gchar *account_name, const gc if (box_name == NULL || box_name[0] == '\0') { box_name = account_display_name; } - folder_name = g_strconcat (_("mcen_me_folder_inbox"), " (", box_name, ")", NULL); + folder_name = g_strconcat (_("mcen_me_folder_inbox"), " - ", box_name, NULL); } else { folder_name = modest_tny_folder_get_display_name (folder); } @@ -1091,9 +1106,7 @@ update_sort_button (ModestHeaderWindow *self) const gchar *value = NULL; priv = MODEST_HEADER_WINDOW_GET_PRIVATE (self); - sortable = GTK_TREE_SORTABLE (gtk_tree_model_filter_get_model - (GTK_TREE_MODEL_FILTER (gtk_tree_view_get_model ( - GTK_TREE_VIEW (priv->header_view))))); + sortable = GTK_TREE_SORTABLE (gtk_tree_view_get_model (GTK_TREE_VIEW (priv->header_view))); if (!gtk_tree_sortable_get_sort_column_id (sortable, ¤t_sort_colid, ¤t_sort_type)) { @@ -1147,3 +1160,65 @@ update_sort_button (ModestHeaderWindow *self) hildon_button_set_value (HILDON_BUTTON (priv->sort_button), value?value:""); } + +static void +on_horizontal_movement (HildonPannableArea *hildonpannable, + gint direction, + gdouble initial_x, + gdouble initial_y, + gpointer user_data) +{ + ModestHeaderWindowPrivate *priv; + gint dest_x, dest_y; + TnyHeader *header; + + /* Ignore right to left movement */ + if (direction == HILDON_MOVEMENT_LEFT) + return; + + /* Get the header to delete */ + priv = MODEST_HEADER_WINDOW_GET_PRIVATE (user_data); + + /* Get tree view coordinates */ + if (!gtk_widget_translate_coordinates ((GtkWidget *) hildonpannable, + priv->header_view, + initial_x, + initial_y, + &dest_x, + &dest_y)) + return; + + header = modest_header_view_get_header_at_pos ((ModestHeaderView *) priv->header_view, + dest_x, dest_y); + if (header) { + gint response; + gchar *subject, *msg; + + subject = tny_header_dup_subject (header); + if (!subject) + subject = g_strdup (_("mail_va_no_subject")); + + msg = g_strdup_printf (ngettext("emev_nc_delete_message", "emev_nc_delete_messages", 1), + subject); + g_free (subject); + + /* Confirmation dialog */ + response = modest_platform_run_confirmation_dialog ((GtkWindow *) user_data, msg); + g_free (msg); + + if (response == GTK_RESPONSE_OK) { + ModestMailOperation *mail_op; + TnyList *header_list; + + header_list = tny_simple_list_new (); + tny_list_append (header_list, (GObject *) header); + mail_op = modest_mail_operation_new ((GObject *) user_data); + modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), + mail_op); + modest_mail_operation_remove_msgs (mail_op, header_list, FALSE); + g_object_unref (mail_op); + g_object_unref (header_list); + } + g_object_unref (header); + } +}