1 // Copyright 2009 The Archiveopteryx Developers <info@aox.org>
2 
3 #ifndef SIEVE_H
4 #define SIEVE_H
5 
6 #include "event.h"
7 #include "list.h"
8 
9 
10 class Date;
11 class User;
12 class EString;
13 class UString;
14 class Address;
15 class Mailbox;
16 class SieveAction;
17 class SieveScript;
18 class Injectee;
19 
20 
21 class Sieve
22     : public EventHandler
23 {
24 public:
25     Sieve();
26 
27     void execute();
28 
29     void setSender( Address * );
30     void addRecipient( Address *, Mailbox *, User *, SieveScript * );
31     void addRecipient( Address *, EventHandler * );
32     void addSubmission( Address * );
33     void setMessage( Injectee *, Date * );
34 
35     Address * sender() const;
36     Address * recipient() const;
37 
38     bool local( Address * ) const;
39 
40     void evaluate();
41     bool rejected( Address * ) const;
42     bool succeeded( Address * ) const;
43     bool failed( Address * ) const;
44     EString error( Address * ) const;
45     EString error() const;
46     bool softError() const;
47     bool done() const;
48     bool ready() const;
49     bool injected() const;
50 
51     void act( EventHandler * );
52     List<SieveAction> * actions( const Address * ) const;
53 
54     List<Mailbox> * mailboxes() const;
55     List<Address> * forwarded() const;
56     List<SieveAction> * vacations() const;
57     bool rejected() const;
58 
59     void addAction( SieveAction * );
60 
61     void setForwardingDate( Date * );
62     Date * forwardingDate() const;
63 
64 private:
65     class SieveData * d;
66 };
67 
68 #endif
69