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
00011 class KMPopHeaders;
00012 class KMMessage;
00013 class QDataStream;
00014 namespace KIO {
00015 class MetaData;
00016 class Slave;
00017 class SimpleJob;
00018 class Job;
00019 }
00020
00024 class KMAcctExpPop: public KMail::NetworkAccount {
00025 Q_OBJECT
00026
00027 public:
00028 virtual ~KMAcctExpPop();
00029 virtual void init(void);
00030
00031 virtual KIO::MetaData slaveConfig() const;
00032
00034 virtual void pseudoAssign( const KMAccount * a );
00035
00036 virtual QString protocol() const;
00037 virtual unsigned short int defaultPort() const;
00038
00042 bool usePipelining(void) const { return mUsePipelining; }
00043 virtual void setUsePipelining(bool);
00044
00049 bool leaveOnServer(void) const { return mLeaveOnServer; }
00050 virtual void setLeaveOnServer(bool);
00051
00056 bool filterOnServer(void) const { return mFilterOnServer; }
00057 virtual void setFilterOnServer(bool);
00058
00063 unsigned int filterOnServerCheckSize(void) const { return mFilterOnServerCheckSize; }
00064 virtual void setFilterOnServerCheckSize(unsigned int);
00065
00069 virtual QString type(void) const;
00070 virtual void readConfig(KConfig&);
00071 virtual void writeConfig(KConfig&);
00072 virtual void processNewMail(bool _interactive);
00073
00074 virtual void killAllJobs( bool disconnectSlave=false );
00075
00076 protected:
00077 enum Stage { Idle, List, Uidl, Head, Retr, Dele, Quit };
00078 friend class KMAcctMgr;
00079 friend class KMPasswdDialog;
00080 KMAcctExpPop(KMAcctMgr* owner, const QString& accountName);
00081
00085 void startJob();
00086
00090 void connectJob();
00091
00096 void processRemainingQueuedMessagesAndSaveUidList();
00097
00098 bool mUsePipelining;
00099 bool mLeaveOnServer;
00100 bool gotMsgs;
00101 bool mFilterOnServer;
00102 unsigned int mFilterOnServerCheckSize;
00103
00104 KIO::SimpleJob *job;
00105 QStringList idsOfMsgsPendingDownload;
00106 QValueList<int> lensOfMsgsPendingDownload;
00107
00108 QPtrList<KMPopHeaders> headersOnServer;
00109 QPtrListIterator<KMPopHeaders> headerIt;
00110 bool headers;
00111 QStringList headerDeleteUids;
00112 QStringList headerDownUids;
00113 QStringList headerLaterUids;
00114
00115
00116 QStringList idsOfMsgs;
00117 QValueList<int> lensOfMsgs;
00118 QStringList uidsOfMsgs;
00119 QStringList uidsOfSeenMsgs;
00120 QStringList uidsOfNextSeenMsgs;
00121 QStringList idsOfMsgsToDelete;
00122 int indexOfCurrentMsg;
00123
00124 QValueList<KMMessage*> msgsAwaitingProcessing;
00125 QStringList msgIdsAwaitingProcessing;
00126 QStringList msgUidsAwaitingProcessing;
00127
00128 QByteArray curMsgData;
00129 QDataStream *curMsgStrm;
00130
00131 int curMsgLen;
00132 int stage;
00133 QTimer processMsgsTimer;
00134 QTimer *ss;
00135 int processingDelay;
00136 int numMsgs, numBytes, numBytesToRead, numBytesRead, numMsgBytesRead;
00137 bool interactive;
00138 bool mProcessing;
00139 bool mUidlFinished;
00140 int dataCounter;
00141
00142 protected slots:
00153 void slotProcessPendingMsgs();
00154
00159 void slotGetNextMsg();
00160
00165 void slotMsgRetrieved(KIO::Job*, const QString &);
00166
00170 void slotData( KIO::Job*, const QByteArray &);
00171
00177 void slotResult( KIO::Job* );
00178
00182 void slotCancel();
00183
00187 void slotAbortRequested();
00188
00193 void slotJobFinished();
00194
00198 void slotSlaveError(KIO::Slave *, int, const QString &);
00199
00204 void slotGetNextHdr();
00205 };
00206
00207
00208
00209 #endif
This file is part of the documentation for kmail Library Version 3.2.2.