aboutsummaryrefslogtreecommitdiff
path: root/src/summaryview.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-11-30 11:39:51 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-11-30 11:39:51 +0000
commit662ca949a86cd56972c3b012e56826c234d8e721 (patch)
treed27a595335050d20338f3ff3a8b2c67e8b96bb13 /src/summaryview.c
parent083fb868091f8a435cd42463d8ba04b34db40115 (diff)
display progress on local filtering.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@792 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/summaryview.c')
-rw-r--r--src/summaryview.c35
1 files changed, 33 insertions, 2 deletions
diff --git a/src/summaryview.c b/src/summaryview.c
index 2023ae6c..498d965e 100644
--- a/src/summaryview.c
+++ b/src/summaryview.c
@@ -816,6 +816,8 @@ void summary_clear_list(SummaryView *summaryview)
summaryview->folder_table = NULL;
}
summaryview->filtered = 0;
+ summaryview->flt_count = 0;
+ summaryview->flt_total = 0;
summaryview->on_button_press = FALSE;
summaryview->can_toggle_selection = TRUE;
@@ -3832,6 +3834,15 @@ static gboolean summary_filter_func(GtkTreeModel *model, GtkTreePath *path,
gtk_tree_model_get(model, iter, S_COL_MSG_INFO, &msginfo, -1);
+ summaryview->flt_count++;
+ {
+ gchar msg[1024];
+ g_snprintf(msg, sizeof(msg), _("Filtering (%d / %d)..."),
+ summaryview->flt_count, summaryview->flt_total);
+ STATUSBAR_POP(summaryview->mainwin);
+ STATUSBAR_PUSH(summaryview->mainwin, msg);
+ }
+
fltinfo = filter_info_new();
fltinfo->flags = msginfo->flags;
filter_apply_msginfo(prefs_common.fltlist, msginfo, fltinfo);
@@ -3879,6 +3890,15 @@ static gboolean summary_filter_junk_func(GtkTreeModel *model, GtkTreePath *path,
gtk_tree_model_get(model, iter, S_COL_MSG_INFO, &msginfo, -1);
+ summaryview->flt_count++;
+ {
+ gchar msg[1024];
+ g_snprintf(msg, sizeof(msg), _("Filtering (%d / %d)..."),
+ summaryview->flt_count, summaryview->flt_total);
+ STATUSBAR_POP(summaryview->mainwin);
+ STATUSBAR_PUSH(summaryview->mainwin, msg);
+ }
+
fltinfo = filter_info_new();
fltinfo->flags = msginfo->flags;
filter_apply_msginfo(prefs_common.junk_fltlist, msginfo, fltinfo);
@@ -3913,7 +3933,10 @@ static void summary_filter_real(SummaryView *summaryview,
GtkTreeModelForeachFunc func,
gboolean selected_only)
{
+ GList *rows;
+
if (!prefs_common.fltlist) return;
+ if (!summaryview->folder_item) return;
summary_lock(summaryview);
@@ -3924,15 +3947,21 @@ static void summary_filter_real(SummaryView *summaryview,
main_window_cursor_wait(summaryview->mainwin);
summaryview->filtered = 0;
+ summaryview->flt_count = 0;
+
+ if (selected_only) {
+ rows = summary_get_selected_rows(summaryview);
+ summaryview->flt_total = g_list_length(rows);
- if (selected_only)
gtk_tree_selection_selected_foreach
(summaryview->selection,
(GtkTreeSelectionForeachFunc)func,
summaryview);
- else
+ } else {
+ summaryview->flt_total = summaryview->folder_item->total;
gtk_tree_model_foreach(GTK_TREE_MODEL(summaryview->store),
func, summaryview);
+ }
summary_unlock(summaryview);
@@ -3955,6 +3984,8 @@ static void summary_filter_real(SummaryView *summaryview,
STATUSBAR_PUSH(summaryview->mainwin, result_msg);
}
summaryview->filtered = 0;
+ summaryview->flt_count = 0;
+ summaryview->flt_total = 0;
}
void summary_filter(SummaryView *summaryview, gboolean selected_only)