diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-06-15 09:01:09 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-06-15 09:01:09 +0000 |
commit | 0728f3caffdeb6356e7833127b15c2ed244c7b5d (patch) | |
tree | 6db5cbdc5502a015f48d612ab87c5d228ae73b8c /src/summaryview.c | |
parent | 755ccfe41883d5fe999488785868209019c4d328 (diff) |
added 'Tools/Filter junk mails in folder' menu.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@344 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/summaryview.c')
-rw-r--r-- | src/summaryview.c | 45 |
1 files changed, 42 insertions, 3 deletions
diff --git a/src/summaryview.c b/src/summaryview.c index ed446ffd..34889990 100644 --- a/src/summaryview.c +++ b/src/summaryview.c @@ -3660,7 +3660,34 @@ static gboolean summary_filter_func(GtkTreeModel *model, GtkTreePath *path, return FALSE; } -void summary_filter(SummaryView *summaryview, gboolean selected_only) +static gboolean summary_filter_junk_func(GtkTreeModel *model, GtkTreePath *path, + GtkTreeIter *iter, gpointer data) +{ + SummaryView *summaryview = (SummaryView *)data; + MsgInfo *msginfo; + FilterInfo *fltinfo; + + gtk_tree_model_get(model, iter, S_COL_MSG_INFO, &msginfo, -1); + + fltinfo = filter_info_new(); + fltinfo->flags = msginfo->flags; + filter_apply_msginfo(prefs_common.junk_fltlist, msginfo, fltinfo); + + if (fltinfo->actions[FLT_ACTION_COPY] || + fltinfo->actions[FLT_ACTION_DELETE]) + summaryview->filtered++; + + if (fltinfo->actions[FLT_ACTION_DELETE]) + summary_delete_row(summaryview, iter); + + filter_info_free(fltinfo); + + return FALSE; +} + +static void summary_filter_real(SummaryView *summaryview, + GtkTreeModelForeachFunc func, + gboolean selected_only) { if (!prefs_common.fltlist) return; @@ -3677,11 +3704,11 @@ void summary_filter(SummaryView *summaryview, gboolean selected_only) if (selected_only) gtk_tree_selection_selected_foreach (summaryview->selection, - (GtkTreeSelectionForeachFunc)summary_filter_func, + (GtkTreeSelectionForeachFunc)func, summaryview); else gtk_tree_model_foreach(GTK_TREE_MODEL(summaryview->store), - summary_filter_func, summaryview); + func, summaryview); summary_unlock(summaryview); @@ -3706,6 +3733,18 @@ void summary_filter(SummaryView *summaryview, gboolean selected_only) summaryview->filtered = 0; } +void summary_filter(SummaryView *summaryview, gboolean selected_only) +{ + summary_filter_real(summaryview, summary_filter_func, selected_only); +} + +void summary_filter_junk(SummaryView *summaryview, gboolean selected_only) +{ + if (prefs_common.junk_fltlist) + summary_filter_real(summaryview, summary_filter_junk_func, + selected_only); +} + void summary_filter_open(SummaryView *summaryview, PrefsFilterType type) { GtkTreeIter iter; |