kmail Library API Documentation

kmfolderimap.h

00001 00024 #ifndef kmfolderimap_h 00025 #define kmfolderimap_h 00026 00027 #include "kmacctimap.h" 00028 #include "kmfoldermbox.h" 00029 #include "kmmsgbase.h" 00030 #include "imapaccountbase.h" 00031 using KMail::ImapAccountBase; 00032 00033 #include "kio/job.h" 00034 #include "kio/global.h" 00035 00036 #include <qintdict.h> 00037 #include <qdict.h> 00038 #include <qvaluelist.h> 00039 00040 class KMFolderTreeItem; 00041 class KMFolderImap; 00042 namespace KMail { 00043 class FolderJob; 00044 class ImapJob; 00045 class AttachmentStrategy; 00046 } 00047 using KMail::FolderJob; 00048 using KMail::ImapJob; 00049 using KMail::AttachmentStrategy; 00050 00051 class KMMsgMetaData 00052 { 00053 public: 00054 KMMsgMetaData(KMMsgStatus aStatus) 00055 :mStatus(aStatus), mSerNum(0) {} 00056 KMMsgMetaData(KMMsgStatus aStatus, Q_UINT32 aSerNum) 00057 :mStatus(aStatus), mSerNum(aSerNum) {} 00058 ~KMMsgMetaData() {}; 00059 const KMMsgStatus status() const { return mStatus; } 00060 const Q_UINT32 serNum() const { return mSerNum; } 00061 private: 00062 KMMsgStatus mStatus; 00063 Q_UINT32 mSerNum; 00064 }; 00065 00066 00067 00068 class KMFolderImap : public KMFolderMbox 00069 { 00070 Q_OBJECT 00071 friend class ImapJob; 00072 00073 public: 00074 enum imapState { imapNoInformation=0, imapInProgress=1, imapFinished=2 }; 00075 00076 virtual imapState getContentState() { return mContentState; } 00077 virtual void setContentState(imapState state) { mContentState = state; } 00078 00079 virtual imapState getSubfolderState() { return mSubfolderState; } 00080 virtual void setSubfolderState(imapState state) { mSubfolderState = state; } 00081 00085 KMFolderImap(KMFolderDir* parent=0, const QString& name=QString::null); 00086 virtual ~KMFolderImap(); 00087 00089 virtual KMFolderType folderType() const { return KMFolderTypeImap; } 00090 00091 virtual QCString protocol() const { return "imap"; } 00092 virtual KMMessage* getMsg(int idx); 00094 void setImapPath(const QString &path) { mImapPath = path; } 00095 QString imapPath() { return mImapPath; } 00096 00098 ulong lastUid(); 00099 00101 void setUidValidity(const QString &validity) { mUidValidity = validity; } 00102 QString uidValidity() { return mUidValidity; } 00103 00105 void setAccount(KMAcctImap *acct); 00106 KMAcctImap* account() { return mAccount; } 00107 00109 virtual void removeMsg(int i, bool quiet = FALSE); 00110 virtual void removeMsg(QPtrList<KMMessage> msgList, bool quiet = FALSE); 00111 00112 virtual int rename( const QString& newName, KMFolderDir *aParent = 0 ); 00113 00115 virtual void removeOnServer(); 00116 00118 bool autoExpunge(); 00119 00121 virtual void writeConfig(); 00122 00124 virtual void readConfig(); 00125 00131 bool listDirectory(bool secondStep = FALSE); 00132 00136 void getFolder(bool force = FALSE); 00137 00141 void getAndCheckFolder(bool force = FALSE); 00142 00146 void getMessage(KMFolder * folder, KMMessage * msg); 00147 00151 void createFolder(const QString &name); 00152 00156 void deleteMessage(KMMessage * msg); 00157 void deleteMessage(QPtrList<KMMessage> msgList); 00158 00163 virtual void setStatus(int idx, KMMsgStatus status, bool toggle); 00164 00168 virtual void setStatus(QValueList<int>& ids, KMMsgStatus status, bool toggle); 00169 00171 void setImapStatus(QString path, QCString flags); 00172 00174 QStringList makeSets(QValueList<int>&, bool sort = true); 00175 QStringList makeSets(QStringList&, bool sort = true); 00176 00178 void getUids(QValueList<int>& ids, QValueList<int>& uids); 00179 00181 void getUids(QPtrList<KMMessage>& msgList, QValueList<int>& uids, KMFolder* msgParent = 0); 00182 00186 void expungeFolder(KMFolderImap * aFolder, bool quiet); 00187 00188 int compact() { expungeFolder(this, false); return 0; }; 00189 00193 void sendFolderComplete(bool success) 00194 { emit folderComplete(this, success); } 00195 00200 bool processNewMail(bool interactive); 00201 00206 void setSelected(bool selected) { mIsSelected = selected; } 00207 bool isSelected() { return mIsSelected; } 00208 00212 static QString encodeFileName(const QString &); 00213 static QString decodeFileName(const QString &); 00214 static QTextCodec * utf7Codec(); 00215 00219 static QString statusToFlags(KMMsgStatus status); 00220 00224 virtual QString fileName() const { return encodeFileName(name()); } 00225 00229 void insertUidSerNumEntry(ulong uid, const ulong * sernum) { 00230 uidmap.insert(uid, sernum); } 00231 00235 static QValueList<int> splitSets(QString); 00236 00237 virtual void ignoreJobsForMessage( KMMessage* ); 00238 00242 bool includeInMailCheck() { return mCheckMail; } 00243 void setIncludeInMailCheck( bool check ) { mCheckMail = check; } 00244 00246 virtual int create(bool imap = FALSE); 00247 00249 virtual bool isAutoExpire() const { return false; } 00250 00254 virtual void close(bool force=FALSE); 00255 00256 void setCheckingValidity( bool val ) { mCheckingValidity = val; } 00257 00258 signals: 00259 void folderComplete(KMFolderImap *folder, bool success); 00260 00264 void deleted(KMFolderImap*); 00265 00266 public slots: 00268 virtual void addMsgQuiet(KMMessage *); 00269 virtual void addMsgQuiet(QPtrList<KMMessage>); 00270 00277 virtual int addMsg(KMMessage* msg, int* index_return = 0); 00278 int addMsg(QPtrList<KMMessage>&, int* index_return = 0); 00279 00281 void copyMsg(QPtrList<KMMessage>& msgList/*, KMFolder* parent*/); 00282 00283 QPtrList<KMMessage> splitMessageList(QString set, QPtrList<KMMessage>& msgList); 00284 00287 virtual KMMessage* take(int idx); 00288 virtual void take(QPtrList<KMMessage>); 00289 00293 void slotSimpleData(KIO::Job * job, const QByteArray & data); 00294 00295 protected: 00296 virtual FolderJob* doCreateJob( KMMessage *msg, FolderJob::JobType jt, 00297 KMFolder *folder, QString partSpecifier, 00298 const AttachmentStrategy *as ) const; 00299 virtual FolderJob* doCreateJob( QPtrList<KMMessage>& msgList, const QString& sets, 00300 FolderJob::JobType jt, KMFolder *folder ) const; 00305 void flagsToStatus(KMMsgBase *msg, int flags, bool newMsg = TRUE); 00306 00307 void getMessagesResult(KIO::Job * job, bool lastSet); 00308 00309 bool gotMsgs; 00310 00311 QString mUidValidity; 00312 00313 protected slots: 00314 00319 void slotListResult(QStringList, QStringList, 00320 QStringList, const ImapAccountBase::jobData &); 00321 00325 void checkValidity(); 00326 void slotCheckValidityResult(KIO::Job * job); 00327 00331 void reallyGetFolder(const QString &startUid = QString::null); 00332 00336 void slotListFolderResult(KIO::Job * job); 00337 void slotListFolderEntries(KIO::Job * job, const KIO::UDSEntryList & uds); 00338 00342 void slotRenameResult( KIO::Job *job ); 00343 00347 void slotGetMessagesResult(KIO::Job * job); 00348 void slotGetLastMessagesResult(KIO::Job * job); 00349 void slotGetMessagesData(KIO::Job * job, const QByteArray & data); 00350 00354 void slotCreateFolderResult(KIO::Job * job); 00355 00359 void slotSetStatusResult(KIO::Job * job); 00360 00364 void slotRemoveFolderResult(KIO::Job *job); 00365 00369 void slotStatResult(KIO::Job *job); 00370 00371 protected: 00372 QString mImapPath; 00373 ulong mLastUid; 00374 imapState mContentState, mSubfolderState; 00375 QStringList mSubfolderNames, mSubfolderPaths, mSubfolderMimeTypes; 00376 bool mIsSelected; 00377 bool mCheckFlags; 00378 bool mReadOnly; 00379 bool mCheckMail : 1; 00380 QGuardedPtr<KMAcctImap> mAccount; 00381 QIntDict<ulong> uidmap; 00382 private: 00383 bool mCheckingValidity; 00384 QDict<KMMsgMetaData> mMetaDataMap; 00385 }; 00386 00387 #endif // kmfolderimap_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 Wed Jul 28 23:58:01 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003