From: Jose Dapena Paz Date: Fri, 30 Oct 2009 11:30:04 +0000 (+0100) Subject: Incremental fetch of headers driven by user X-Git-Tag: 3.1.12~14 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=6f690765deb0061faf473f53d66a749e3d1a43b4 Incremental fetch of headers driven by user --- diff --git a/src/hildon2/modest-header-window.c b/src/hildon2/modest-header-window.c index 16792f7..096b579 100644 --- a/src/hildon2/modest-header-window.c +++ b/src/hildon2/modest-header-window.c @@ -177,6 +177,7 @@ static void on_header_view_model_destroyed (gpointer user_data, static gboolean on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer user_data); +static void modest_header_window_show_more (GtkAction *action, ModestWindow *win); /* globals */ static GtkWindowClass *parent_class = NULL; @@ -637,6 +638,7 @@ create_header_view (ModestWindow *self, TnyFolder *folder) ModestHeaderWindowPrivate *priv; header_view = modest_header_view_new (NULL, MODEST_HEADER_VIEW_STYLE_TWOLINES); + modest_header_view_set_show_latest (MODEST_HEADER_VIEW (header_view), 50); priv = MODEST_HEADER_WINDOW_GET_PRIVATE (self); priv->notify_model = g_signal_connect ((GObject*) header_view, "notify::model", G_CALLBACK (on_header_view_model_changed), self); @@ -935,6 +937,9 @@ static void setup_menu (ModestHeaderWindow *self) modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_outbox_cancelsend"), NULL, APP_MENU_CALLBACK (modest_ui_actions_cancel_send), MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_cancel_sending_all)); + modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("TODO: show more"), NULL, + APP_MENU_CALLBACK (modest_header_window_show_more), + NULL); } static void @@ -1516,3 +1521,20 @@ on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer user_data) return FALSE; } + +static void +modest_header_window_show_more (GtkAction *action, ModestWindow *win) +{ + ModestHeaderWindow *self; + ModestHeaderWindowPrivate *priv = NULL; + + self = MODEST_HEADER_WINDOW (win); + priv = MODEST_HEADER_WINDOW_GET_PRIVATE (self); + if (!priv->header_view) + return; + + if (modest_header_view_get_not_latest (MODEST_HEADER_VIEW (priv->header_view)) > 0) { + modest_header_view_set_show_latest (MODEST_HEADER_VIEW (priv->header_view), + modest_header_view_get_show_latest (MODEST_HEADER_VIEW (priv->header_view)) + 50); + } +} diff --git a/src/widgets/modest-header-view.c b/src/widgets/modest-header-view.c index 2c47c9c..b08263c 100644 --- a/src/widgets/modest-header-view.c +++ b/src/widgets/modest-header-view.c @@ -2520,3 +2520,29 @@ modest_header_view_get_show_latest (ModestHeaderView *header_view) priv = MODEST_HEADER_VIEW_GET_PRIVATE (header_view); return priv->show_latest; } + +gint +modest_header_view_get_not_latest (ModestHeaderView *header_view) +{ + ModestHeaderViewPrivate *priv; + gint not_latest = 0; + GtkTreeModel *sortable, *filter, *model; + + priv = MODEST_HEADER_VIEW_GET_PRIVATE (header_view); + + if (priv->show_latest == 0) + return 0; + + sortable = gtk_tree_view_get_model (GTK_TREE_VIEW (header_view)); + if (GTK_IS_TREE_MODEL_SORT (sortable)) { + filter = gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (sortable)); + if (GTK_IS_TREE_MODEL_FILTER (filter)) { + model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (filter)); + if (model) { + not_latest = MAX (0, tny_list_get_length (TNY_LIST (model)) - priv->show_latest); + } + } + } + + return not_latest; +} diff --git a/src/widgets/modest-header-view.h b/src/widgets/modest-header-view.h index f620640..11a118f 100644 --- a/src/widgets/modest-header-view.h +++ b/src/widgets/modest-header-view.h @@ -471,6 +471,7 @@ void modest_header_view_set_show_latest (ModestHeaderView *header_view, gint show_latest); gint modest_header_view_get_show_latest (ModestHeaderView *header_view); +gint modest_header_view_get_not_latest (ModestHeaderView *header_view); G_END_DECLS