kmacctexppop.h
00001
00002 #ifndef KMAcctExpPop_h
00003 #define KMAcctExpPop_h
00004
00005 #include "networkaccount.h"
00006
00007 #include <qvaluelist.h>
00008 #include <qstringlist.h>
00009 #include <qtimer.h>
00010 #include <qdict.h>
00011
00012 class KMPopHeaders;
00013 class KMMessage;
00014 class QDataStream;
00015 namespace KIO {
00016 class MetaData;
00017 class Slave;
00018 class SimpleJob;
00019 class Job;
00020 }
00021
00026 class KMAcctExpPop: public KMail::NetworkAccount {
00027 Q_OBJECT
00028
00029 public:
00030 virtual ~KMAcctExpPop();
00031 virtual void init(void);
00032
00033 virtual KIO::MetaData slaveConfig() const;
00034
00036 virtual void pseudoAssign( const KMAccount * a );
00037
00038 virtual QString protocol() const;
00039 virtual unsigned short int defaultPort() const;
00040
00044 bool usePipelining(void) const { return mUsePipelining; }
00045 virtual void setUsePipelining(bool);
00046
00051 bool leaveOnServer(void) const { return mLeaveOnServer; }
00052 virtual void setLeaveOnServer(bool);
00053
00058 bool filterOnServer(void) const { return mFilterOnServer; }
00059 virtual void setFilterOnServer(bool);
00060
00065 unsigned int filterOnServerCheckSize(void) const { return mFilterOnServerCheckSize; }
00066 virtual void setFilterOnServerCheckSize(unsigned int);
00067
00071 virtual QString type(void) const;
00072 virtual void readConfig(KConfig&);
00073 virtual void writeConfig(KConfig&);
00074 virtual void processNewMail(bool _interactive);
00075
00076 virtual void killAllJobs( bool disconnectSlave=false );
00077
00078 protected:
00079 enum Stage { Idle, List, Uidl, Head, Retr, Dele, Quit };
00080 friend class KMAcctMgr;
00081 friend class KMPasswdDialog;
00082 KMAcctExpPop(KMAcctMgr* owner, const QString& accountName, uint id);
00083
00087 void startJob();
00088
00092 void connectJob();
00093
00097 void processRemainingQueuedMessages();
00098
00102 void saveUidList();
00103
00104 bool mUsePipelining;
00105 bool mLeaveOnServer;
00106 bool gotMsgs;
00107 bool mFilterOnServer;
00108 unsigned int mFilterOnServerCheckSize;
00109
00110 KIO::SimpleJob *job;
00111
00112 QMap<QString, int> mMsgsPendingDownload;
00113
00114 QPtrList<KMPopHeaders> headersOnServer;
00115 QPtrListIterator<KMPopHeaders> headerIt;
00116 bool headers;
00117
00118 QMap<QString, bool> mHeaderDeleteUids;
00119 QMap<QString, bool> mHeaderDownUids;
00120 QMap<QString, bool> mHeaderLaterUids;
00121
00122
00123 QStringList idsOfMsgs;
00124 QValueList<int> lensOfMsgs;
00125 QMap<QString, QString> mUidForIdMap;
00126 QDict<int> mUidsOfSeenMsgsDict;
00127 QDict<int> mUidsOfNextSeenMsgsDict;
00128 QStringList idsOfMsgsToDelete;
00129 int indexOfCurrentMsg;
00130
00131 QValueList<KMMessage*> msgsAwaitingProcessing;
00132 QStringList msgIdsAwaitingProcessing;
00133 QStringList msgUidsAwaitingProcessing;
00134
00135 QByteArray curMsgData;
00136 QDataStream *curMsgStrm;
00137
00138 int curMsgLen;
00139 int stage;
00140 QTimer processMsgsTimer;
00141 int processingDelay;
00142 int numMsgs, numBytes, numBytesToRead, numBytesRead, numMsgBytesRead;
00143 bool interactive;
00144 bool mProcessing;
00145 bool mUidlFinished;
00146 int dataCounter;
00147
00148 protected slots:
00159 void slotProcessPendingMsgs();
00160
00165 void slotGetNextMsg();
00166
00171 void slotMsgRetrieved(KIO::Job*, const QString &);
00172
00176 void slotData( KIO::Job*, const QByteArray &);
00177
00183 void slotResult( KIO::Job* );
00184
00188 void slotCancel();
00189
00193 void slotAbortRequested();
00194
00199 void slotJobFinished();
00200
00204 void slotSlaveError(KIO::Slave *, int, const QString &);
00205
00210 void slotGetNextHdr();
00211 };
00212
00213
00214
00215 #endif
This file is part of the documentation for kmail Library Version 3.3.2.