From 4ce991d3b1bd97fbb896d17fb8f36f6650429a22 Mon Sep 17 00:00:00 2001 From: Vincent Richard Date: Sun, 26 Dec 2004 20:23:29 +0000 Subject: Moved all header files to 'vmime/' directory. --- src/messaging/folder.hpp | 375 ----------------------------------------------- 1 file changed, 375 deletions(-) delete mode 100644 src/messaging/folder.hpp (limited to 'src/messaging/folder.hpp') diff --git a/src/messaging/folder.hpp b/src/messaging/folder.hpp deleted file mode 100644 index 60bb0d23..00000000 --- a/src/messaging/folder.hpp +++ /dev/null @@ -1,375 +0,0 @@ -// -// VMime library (http://vmime.sourceforge.net) -// Copyright (C) 2002-2004 Vincent Richard -// -// This program is free software; you can redistribute it and/or -// modify it under the terms of the GNU General Public License as -// published by the Free Software Foundation; either version 2 of -// the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -// - -#ifndef VMIME_MESSAGING_FOLDER_HPP_INCLUDED -#define VMIME_MESSAGING_FOLDER_HPP_INCLUDED - - -#include - -#include "types.hpp" -#include "dateTime.hpp" -#include "messaging/progressionListener.hpp" -#include "messaging/message.hpp" -#include "messaging/events.hpp" -#include "utility/path.hpp" -#include "utility/stream.hpp" - - -namespace vmime { -namespace messaging { - - -class store; - - -/** Abstract representation of a folder in a message store. - */ - -class folder -{ -protected: - - folder(const folder&) { } - folder() { } - -public: - - virtual ~folder() { } - - /** Type used for fully qualified path name of a folder. - */ - typedef vmime::utility::path path; - - - /** Open mode. - */ - enum Modes - { - MODE_READ_ONLY, /**< Read-only mode (no modification to folder or messages is possible). */ - MODE_READ_WRITE /**< Full access mode (read and write). */ - }; - - /** Folder types. - */ - enum Types - { - TYPE_CONTAINS_FOLDERS = (1 << 0), /**< Folder can contain folders. */ - TYPE_CONTAINS_MESSAGES = (1 << 1), /**< Folder can contain messages. */ - - TYPE_UNDEFINED = 9999 /**< Used internally (this should not be returned - by the type() function). */ - }; - - /** Folder flags. - */ - enum Flags - { - FLAG_CHILDREN = (1 << 0), /**< Folder contains subfolders. */ - FLAG_NO_OPEN = (1 << 1), /**< Folder cannot be open. */ - - FLAG_UNDEFINED = 9999 /**< Used internally (this should not be returned - by the type() function). */ - }; - - /** Return the type of this folder. - * - * @return folder type (see folder::Types) - */ - virtual const int getType() = 0; - - /** Return the flags of this folder. - * - * @return folder flags (see folder::Flags) - */ - virtual const int getFlags() = 0; - - /** Return the mode in which the folder has been open. - * - * @return folder opening mode (see folder::Modes) - */ - virtual const int getMode() const = 0; - - /** Return the name of this folder. - * - * @return folder name - */ - virtual const folder::path::component getName() const = 0; - - /** Return the fully qualified path name of this folder. - * - * @return absolute path of the folder - */ - virtual const folder::path getFullPath() const = 0; - - /** Open this folder. - * - * @param mode open mode (see folder::Modes) - * @param failIfModeIsNotAvailable if set to false and if the requested mode - * is not available, a more restricted mode will be selected automatically. - * If set to true and if the requested mode is not available, the opening - * will fail. - */ - virtual void open(const int mode, bool failIfModeIsNotAvailable = false) = 0; - - /** Close this folder. - * - * @param expunge if set to true, deleted messages are expunged - */ - virtual void close(const bool expunge) = 0; - - /** Create this folder. - * - * @param type folder type (see folder::Types) - */ - virtual void create(const int type) = 0; - - /** Test whether this folder exists. - * - * @return true if the folder exists, false otherwise - */ - virtual const bool exists() = 0; - - /** Test whether this folder is open. - * - * @return true if the folder is open, false otherwise - */ - virtual const bool isOpen() const = 0; - - /** Get a new reference to a message in this folder. - * - * @param num message sequence number - * @return a new object referencing the specified message - */ - virtual message* getMessage(const int num) = 0; - - /** Get new references to messages in this folder. - * - * @param from sequence number of the first message to get - * @param to sequence number of the last message to get - * @return new objects referencing the specified messages - */ - virtual std::vector getMessages(const int from = 1, const int to = -1) = 0; - - /** Get new references to messages in this folder. - * - * @param nums sequence numbers of the messages to delete - * @return new objects referencing the specified messages - */ - virtual std::vector getMessages(const std::vector & nums) = 0; - - /** Return the number of messages in this folder. - * - * @return number of messages in the folder - */ - virtual const int getMessageCount() = 0; - - /** Get a new reference to a sub-folder in this folder. - * - * @param name sub-folder name - * @return a new object referencing the specified folder - */ - virtual folder* getFolder(const folder::path::component& name) = 0; - - /** Get the list of all sub-folders in this folder. - * - * @param recursive if set to true, all the descendant are returned. - * If set to false, only the direct children are returned. - * @return list of sub-folders - */ - virtual std::vector getFolders(const bool recursive = false) = 0; - - /** Rename (move) this folder to another location. - * - * @param newPath new path of the folder - */ - virtual void rename(const folder::path& newPath) = 0; - - /** Remove a message in this folder. - * - * @param num sequence number of the message to delete - */ - virtual void deleteMessage(const int num) = 0; - - /** Remove one or more messages from this folder. - * - * @param from sequence number of the first message to delete - * @param to sequence number of the last message to delete - */ - virtual void deleteMessages(const int from = 1, const int to = -1) = 0; - - /** Remove one or more messages from this folder. - * - * @param nums sequence numbers of the messages to delete - */ - virtual void deleteMessages(const std::vector & nums) = 0; - - /** Change the flags for one or more messages in this folder. - * - * @param from sequence number of the first message to modify - * @param to sequence number of the last message to modify - * @param flags set of flags (see message::Flags) - * @param mode indicate how to treat old and new flags (see message::FlagsModes) - */ - virtual void setMessageFlags(const int from, const int to, const int flags, const int mode = message::FLAG_MODE_SET) = 0; - - /** Change the flags for one or more messages in this folder. - * - * @param nums sequence numbers of the messages to modify - * @param flags set of flags (see message::Flags) - * @param mode indicate how to treat old and new flags (see message::FlagsModes) - */ - virtual void setMessageFlags(const std::vector & nums, const int flags, const int mode = message::FLAG_MODE_SET) = 0; - - /** Add a message to this folder. - * - * @param msg message to add (data: header + body) - * @param flags flags for the new message - * @param date date/time for the new message (if NULL, the current time is used) - * @param progress progression listener, or NULL if not used - */ - virtual void addMessage(vmime::message* msg, const int flags = message::FLAG_UNDEFINED, vmime::datetime* date = NULL, progressionListener* progress = NULL) = 0; - - /** Add a message to this folder. - * - * @param is message to add (data: header + body) - * @param size size of the message to add (in bytes) - * @param flags flags for the new message - * @param date date/time for the new message (if NULL, the current time is used) - * @param progress progression listener, or NULL if not used - */ - virtual void addMessage(utility::inputStream& is, const int size, const int flags = message::FLAG_UNDEFINED, vmime::datetime* date = NULL, progressionListener* progress = NULL) = 0; - - /** Copy a message from this folder to another folder. - * - * @param dest destination folder path - * @param num sequence number of the message to copy - */ - virtual void copyMessage(const folder::path& dest, const int num) = 0; - - /** Copy messages from this folder to another folder. - * - * @param dest destination folder path - * @param from sequence number of the first message to copy - * @param to sequence number of the last message to copy - */ - virtual void copyMessages(const folder::path& dest, const int from = 1, const int to = -1) = 0; - - /** Copy messages from this folder to another folder. - * - * @param dest destination folder path - * @param nums sequence numbers of the messages to copy - */ - virtual void copyMessages(const folder::path& dest, const std::vector & nums) = 0; - - /** Request folder status without opening it. - * - * @param count will receive the number of messages in the folder - * @param unseen will receive the number of unseen messages in the folder - */ - virtual void status(int& count, int& unseen) = 0; - - /** Expunge deleted messages. - */ - virtual void expunge() = 0; - - /** Return a new folder object referencing the parent folder of this folder. - * - * @return parent folder object - */ - virtual folder* getParent() = 0; - - /** Return a reference to the store to which this folder belongs. - * - * @return the store object to which this folder is attached - */ - virtual const store* getStore() const = 0; - - /** Return a reference to the store to which this folder belongs. - * - * @return the store object to which this folder is attached - */ - virtual store* getStore() = 0; - - /** Fetchable objects. - */ - enum FetchOptions - { - FETCH_ENVELOPE = (1 << 0), /**< Fetch sender, recipients, date, subject. */ - FETCH_STRUCTURE = (1 << 1), /**< Fetch structure (body parts). */ - FETCH_CONTENT_INFO = (1 << 2), /**< Fetch top-level content type. */ - FETCH_FLAGS = (1 << 3), /**< Fetch message flags. */ - FETCH_SIZE = (1 << 4), /**< Fetch message size (exact or estimated). */ - FETCH_FULL_HEADER = (1 << 5), /**< Fetch full RFC-[2]822 header. */ - FETCH_UID = (1 << 6), /**< Fetch unique identifier (protocol specific). */ - - FETCH_CUSTOM = (1 << 16) /**< Reserved for future use. */ - }; - - /** Fetch objects for the specified messages. - * - * @param msg list of message sequence numbers - * @param options objects to fetch (combination of folder::FetchOptions flags) - * @param progress progression listener, or NULL if not used - */ - virtual void fetchMessages(std::vector & msg, const int options, progressionListener* progress = NULL) = 0; - - /** Fetch objects for the specified message. - * - * @param msg the message - * @param options objects to fetch (combination of folder::FetchOptions flags) - */ - virtual void fetchMessage(message* msg, const int options) = 0; - - /** Return the list of fetchable objects supported by - * the underlying protocol (see folder::FetchOptions). - * - * @return list of supported fetchable objects - */ - virtual const int getFetchCapabilities() const = 0; - - // Event listeners - void addMessageChangedListener(events::messageChangedListener* l); - void removeMessageChangedListener(events::messageChangedListener* l); - - void addMessageCountListener(events::messageCountListener* l); - void removeMessageCountListener(events::messageCountListener* l); - - void addFolderListener(events::folderListener* l); - void removeFolderListener(events::folderListener* l); - -protected: - - void notifyMessageChanged(const events::messageChangedEvent& event); - void notifyMessageCount(const events::messageCountEvent& event); - void notifyFolder(const events::folderEvent& event); - -private: - - std::list m_messageChangedListeners; - std::list m_messageCountListeners; - std::list m_folderListeners; -}; - - -} // messaging -} // vmime - - -#endif // VMIME_MESSAGING_FOLDER_HPP_INCLUDED -- cgit v1.2.3