diff options
Diffstat (limited to 'src/messaging/events.hpp')
-rw-r--r-- | src/messaging/events.hpp | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/src/messaging/events.hpp b/src/messaging/events.hpp new file mode 100644 index 00000000..d51ca2d0 --- /dev/null +++ b/src/messaging/events.hpp @@ -0,0 +1,174 @@ +// +// VMime library (http://vmime.sourceforge.net) +// Copyright (C) 2002-2004 Vincent Richard <[email protected]> +// +// 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_EVENTS_HPP_INCLUDED +#define VMIME_MESSAGING_EVENTS_HPP_INCLUDED + + +#include <vector> + +#include "../utility/path.hpp" + + +namespace vmime { +namespace messaging { + +class folder; + +namespace events { + + +// +// messageCountEvent +// + +class messageCountEvent +{ +public: + + enum Types + { + TYPE_ADDED, // new messages + TYPE_REMOVED // expunged messages: renumbering + }; + + + messageCountEvent(class folder* folder, const Types type, const std::vector <int>& nums); + + const class folder* folder() const; + const Types type() const; + const std::vector <int>& numbers() const; + + void dispatch(class messageCountListener* listener) const; + +private: + + class folder* m_folder; + const Types m_type; + std::vector <int> m_nums; +}; + + +class messageCountListener +{ +protected: + + virtual ~messageCountListener() { } + +public: + + virtual void messagesAdded(const messageCountEvent& event) = 0; + virtual void messagesRemoved(const messageCountEvent& event) = 0; +}; + + +// +// messageChangedEvent +// + +class messageChangedEvent +{ +public: + + enum Types + { + TYPE_FLAGS // flags changed + }; + + + messageChangedEvent(class folder* folder, const Types type, const std::vector <int>& nums); + + const class folder* folder() const; + const Types type() const; + const std::vector <int>& numbers() const; + + void dispatch(class messageChangedListener* listener) const; + +private: + + class folder* m_folder; + const Types m_type; + std::vector <int> m_nums; +}; + + +class messageChangedListener +{ +protected: + + virtual ~messageChangedListener() { } + +public: + + virtual void messageChanged(const messageChangedEvent& event) = 0; +}; + + +// +// folderEvent +// + +class folderEvent +{ +public: + + enum Types + { + TYPE_CREATED, // a folder was created + TYPE_DELETED, // a folder was deleted + TYPE_RENAMED // a folder was renamed + }; + + + folderEvent(class folder* folder, const Types type, const utility::path& oldPath, const utility::path& newPath); + + const class folder* folder() const; + const Types type() const; + + void dispatch(class folderListener* listener) const; + +private: + + class folder* m_folder; + const Types m_type; + const utility::path m_oldPath; + const utility::path m_newPath; +}; + + +class folderListener +{ +protected: + + virtual ~folderListener() { } + +public: + + virtual void folderCreated(const folderEvent& event) = 0; + virtual void folderRenamed(const folderEvent& event) = 0; + virtual void folderDeleted(const folderEvent& event) = 0; +}; + + +} // events +} // messaging +} // vmime + + +#endif // VMIME_MESSAGING_EVENTS_HPP_INCLUDED |