kmail
actionscheduler.h
Go to the documentation of this file.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 <QList>
00041 #include <QTime>
00042
00043 class KMHeaders;
00044
00045 namespace KMail {
00046
00047
00048 class ActionScheduler : public QObject
00049 {
00050 Q_OBJECT
00051
00052 public:
00053 enum ReturnCode { ResultOk, ResultError, ResultCriticalError };
00054
00055 ActionScheduler(KMFilterMgr::FilterSet set,
00056 QList<KMFilter*> filters,
00057 KMHeaders *headers = 0,
00058 KMFolder *srcFolder = 0);
00059 ~ActionScheduler();
00060
00063 void setAutoDestruct( bool );
00064
00066 void setAlwaysMatch( bool );
00067
00069 void setDefaultDestinationFolder( KMFolder* );
00070
00072 void setSourceFolder( KMFolder* );
00073
00077 void setFilterList( QList<KMFilter*> filters );
00078
00080 void setAccountId( uint id ) { mAccountId = id; mAccount = true; }
00081
00083 void clearAccountId() { mAccountId = 0; mAccount = false; }
00084
00086 void execFilters(const QList<quint32> serNums);
00087 void execFilters(const QList<KMMsgBase*> msgList);
00088 void execFilters(KMMsgBase* msgBase);
00089 void execFilters(quint32 serNum);
00090
00091 static QString debug();
00092 static bool isEnabled();
00093
00098 bool ignoreChanges( bool ignore );
00099
00100 signals:
00102 void result(ReturnCode);
00103 void filtered(quint32);
00104
00105 public slots:
00107 void actionMessage(KMFilterAction::ReturnCode = KMFilterAction::GoOn);
00108
00110 void copyMessageFinished( KMCommand *command );
00111
00112 private slots:
00113 KMMsgBase* messageBase(quint32 serNum);
00114 KMMessage* message(quint32 serNum);
00115 void finish();
00116
00117 void folderClosedOrExpunged();
00118
00119 int tempOpenFolder(KMFolder* aFolder);
00120 void tempCloseFolders();
00121
00122
00123 void fetchMessage();
00124 void messageFetched( KMMessage *msg );
00125 void msgAdded( KMFolder*, quint32 );
00126 void enqueue(quint32 serNum);
00127
00128
00129 void processMessage();
00130 void messageRetrieved(KMMessage*);
00131 void filterMessage();
00132 void moveMessage();
00133 void moveMessageFinished( KMCommand *command );
00134 void timeOut();
00135 void fetchTimeOut();
00136
00137 private:
00138 static QList<ActionScheduler*> *schedulerList;
00139 static KMFolderMgr *tempFolderMgr;
00140 static int refCount, count;
00141 static bool sEnabled, sEnabledChecked;
00142
00143
00144
00145
00146
00147 QList<quint32>::Iterator mMessageIt;
00148
00149
00150
00151 QList<KMFilter*>::iterator mFilterIt;
00152
00153
00154
00155 QList<KMFilterAction*>::iterator mFilterActionIt;
00156
00157
00158
00159
00160
00161
00162 QList<quint32> mSerNums;
00163
00164
00165
00166
00167
00168
00169 QList<quint32> mFetchSerNums;
00170
00171 QList<QPointer<KMFolder> > mOpenFolders;
00172 QList<KMFilter*> mFilters, mQueuedFilters;
00173 KMFilterAction* mFilterAction;
00174 KMFilterMgr::FilterSet mSet;
00175 KMHeaders *mHeaders;
00176 QPointer<KMFolder> mSrcFolder, mDestFolder;
00177 bool mExecuting, mExecutingLock, mFetchExecuting;
00178 bool mUnget, mFetchUnget;
00179 bool mIgnore;
00180 bool mFiltersAreQueued;
00181 bool mAutoDestruct;
00182 bool mAlwaysMatch;
00183 bool mAccount;
00184 uint mAccountId;
00185 quint32 mOriginalSerNum;
00186 bool mDeleteSrcFolder;
00187 ReturnCode mResult;
00188 QTimer *finishTimer, *fetchMessageTimer, *tempCloseFoldersTimer;
00189 QTimer *processMessageTimer, *filterMessageTimer;
00190 QTimer *timeOutTimer, *fetchTimeOutTimer;
00191 QTime timeOutTime, fetchTimeOutTime;
00192 KMCommand *lastCommand;
00193 FolderJob *lastJob;
00194 };
00195
00196 }
00197
00198 #endif