kmail

popaccount.h
1#ifndef KMAcctExpPop_h
2#define KMAcctExpPop_h
3
4#include "networkaccount.h"
5
6#include <tqvaluelist.h>
7#include <tqstringlist.h>
8#include <tqvaluevector.h>
9#include <tqtimer.h>
10#include <tqdict.h>
11
12class KMPopHeaders;
13class KMMessage;
14class TQDataStream;
15namespace TDEIO {
16 class MetaData;
17 class Slave;
18 class SimpleJob;
19 class Job;
20}
21
23namespace KMail {
27class PopAccount: public NetworkAccount {
28 TQ_OBJECT
29
30
31public:
32 virtual ~PopAccount();
33 virtual void init(void);
34
35 virtual TDEIO::MetaData slaveConfig() const;
36
38 virtual void pseudoAssign( const KMAccount * a );
39
40 virtual TQString protocol() const;
41 virtual unsigned short int defaultPort() const;
42
46 bool usePipelining(void) const { return mUsePipelining; }
47 virtual void setUsePipelining(bool);
48
53 bool leaveOnServer(void) const { return mLeaveOnServer; }
54 virtual void setLeaveOnServer(bool);
55
59 int leaveOnServerDays(void) const { return mLeaveOnServerDays; }
60 virtual void setLeaveOnServerDays(int);
61
65 int leaveOnServerCount(void) const { return mLeaveOnServerCount; }
66 virtual void setLeaveOnServerCount(int);
67
71 int leaveOnServerSize(void) const { return mLeaveOnServerSize; }
72 virtual void setLeaveOnServerSize(int);
73
78 bool filterOnServer(void) const { return mFilterOnServer; }
79 virtual void setFilterOnServer(bool);
80
85 unsigned int filterOnServerCheckSize(void) const { return mFilterOnServerCheckSize; }
86 virtual void setFilterOnServerCheckSize(unsigned int);
87
91 virtual TQString type(void) const;
92 virtual void readConfig(TDEConfig&);
93 virtual void writeConfig(TDEConfig&);
94 virtual void processNewMail(bool _interactive);
95
96 virtual void killAllJobs( bool disconnectSlave=false ); // NOOP currently
97
98protected:
99 enum Stage { Idle, List, Uidl, Head, Retr, Dele, Quit };
100 friend class ::AccountManager;
101 PopAccount(AccountManager* owner, const TQString& accountName, uint id);
102
106 void startJob();
107
111 void connectJob();
112
117
121 void saveUidList();
122
123 bool mUsePipelining;
124 bool mLeaveOnServer;
125 int mLeaveOnServerDays;
126 int mLeaveOnServerCount;
127 int mLeaveOnServerSize;
128 bool gotMsgs;
129 bool mFilterOnServer;
130 unsigned int mFilterOnServerCheckSize;
131
132 TDEIO::SimpleJob *job;
133 //Map of ID's vs. sizes of messages which should be downloaded
134 TQMap<TQString, int> mMsgsPendingDownload;
135
136 TQPtrList<KMPopHeaders> headersOnServer;
137 TQPtrListIterator<KMPopHeaders> headerIt;
138 bool headers;
139
140 TQMap<TQString, bool> mHeaderDeleteUids;
141 TQMap<TQString, bool> mHeaderDownUids;
142 TQMap<TQString, bool> mHeaderLaterUids;
143
144 TQStringList idsOfMsgs; //used for ids and for count
145 TQValueList<int> lensOfMsgs;
146 TQMap<TQString, TQString> mUidForIdMap; // maps message ID (i.e. index on the server) to UID
147 TQDict<int> mUidsOfSeenMsgsDict; // set of UIDs of previously seen messages (for fast lookup)
148 TQDict<int> mUidsOfNextSeenMsgsDict; // set of UIDs of seen messages (for the next check)
149 TQValueVector<int> mTimeOfSeenMsgsVector; // list of times of previously seen messages
150 TQMap<TQString, int> mTimeOfNextSeenMsgsMap; // map of uid to times of seen messages
151 TQDict<int> mSizeOfNextSeenMsgsDict;
152 TQStringList idsOfMsgsToDelete;
153 TQStringList idsOfForcedDeletes;
154 int indexOfCurrentMsg;
155
156 TQValueList<KMMessage*> msgsAwaitingProcessing;
157 TQStringList msgIdsAwaitingProcessing;
158 TQStringList msgUidsAwaitingProcessing;
159
160 TQByteArray curMsgData;
161 TQDataStream *curMsgStrm;
162
163 int curMsgLen;
164 Stage stage;
165 TQTimer processMsgsTimer;
166 int processingDelay;
167 int numMsgs, numBytes, numBytesToRead, numBytesRead, numMsgBytesRead;
168 bool interactive;
169 bool mProcessing;
170 bool mUidlFinished;
171 int dataCounter;
172
173protected slots:
185
190 void slotGetNextMsg();
191
196 void slotMsgRetrieved(TDEIO::Job*, const TQString &);
197
201 void slotData( TDEIO::Job*, const TQByteArray &);
202
208 void slotResult( TDEIO::Job* );
209
213 void slotCancel();
214
218 void slotAbortRequested();
219
224 void slotJobFinished();
225
229 void slotSlaveError(TDEIO::Slave *, int, const TQString &);
230
235 void slotGetNextHdr();
236};
237
238} // namespace KMail
239
240
241
242#endif /*KMAcctExpPop_h*/
This is a Mime Message.
Definition kmmessage.h:68
The account manager is responsible for creating accounts of various types via the factory method crea...
KMail account for pop mail account.
Definition popaccount.h:27
void slotProcessPendingMsgs()
Messages are downloaded in the background and then once every x seconds a batch of messages are proce...
void slotSlaveError(TDEIO::Slave *, int, const TQString &)
Slave error handling.
virtual TQString type(void) const
Inherited methods.
void slotCancel()
Cleans up after a user cancels the current job.
void processRemainingQueuedMessages()
Process any queued messages.
bool filterOnServer(void) const
Shall messages be filter on the server (TRUE) or not (FALSE).
Definition popaccount.h:78
virtual void pseudoAssign(const KMAccount *a)
A weak assignment operator.
void connectJob()
Connect up the standard signals/slots for the TDEIO Jobs.
void slotMsgRetrieved(TDEIO::Job *, const TQString &)
A messages has been retrieved successfully.
void slotResult(TDEIO::Job *)
Finished downloading the current tdeio job, either due to an error or because the job has been cancel...
bool usePipelining(void) const
Sending of several commands at once.
Definition popaccount.h:46
void saveUidList()
Save the list of seen uids for this user/server.
void slotAbortRequested()
Kills the job if still stage == List.
void startJob()
Start a TDEIO Job to get a list of messages on the pop server.
void slotData(TDEIO::Job *, const TQByteArray &)
New data has arrived append it to the end of the current message.
int leaveOnServerDays(void) const
If value is positive, leave mail on the server for so many days.
Definition popaccount.h:59
int leaveOnServerSize(void) const
If value is positive, leave so many MBs on the server.
Definition popaccount.h:71
void slotGetNextHdr()
If there are more headers to be downloaded then start a new tdeio job to get the next header.
bool leaveOnServer(void) const
Shall messages be left on the server upon retreival (TRUE) or deleted (FALSE).
Definition popaccount.h:53
int leaveOnServerCount(void) const
If value is positive, leave so many messages on the server.
Definition popaccount.h:65
unsigned int filterOnServerCheckSize(void) const
Size of messages which should be check on the pop server before download.
Definition popaccount.h:85
void slotJobFinished()
Called when a job is finished.
void slotGetNextMsg()
If there are more messages to be downloaded then start a new tdeio job to get the message whose id is...
folderdiaquotatab.h
Definition aboutdata.cpp:40