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 Sat May 1 11:37:27 2004 by doxygen 1.2.15 written by Dimitri van Heesch, © 1997-2003