kmfoldermaildir.h
00001 #ifndef kmfoldermaildir_h 00002 #define kmfoldermaildir_h 00003 00004 #include "kmfolderindex.h" 00005 00006 #include <tdefileitem.h> 00007 00008 #include <tqguardedptr.h> 00009 00010 class KMFolderMaildir; 00011 namespace KMail { 00012 class FolderJob; 00013 class MaildirJob; 00014 class AttachmentStrategy; 00015 } 00016 namespace TDEIO { 00017 class Job; 00018 } 00019 00020 using KMail::FolderJob; 00021 using KMail::MaildirJob; 00022 using KMail::AttachmentStrategy; 00023 00024 class KMFolderMaildir : public KMFolderIndex 00025 { 00026 Q_OBJECT 00027 00028 friend class ::KMail::MaildirJob; 00029 public: 00033 KMFolderMaildir(KMFolder* folder, const char* name=0); 00034 virtual ~KMFolderMaildir(); 00035 00037 virtual KMFolderType folderType() const { return KMFolderTypeMaildir; } 00038 00040 virtual DwString getDwString(int idx); 00041 00044 virtual KMMessage* take(int idx); 00045 00052 virtual int addMsg(KMMessage* msg, int* index_return = 0); 00053 00055 virtual void removeMsg(int i, bool imapQuiet = FALSE); 00056 virtual void removeMsg(TQPtrList<KMMessage> msgList, bool imapQuiet = FALSE) 00057 { return KMFolderIndex::removeMsg(msgList, imapQuiet); } 00058 00059 // Called by KMMsgBase::setStatus when status of a message has changed 00060 // required to keep the number unread messages variable current. 00061 virtual void msgStatusChanged( const KMMsgStatus oldStatus, 00062 const KMMsgStatus newStatus, 00063 int idx); 00064 00070 virtual int open(const char *owner); 00071 00072 virtual int canAccess(); 00073 00075 virtual void sync(); 00076 00079 virtual void reallyDoClose(const char *owner); 00080 00087 static int createMaildirFolders( const TQString & folderPath ); 00088 00089 static TQString constructValidFileName( const TQString & filename = TQString(), 00090 KMMsgStatus status = KMMsgStatusNew ); 00091 00092 static bool removeFile( const TQString & folderPath, 00093 const TQString & filename ); 00094 00096 virtual int create(); 00097 00100 int compact( unsigned int startIndex, int nbMessages, const TQStringList& entryList, bool& done ); 00101 00104 virtual int compact( bool silent ); 00105 00107 virtual bool isReadOnly() const { return false; } 00108 00110 virtual TQ_INT64 doFolderSize() const; 00111 00112 protected: 00113 virtual FolderJob* doCreateJob( KMMessage *msg, FolderJob::JobType jt, KMFolder *folder, 00114 TQString partSpecifier, const AttachmentStrategy *as ) const; 00115 virtual FolderJob* doCreateJob( TQPtrList<KMMessage>& msgList, const TQString& sets, 00116 FolderJob::JobType jt, KMFolder *folder ) const; 00119 virtual KMMessage* readMsg(int idx); 00120 00124 virtual int removeContents(); 00125 00129 virtual int expungeContents(); 00130 00134 virtual int createIndexFromContents(); 00135 00145 int addMsgInternal( KMMessage* msg, int* index_return = 0, bool stripUid=false ); 00146 00147 private slots: 00148 void slotDirSizeJobResult( TDEIO::Job* job ); 00149 00150 private: 00151 void readFileHeaderIntern(const TQString& dir, const TQString& file, KMMsgStatus status); 00152 TQString moveInternal(const TQString& oldLoc, const TQString& newLoc, KMMsgInfo* mi); 00153 TQString moveInternal(const TQString& oldLoc, const TQString& newLoc, TQString& aFileName, KMMsgStatus status); 00154 bool removeFile(const TQString& filename); 00155 00161 virtual IndexStatus indexStatus(); 00162 00163 typedef TQPair<TQGuardedPtr<const KMFolderMaildir>,KFileItemList> DirSizeJobQueueEntry; 00164 static TQValueList<DirSizeJobQueueEntry> s_DirSizeJobQueue; 00165 00166 TQStrList mIdxToFileList; 00167 int mIdxCount; 00168 mutable bool mCurrentlyCheckingFolderSize; 00169 }; 00170 #endif /*kmfoldermaildir_h*/