kmail Library API Documentation

kmacctexppop.h

00001 // -*- c++ -*-
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 ); // NOOP currently
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; //ID of messages which should be downloaded
00106   QValueList<int> lensOfMsgsPendingDownload; //length of messages which should be downloaded
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; //used for ids and for count
00117   QValueList<int> lensOfMsgs;
00118   QStringList uidsOfMsgs;
00119   QStringList uidsOfSeenMsgs; //UIDS of seen messages, saved in config
00120   QStringList uidsOfNextSeenMsgs; //UIDS of new seen messages, for writing in the config file
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 /*KMAcctExpPop_h*/
KDE Logo
This file is part of the documentation for kmail Library Version 3.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat May 1 11:37:19 2004 by doxygen 1.2.15 written by Dimitri van Heesch, © 1997-2003