diff options
Diffstat (limited to 'vmime/net/events.hpp')
-rw-r--r-- | vmime/net/events.hpp | 56 |
1 files changed, 44 insertions, 12 deletions
diff --git a/vmime/net/events.hpp b/vmime/net/events.hpp index d42f3c1c..1e5fd7f3 100644 --- a/vmime/net/events.hpp +++ b/vmime/net/events.hpp @@ -44,13 +44,30 @@ class folder; namespace events { +/** Event occurring on folders or messages. + */ + +class VMIME_EXPORT event : public object +{ +public: + + event(); + virtual ~event(); + + virtual const char* getClass() const = 0; +}; + + /** Event about the message count in a folder. */ -class VMIME_EXPORT messageCountEvent +class VMIME_EXPORT messageCountEvent : public event { public: + static const char* EVENT_CLASS; + + enum Types { TYPE_ADDED, /**< New messages have been added. */ @@ -82,7 +99,10 @@ public: * * @param listener listener to notify */ - void dispatch(class messageCountListener* listener) const; + void dispatch(class messageCountListener* listener); + + + const char* getClass() const; private: @@ -103,18 +123,21 @@ protected: public: - virtual void messagesAdded(const messageCountEvent& event) = 0; - virtual void messagesRemoved(const messageCountEvent& event) = 0; + virtual void messagesAdded(ref <messageCountEvent> event) = 0; + virtual void messagesRemoved(ref <messageCountEvent> event) = 0; }; /** Event occuring on a message. */ -class VMIME_EXPORT messageChangedEvent +class VMIME_EXPORT messageChangedEvent : public event { public: + static const char* EVENT_CLASS; + + enum Types { TYPE_FLAGS // flags changed @@ -145,7 +168,10 @@ public: * * @param listener listener to notify */ - void dispatch(class messageChangedListener* listener) const; + void dispatch(class messageChangedListener* listener); + + + const char* getClass() const; private: @@ -166,17 +192,20 @@ protected: public: - virtual void messageChanged(const messageChangedEvent& event) = 0; + virtual void messageChanged(ref <messageChangedEvent> event) = 0; }; /** Event occuring on a folder. */ -class VMIME_EXPORT folderEvent +class VMIME_EXPORT folderEvent : public event { public: + static const char* EVENT_CLASS; + + enum Types { TYPE_CREATED, /**< A folder was created. */ @@ -203,7 +232,10 @@ public: * * @param listener listener to notify */ - void dispatch(class folderListener* listener) const; + void dispatch(class folderListener* listener); + + + const char* getClass() const; private: @@ -225,9 +257,9 @@ protected: public: - virtual void folderCreated(const folderEvent& event) = 0; - virtual void folderRenamed(const folderEvent& event) = 0; - virtual void folderDeleted(const folderEvent& event) = 0; + virtual void folderCreated(ref <folderEvent> event) = 0; + virtual void folderRenamed(ref <folderEvent> event) = 0; + virtual void folderDeleted(ref <folderEvent> event) = 0; }; |