From 9a9794cb7d91893ec720a1e1a4aab1c52ae13e1b Mon Sep 17 00:00:00 2001 From: Vincent Richard Date: Thu, 18 Jul 2013 21:51:09 +0200 Subject: Reworked IMAP event notification code. --- src/net/events.cpp | 59 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 50 insertions(+), 9 deletions(-) (limited to 'src/net/events.cpp') diff --git a/src/net/events.cpp b/src/net/events.cpp index 7dbb4adb..8cc23706 100644 --- a/src/net/events.cpp +++ b/src/net/events.cpp @@ -38,10 +38,27 @@ namespace net { namespace events { +// +// event +// + +event::event() +{ +} + + +event::~event() +{ +} + + // // messageCountEvent // +const char* messageCountEvent::EVENT_CLASS = "messageCountEvent"; + + messageCountEvent::messageCountEvent (ref folder, const Types type, const std::vector & nums) : m_folder(folder), m_type(type) @@ -56,12 +73,18 @@ messageCountEvent::Types messageCountEvent::getType() const { return (m_type); } const std::vector & messageCountEvent::getNumbers() const { return (m_nums); } -void messageCountEvent::dispatch(messageCountListener* listener) const +void messageCountEvent::dispatch(messageCountListener* listener) { if (m_type == TYPE_ADDED) - listener->messagesAdded(*this); + listener->messagesAdded(thisRef().dynamicCast ()); else - listener->messagesRemoved(*this); + listener->messagesRemoved(thisRef().dynamicCast ()); +} + + +const char* messageCountEvent::getClass() const +{ + return EVENT_CLASS; } @@ -69,6 +92,9 @@ void messageCountEvent::dispatch(messageCountListener* listener) const // messageChangedEvent // +const char* messageChangedEvent::EVENT_CLASS = "messageChangedEvent"; + + messageChangedEvent::messageChangedEvent (ref folder, const Types type, const std::vector & nums) : m_folder(folder), m_type(type) @@ -83,9 +109,15 @@ messageChangedEvent::Types messageChangedEvent::getType() const { return (m_type const std::vector & messageChangedEvent::getNumbers() const { return (m_nums); } -void messageChangedEvent::dispatch(messageChangedListener* listener) const +void messageChangedEvent::dispatch(messageChangedListener* listener) +{ + listener->messageChanged(thisRef().dynamicCast ()); +} + + +const char* messageChangedEvent::getClass() const { - listener->messageChanged(*this); + return EVENT_CLASS; } @@ -93,6 +125,9 @@ void messageChangedEvent::dispatch(messageChangedListener* listener) const // folderEvent // +const char* folderEvent::EVENT_CLASS = "folderEvent"; + + folderEvent::folderEvent (ref folder, const Types type, const utility::path& oldPath, const utility::path& newPath) @@ -105,17 +140,23 @@ ref folderEvent::getFolder() const { return (m_folder); } folderEvent::Types folderEvent::getType() const { return (m_type); } -void folderEvent::dispatch(folderListener* listener) const +void folderEvent::dispatch(folderListener* listener) { switch (m_type) { - case TYPE_CREATED: listener->folderCreated(*this); break; - case TYPE_RENAMED: listener->folderRenamed(*this); break; - case TYPE_DELETED: listener->folderDeleted(*this); break; + case TYPE_CREATED: listener->folderCreated(thisRef().dynamicCast ()); break; + case TYPE_RENAMED: listener->folderRenamed(thisRef().dynamicCast ()); break; + case TYPE_DELETED: listener->folderDeleted(thisRef().dynamicCast ()); break; } } +const char* folderEvent::getClass() const +{ + return EVENT_CLASS; +} + + } // events } // net } // vmime -- cgit