new filtering
[claws.git] / src / filtering.h
1 #ifndef FILTER_NEW_H
2
3 #define FILTER_NEW_H
4
5 #include <glib.h>
6 #include "matcher.h"
7 #include "procmsg.h"
8
9 struct _FilteringAction {
10         gint type;
11         gchar * dest_folder;
12         gint account_id;
13         gchar * address;
14         gchar * newsgroups;
15 };
16
17 typedef struct _FilteringAction FilteringAction;
18
19 struct _FilteringProp {
20         MatcherList * matchers;
21         FilteringAction * action;
22 };
23
24 typedef struct _FilteringProp FilteringProp;
25
26 extern GSList * prefs_filtering;
27
28
29 FilteringAction * filteringaction_new(int type, gchar * dest_folder,
30                                       int account_id, gchar * address,
31                                       gchar * newsgroups);
32 void filteringaction_free(FilteringAction * action);
33 FilteringAction * filteringaction_parse(gchar ** str);
34
35 FilteringProp * filteringprop_new(MatcherList * matchers,
36                                   FilteringAction * action);
37 void filteringprop_free(FilteringProp * prop);
38
39 FilteringProp * filteringprop_parse(gchar ** str);
40
41
42 void filter_msginfo(GSList * filtering_list, MsgInfo * info,
43                     GHashTable *folder_table);
44 void filter_message(GSList * filtering_list, FolderItem * item,
45                     gint msgnum, GHashTable *folder_table);
46
47 gchar * filteringaction_to_string(FilteringAction * action);
48 void prefs_filtering_write_config(void);
49 void prefs_filtering_read_config(void);
50 gchar * filteringprop_to_string(FilteringProp * prop);
51
52 #endif