00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef AKONADI_FILTERACTIONJOB_H
00021 #define AKONADI_FILTERACTIONJOB_H
00022
00023 #include <mailtransport/mailtransport_export.h>
00024
00025 #include <akonadi/item.h>
00026 #include <akonadi/transactionsequence.h>
00027
00028 namespace Akonadi {
00029
00030 class Collection;
00031 class ItemFetchScope;
00032 class Job;
00033
00034 class FilterActionJob;
00035
00074 class MAILTRANSPORT_EXPORT FilterAction
00075 {
00076 public:
00082 virtual ~FilterAction();
00083
00091 virtual Akonadi::ItemFetchScope fetchScope() const = 0;
00092
00097 virtual bool itemAccepted( const Akonadi::Item &item ) const = 0;
00098
00103 virtual Akonadi::Job *itemAction( const Akonadi::Item &item, Akonadi::FilterActionJob *parent ) const = 0;
00104 };
00105
00127 class MAILTRANSPORT_EXPORT FilterActionJob : public TransactionSequence
00128 {
00129 Q_OBJECT
00130
00131 public:
00139 FilterActionJob( const Item &item, FilterAction *functor, QObject *parent = 0 );
00140
00148 FilterActionJob( const Item::List &items, FilterAction *functor, QObject *parent = 0 );
00149
00158 FilterActionJob( const Collection &collection, FilterAction *functor, QObject *parent = 0 );
00159
00163 ~FilterActionJob();
00164
00165 protected:
00166
00167 virtual void doStart();
00168
00169 private:
00170
00171 class Private;
00172 Private *const d;
00173
00174 Q_PRIVATE_SLOT( d, void fetchResult( KJob* ) )
00175
00176 };
00177
00178 }
00179
00180 #endif // AKONADI_FILTERACTIONJOB_H