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 #include <kstandarddirs.h> 00040 00041 class KMFolderTreeItem; 00042 class KMFolderImap; 00043 namespace KMail { 00044 class FolderJob; 00045 class ImapJob; 00046 class AttachmentStrategy; 00047 class ProgressItem; 00048 } 00049 using KMail::FolderJob; 00050 using KMail::ImapJob; 00051 using KMail::AttachmentStrategy; 00052 using KPIM::ProgressItem; 00053 00054 class KMMsgMetaData 00055 { 00056 public: 00057 KMMsgMetaData(KMMsgStatus aStatus) 00058 :mStatus(aStatus), mSerNum(0) {} 00059 KMMsgMetaData(KMMsgStatus aStatus, Q_UINT32 aSerNum) 00060 :mStatus(aStatus), mSerNum(aSerNum) {} 00061 ~KMMsgMetaData() {}; 00062 const KMMsgStatus status() const { return mStatus; } 00063 const Q_UINT32 serNum() const { return mSerNum; } 00064 private: 00065 KMMsgStatus mStatus; 00066 Q_UINT32 mSerNum; 00067 }; 00068 00069 00070 00071 class KMFolderImap : public KMFolderMbox 00072 { 00073 Q_OBJECT 00074 friend class ImapJob; 00075 public: 00076 00077 static QString cacheLocation() { 00078 return locateLocal("data", "kmail/imap" ); 00079 } 00080 00081 enum imapState { imapNoInformation=0, imapInProgress=1, imapFinished=2 }; 00082 00083 virtual imapState getContentState() { return mContentState; } 00084 virtual void setContentState(imapState state) { mContentState = state; } 00085 00086 virtual imapState getSubfolderState() { return mSubfolderState; } 00087 virtual void setSubfolderState(imapState state); 00088 00092 KMFolderImap(KMFolder* folder, const char* name=0); 00093 virtual ~KMFolderImap(); 00094 00096 virtual KMFolderType folderType() const { return KMFolderTypeImap; } 00097 00098 virtual KMMessage* getMsg(int idx); 00100 void setImapPath(const QString &path) { mImapPath = path; } 00101 QString imapPath() { return mImapPath; } 00102 00104 ulong lastUid(); 00105 00107 void setUidValidity(const QString &validity) { mUidValidity = validity; } 00108 QString uidValidity() { return mUidValidity; } 00109 00111 void setAccount(KMAcctImap *acct); 00112 KMAcctImap* account() const { return mAccount; } 00113 00115 virtual void removeMsg(int i, bool quiet = FALSE); 00116 virtual void removeMsg(const QPtrList<KMMessage>& msgList, bool quiet = FALSE); 00117 00118 virtual int rename( const QString& newName, KMFolderDir *aParent = 0 ); 00119 00121 virtual void remove(); 00122 00124 bool autoExpunge(); 00125 00127 virtual void writeConfig(); 00128 00130 virtual void readConfig(); 00131 00137 virtual bool listDirectory(bool secondStep = false); 00138 00142 void getFolder(bool force = FALSE); 00143 00147 void getAndCheckFolder(bool force = FALSE); 00148 00152 void getMessage(KMFolder * folder, KMMessage * msg); 00153 00157 void createFolder(const QString &name); 00158 00162 void deleteMessage(KMMessage * msg); 00163 void deleteMessage(const QPtrList<KMMessage>& msgList); 00164 00169 virtual void setStatus(int idx, KMMsgStatus status, bool toggle); 00170 00174 virtual void setStatus(QValueList<int>& ids, KMMsgStatus status, bool toggle); 00175 00177 static QStringList makeSets( QValueList<ulong>&, bool sort = true); 00178 static QStringList makeSets(const QStringList&, bool sort = true); 00179 00181 static QPtrList<KMMessage> splitMessageList(const QString& set, 00182 QPtrList<KMMessage>& msgList); 00183 00185 void getUids(QValueList<int>& ids, QValueList<ulong>& uids); 00186 00188 void getUids(const QPtrList<KMMessage>& msgList, QValueList<ulong>& uids, KMFolder* msgParent = 0); 00189 00193 void expungeFolder(KMFolderImap * aFolder, bool quiet); 00194 00195 virtual int compact( bool ) { expungeFolder(this, false); return 0; }; 00196 00200 void sendFolderComplete(bool success) 00201 { emit folderComplete(this, success); } 00202 00207 bool processNewMail(bool interactive); 00208 00213 void setSelected(bool selected) { mIsSelected = selected; } 00214 bool isSelected() { return mIsSelected; } 00215 00219 static QString encodeFileName(const QString &); 00220 static QString decodeFileName(const QString &); 00221 static QTextCodec * utf7Codec(); 00222 00226 static QString statusToFlags(KMMsgStatus status); 00227 00231 virtual QString fileName() const { 00232 return encodeFileName( KMFolderMbox::fileName() ); } 00233 00237 void insertUidSerNumEntry(ulong uid, const ulong * sernum) { 00238 uidmap.insert(uid, sernum); } 00239 00243 static QValueList<ulong> splitSets(const QString); 00244 00245 virtual void ignoreJobsForMessage( KMMessage* ); 00246 00250 bool includeInMailCheck() { return mCheckMail; } 00251 void setIncludeInMailCheck( bool check ); 00252 00254 virtual int create(bool imap = FALSE); 00255 00257 virtual bool isAutoExpire() const { return false; } 00258 00262 virtual void close(bool force=FALSE); 00263 00264 void setCheckingValidity( bool val ) { mCheckingValidity = val; } 00265 00267 KMFolder* trashFolder() const; 00268 00274 void setAlreadyRemoved(bool removed); 00275 00277 bool isReadOnly() const { return KMFolderMbox::isReadOnly() || mReadOnly; } 00278 00283 unsigned int userRights() const { return mUserRights; } 00284 00286 void setUserRights( unsigned int userRights ); 00287 00288 signals: 00289 void folderComplete(KMFolderImap *folder, bool success); 00290 00294 void deleted(KMFolderImap*); 00295 00299 void directoryListingFinished(KMFolderImap*); 00300 00301 public slots: 00303 virtual void addMsgQuiet(KMMessage *); 00304 virtual void addMsgQuiet(QPtrList<KMMessage>); 00305 00312 virtual int addMsg(KMMessage* msg, int* index_return = 0); 00313 int addMsg(QPtrList<KMMessage>&, int* index_return = 0); 00314 00316 void copyMsg(QPtrList<KMMessage>& msgList/*, KMFolder* parent*/); 00317 00318 00321 virtual KMMessage* take(int idx); 00322 virtual void take(QPtrList<KMMessage>); 00323 00327 void slotSimpleData(KIO::Job * job, const QByteArray & data); 00328 00333 static void flagsToStatus(KMMsgBase *msg, int flags, bool newMsg = TRUE); 00334 00335 protected: 00336 virtual FolderJob* doCreateJob( KMMessage *msg, FolderJob::JobType jt, 00337 KMFolder *folder, QString partSpecifier, 00338 const AttachmentStrategy *as ) const; 00339 virtual FolderJob* doCreateJob( QPtrList<KMMessage>& msgList, const QString& sets, 00340 FolderJob::JobType jt, KMFolder *folder ) const; 00341 00342 void getMessagesResult(KIO::Job * job, bool lastSet); 00343 00347 virtual int expungeContents(); 00348 00349 protected slots: 00350 00355 void slotListResult(const QStringList&, const QStringList&, 00356 const QStringList&, const QStringList&, const ImapAccountBase::jobData& ); 00357 00361 void checkValidity(); 00362 void slotCheckValidityResult(KIO::Job * job); 00363 00367 void reallyGetFolder(const QString &startUid = QString::null); 00368 00372 void slotListFolderResult(KIO::Job * job); 00373 void slotListFolderEntries(KIO::Job * job, const KIO::UDSEntryList & uds); 00374 00378 void slotRenameResult( KIO::Job *job ); 00379 00383 void slotGetMessagesResult(KIO::Job * job); 00384 void slotGetLastMessagesResult(KIO::Job * job); 00385 void slotGetMessagesData(KIO::Job * job, const QByteArray & data); 00386 00390 void slotCreateFolderResult(KIO::Job * job); 00391 00395 void slotRemoveFolderResult(KIO::Job *job); 00396 00400 void slotStatResult(KIO::Job *job); 00401 00406 void slotCompleteMailCheckProgress(); 00407 00411 void slotProcessNewMail( int errorCode, const QString& errorMsg ); 00412 00418 void slotCreatePendingFolders(); 00419 00420 protected: 00421 QString mImapPath; 00422 ulong mLastUid; 00423 imapState mContentState, mSubfolderState; 00424 bool mIsSelected; 00425 bool mCheckFlags; 00426 bool mReadOnly; 00427 bool mCheckMail; 00428 QGuardedPtr<KMAcctImap> mAccount; 00429 QIntDict<ulong> uidmap; 00430 QString mUidValidity; 00431 unsigned int mUserRights; 00432 00433 private: 00434 bool mCheckingValidity; 00435 QDict<KMMsgMetaData> mMetaDataMap; 00436 bool mAlreadyRemoved; 00437 QGuardedPtr<ProgressItem> mMailCheckProgressItem; 00438 ProgressItem *mListDirProgressItem; 00439 QStringList mFoldersPendingCreation; 00440 }; 00441 00442 #endif // kmfolderimap_h
KDE Logo
This file is part of the documentation for kmail Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Oct 21 19:46:48 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003