actionscheduler.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef actionscheduler_h
00032 #define actionscheduler_h
00033
00034 #include "qobject.h"
00035 #include "qguardedptr.h"
00036 #include "qtimer.h"
00037 #include "kmfilteraction.h"
00038 #include "kmfilter.h"
00039 #include "kmfiltermgr.h"
00040 class KMHeaders;
00041
00042
00043
00044 namespace KMail {
00045
00046 class ActionScheduler : public QObject
00047 {
00048 Q_OBJECT
00049
00050 public:
00051 enum ReturnCode { ResultOk, ResultError, ResultCriticalError };
00052
00053 ActionScheduler(KMFilterMgr::FilterSet set,
00054 QPtrList<KMFilter> filters,
00055 KMHeaders *headers = 0,
00056 KMFolder *srcFolder = 0);
00057 ~ActionScheduler();
00058
00061 void setAutoDestruct( bool );
00062
00064 void setAlwaysMatch( bool );
00065
00067 void setDefaultDestinationFolder( KMFolder* );
00068
00070 void setSourceFolder( KMFolder* );
00071
00075 void setFilterList( QPtrList<KMFilter> filters );
00076
00078 void execFilters(const QValueList<Q_UINT32> serNums);
00079 void execFilters(const QPtrList<KMMsgBase> msgList);
00080 void execFilters(KMMsgBase* msgBase);
00081 void execFilters(Q_UINT32 serNum);
00082
00083 signals:
00085 void result(ReturnCode);
00086
00087 public slots:
00089 void actionMessage(KMFilterAction::ReturnCode = KMFilterAction::GoOn);
00090
00091 private slots:
00092 KMMsgBase* messageBase(Q_UINT32 serNum);
00093 KMMessage* message(Q_UINT32 serNum);
00094 void finish();
00095
00096 int tempOpenFolder(KMFolder* aFolder);
00097 void tempCloseFolders();
00098
00099
00100 void fetchMessage();
00101 void messageFetched( KMMessage *msg );
00102 void msgAdded( KMFolder*, Q_UINT32 );
00103 void enqueue(Q_UINT32 serNum);
00104
00105
00106 void processMessage();
00107 void messageRetrieved(KMMessage*);
00108 void filterMessage();
00109 void moveMessage();
00110 void moveMessageFinished(bool);
00111
00112 private:
00113 static KMFolderMgr *tempFolderMgr;
00114 static int refCount, count;
00115 QValueListIterator<Q_UINT32> mMessageIt;
00116 QValueListIterator<KMFilter> mFilterIt;
00117 QValueList<Q_UINT32> mSerNums, mFetchSerNums;
00118 QValueList<QGuardedPtr<KMFolder> > mOpenFolders;
00119 QValueList<KMFilter> mFilters, mQueuedFilters;
00120 KMFilterAction* mFilterAction;
00121 KMFilterMgr::FilterSet mSet;
00122 KMHeaders *mHeaders;
00123 QGuardedPtr<KMFolder> mSrcFolder, mDestFolder;
00124 bool mExecuting, mExecutingLock, mFetchExecuting;
00125 bool mUnget, mFetchUnget;
00126 bool mIgnore;
00127 bool mFiltersAreQueued;
00128 bool mAutoDestruct;
00129 bool mAlwaysMatch;
00130 Q_UINT32 mOriginalSerNum;
00131 bool mDeleteSrcFolder;
00132 ReturnCode mResult;
00133 QTimer *finishTimer, *fetchMessageTimer, *tempCloseFoldersTimer;
00134 QTimer *processMessageTimer, *filterMessageTimer;
00135 };
00136
00137 }
00138
00139 #endif
This file is part of the documentation for kmail Library Version 3.2.2.