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