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