summaryrefslogtreecommitdiffstats
path: root/libmail/maildirfolder.H
diff options
context:
space:
mode:
Diffstat (limited to 'libmail/maildirfolder.H')
-rw-r--r--libmail/maildirfolder.H108
1 files changed, 108 insertions, 0 deletions
diff --git a/libmail/maildirfolder.H b/libmail/maildirfolder.H
new file mode 100644
index 0000000..e7710b0
--- /dev/null
+++ b/libmail/maildirfolder.H
@@ -0,0 +1,108 @@
+/*
+** Copyright 2002, Double Precision Inc.
+**
+** See COPYING for distribution information.
+*/
+#ifndef libmail_maildirfolder_H
+#define libmail_maildirfolder_H
+
+#include "maildir.H"
+
+#include <string>
+#include <set>
+#include <list>
+
+LIBMAIL_START
+
+////////////////////////////////////////////////////////////////////////////
+//
+// Courier-compatible maildir folder.
+
+class maildir::folder : public mail::folder {
+
+ maildir *maildirAccount;
+
+ std::string path;
+ std::string name;
+
+ bool hasMessagesFlag;
+ bool hasSubfoldersFlag;
+
+ // Compile subdirectory listings
+
+ class listinfo {
+ public:
+ listinfo();
+ ~listinfo();
+
+ std::string path;
+
+ std::set<std::string> list, subdirs;
+ };
+
+ static void maildir_list_callback(const char *, void *);
+
+public:
+ friend class maildir;
+
+ folder(maildir *maildirArg,
+ std::string pathArg);
+ ~folder();
+
+ void sameServerAsHelperFunc() const;
+
+ std::string getName() const;
+ std::string getPath() const;
+
+ bool hasMessages() const;
+ bool hasSubFolders() const;
+ bool isParentOf(std::string path) const;
+
+ void hasMessages(bool);
+ void hasSubFolders(bool);
+
+ void getParentFolder(callback::folderList &callback1,
+ callback &callback2) const;
+
+ void readFolderInfo( mail::callback::folderInfo &callback1,
+ mail::callback &callback2) const;
+
+ void readSubFolders( mail::callback::folderList &callback1,
+ mail::callback &callback2) const;
+
+private:
+ void buildFolderList(std::list<mail::folder *> &folderList,
+ std::set<std::string> *folders,
+ std::set<std::string> *dirs) const;
+
+ bool doCreate(bool isDirectory) const;
+
+public:
+ mail::addMessage *addMessage(mail::callback &callback) const;
+
+ void createSubFolder(std::string name, bool isDirectory,
+ mail::callback::folderList &callback1,
+ mail::callback &callback2) const;
+
+ void create(bool isDirectory,
+ mail::callback &callback) const;
+
+ void destroy(mail::callback &callback, bool destroyDir) const;
+
+ void renameFolder(const mail::folder *newParent, std::string newName,
+ mail::callback::folderList &callback1,
+ mail::callback &callback) const;
+
+ mail::folder *clone() const;
+ std::string toString() const;
+
+ void open(mail::callback &openCallback,
+ snapshot *restoreSnapshot,
+ mail::callback::folder &folderCallback) const;
+};
+
+LIBMAIL_END
+
+#endif
+
+