00001
#ifndef kmfoldermaildir_h
00002
#define kmfoldermaildir_h
00003
00004
#include "kmfolderindex.h"
00005
00006
00007
class KMFolderMaildir;
00008
namespace KMail {
00009
class FolderJob;
00010
class MaildirJob;
00011
class AttachmentStrategy;
00012 }
00013
using KMail::FolderJob;
00014
using KMail::MaildirJob;
00015
using KMail::AttachmentStrategy;
00016
00017
class KMFolderMaildir :
public KMFolderIndex
00018 {
00019 Q_OBJECT
00020
friend class MaildirJob;
00021
public:
00025 KMFolderMaildir(
KMFolderDir* parent=0,
const QString& name=QString::null);
00026
virtual ~KMFolderMaildir();
00027
00029
virtual KMFolderType folderType()
const {
return KMFolderTypeMaildir; }
00030
00032
virtual QCString& getMsgString(
int idx, QCString& mDest);
00033
virtual DwString getDwString(
int idx);
00034
00037
virtual KMMessage* take(
int idx);
00038
00045
virtual int addMsg(KMMessage* msg,
int* index_return = 0);
00046
00048
virtual void removeMsg(
int i,
bool imapQuiet = FALSE);
00049
00050
00051
00052
virtual void msgStatusChanged(
const KMMsgStatus oldStatus,
00053
const KMMsgStatus newStatus,
00054
int idx);
00055
00061
virtual int open();
00062
00063
virtual int canAccess();
00064
00066
virtual void sync();
00067
00070
virtual void close(
bool force=FALSE);
00071
00075
virtual int create(
bool imap = FALSE);
00076
00079
virtual int compact();
00080
00082
virtual bool isReadOnly()
const {
return false; }
00083
00084
virtual QCString protocol()
const {
return "maildir"; }
00085
00086
protected:
00087
virtual FolderJob* doCreateJob( KMMessage *msg, FolderJob::JobType jt,
KMFolder *folder,
00088 QString partSpecifier,
const AttachmentStrategy *as )
const;
00089
virtual FolderJob* doCreateJob( QPtrList<KMMessage>& msgList,
const QString& sets,
00090 FolderJob::JobType jt,
KMFolder *folder )
const;
00093
virtual KMMessage* readMsg(
int idx);
00094
00098
virtual int removeContents();
00099
00103
virtual int expungeContents();
00104
00108
virtual int createIndexFromContents();
00109
00110
private:
00111
void readFileHeaderIntern(
const QString& dir,
const QString& file, KMMsgStatus status);
00112 QString constructValidFileName(QString& file, KMMsgStatus status);
00113 QString moveInternal(
const QString& oldLoc,
const QString& newLoc, KMMsgInfo* mi);
00114 QString moveInternal(
const QString& oldLoc,
const QString& newLoc, QString& aFileName, KMMsgStatus status);
00115
bool removeFile(
const QString& filename);
00116
00122
virtual IndexStatus indexStatus();
00123
00124 QStrList mIdxToFileList;
00125
int mIdxCount;
00126 };
00127
#endif