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 #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 ); // NOOP currently
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   //Map of ID's vs. sizes of messages which should be downloaded
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; //used for ids and for count
00124   QValueList<int> lensOfMsgs;
00125   QMap<QString, QString> mUidForIdMap; // maps message ID (i.e. index on the server) to UID
00126   QDict<int> mUidsOfSeenMsgsDict; // set of UIDs of previously seen messages (for fast lookup)
00127   QDict<int> mUidsOfNextSeenMsgsDict; // set of UIDs of seen messages (for the next check)
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 /*KMAcctExpPop_h*/
KDE Logo
This file is part of the documentation for kmail Library Version 3.3.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Dec 21 14:24:43 2007 by doxygen 1.4.2 written by Dimitri van Heesch, © 1997-2003