00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef MAILTRANSPORT_FILTERACTIONJOB_P_H
00021 #define MAILTRANSPORT_FILTERACTIONJOB_P_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
00075 class MAILTRANSPORT_EXPORT FilterAction
00076 {
00077 public:
00083 virtual ~FilterAction();
00084
00092 virtual Akonadi::ItemFetchScope fetchScope() const = 0;
00093
00098 virtual bool itemAccepted( const Akonadi::Item &item ) const = 0;
00099
00104 virtual Akonadi::Job *itemAction( const Akonadi::Item &item,
00105 Akonadi::FilterActionJob *parent ) const = 0;
00106 };
00107
00129 class MAILTRANSPORT_EXPORT FilterActionJob : public TransactionSequence
00130 {
00131 Q_OBJECT
00132
00133 public:
00141 FilterActionJob( const Item &item, FilterAction *functor, QObject *parent = 0 );
00142
00150 FilterActionJob( const Item::List &items, FilterAction *functor, QObject *parent = 0 );
00151
00160 FilterActionJob( const Collection &collection, FilterAction *functor, QObject *parent = 0 );
00161
00165 ~FilterActionJob();
00166
00167 protected:
00168
00169 virtual void doStart();
00170
00171 private:
00172
00173 class Private;
00174 Private *const d;
00175
00176 Q_PRIVATE_SLOT( d, void fetchResult( KJob* ) )
00177
00178 };
00179
00180 }
00181
00182 #endif // AKONADI_FILTERACTIONJOB_H