diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-11-30 11:39:51 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-11-30 11:39:51 +0000 |
commit | 662ca949a86cd56972c3b012e56826c234d8e721 (patch) | |
tree | d27a595335050d20338f3ff3a8b2c67e8b96bb13 /src/summaryview.c | |
parent | 083fb868091f8a435cd42463d8ba04b34db40115 (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.c | 35 |
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) |