aboutsummaryrefslogtreecommitdiff
path: root/src/summaryview.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-06-15 09:01:09 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-06-15 09:01:09 +0000
commit0728f3caffdeb6356e7833127b15c2ed244c7b5d (patch)
tree6db5cbdc5502a015f48d612ab87c5d228ae73b8c /src/summaryview.c
parent755ccfe41883d5fe999488785868209019c4d328 (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.c45
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;