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() const { 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.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Aug 23 18:21:22 2007 by doxygen 1.4.2 written by Dimitri van Heesch, © 1997-2003