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
00032 #ifndef actionscheduler_h
00033 #define actionscheduler_h
00034
00035 #include "kmfilteraction.h"
00036 #include "kmfilter.h"
00037 #include "kmfiltermgr.h"
00038 #include "kmcommands.h"
00039
00040 #include <qobject.h>
00041 #include <qguardedptr.h>
00042 #include <qtimer.h>
00043
00044 class KMHeaders;
00045
00046
00047
00048 namespace KMail {
00049
00050 class ActionScheduler : public QObject
00051 {
00052 Q_OBJECT
00053
00054 public:
00055 enum ReturnCode { ResultOk, ResultError, ResultCriticalError };
00056
00057 ActionScheduler(KMFilterMgr::FilterSet set,
00058 QPtrList<KMFilter> filters,
00059 KMHeaders *headers = 0,
00060 KMFolder *srcFolder = 0);
00061 ~ActionScheduler();
00062
00065 void setAutoDestruct( bool );
00066
00068 void setAlwaysMatch( bool );
00069
00071 void setDefaultDestinationFolder( KMFolder* );
00072
00074 void setSourceFolder( KMFolder* );
00075
00079 void setFilterList( QPtrList<KMFilter> filters );
00080
00082 void execFilters(const QValueList<Q_UINT32> serNums);
00083 void execFilters(const QPtrList<KMMsgBase> msgList);
00084 void execFilters(KMMsgBase* msgBase);
00085 void execFilters(Q_UINT32 serNum);
00086
00087 signals:
00089 void result(ReturnCode);
00090
00091 public slots:
00093 void actionMessage(KMFilterAction::ReturnCode = KMFilterAction::GoOn);
00094
00095 private slots:
00096 KMMsgBase* messageBase(Q_UINT32 serNum);
00097 KMMessage* message(Q_UINT32 serNum);
00098 void finish();
00099
00100 int tempOpenFolder(KMFolder* aFolder);
00101 void tempCloseFolders();
00102
00103
00104 void fetchMessage();
00105 void messageFetched( KMMessage *msg );
00106 void msgAdded( KMFolder*, Q_UINT32 );
00107 void enqueue(Q_UINT32 serNum);
00108
00109
00110 void processMessage();
00111 void messageRetrieved(KMMessage*);
00112 void filterMessage();
00113 void moveMessage();
00114 void moveMessageFinished( KMCommand *command );
00115
00116 private:
00117 static KMFolderMgr *tempFolderMgr;
00118 static int refCount, count;
00119 QValueListIterator<Q_UINT32> mMessageIt;
00120 QValueListIterator<KMFilter> mFilterIt;
00121 QValueList<Q_UINT32> mSerNums, mFetchSerNums;
00122 QValueList<QGuardedPtr<KMFolder> > mOpenFolders;
00123 QValueList<KMFilter> mFilters, mQueuedFilters;
00124 KMFilterAction* mFilterAction;
00125 KMFilterMgr::FilterSet mSet;
00126 KMHeaders *mHeaders;
00127 QGuardedPtr<KMFolder> mSrcFolder, mDestFolder;
00128 bool mExecuting, mExecutingLock, mFetchExecuting;
00129 bool mUnget, mFetchUnget;
00130 bool mIgnore;
00131 bool mFiltersAreQueued;
00132 bool mAutoDestruct;
00133 bool mAlwaysMatch;
00134 Q_UINT32 mOriginalSerNum;
00135 bool mDeleteSrcFolder;
00136 ReturnCode mResult;
00137 QTimer *finishTimer, *fetchMessageTimer, *tempCloseFoldersTimer;
00138 QTimer *processMessageTimer, *filterMessageTimer;
00139 };
00140
00141 }
00142
00143 #endif
This file is part of the documentation for kmail Library Version 3.3.2.