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/folder.cpp | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'src/net/folder.cpp') diff --git a/src/net/folder.cpp b/src/net/folder.cpp index 58523399..1cc618d4 100644 --- a/src/net/folder.cpp +++ b/src/net/folder.cpp @@ -48,12 +48,12 @@ void folder::removeMessageChangedListener(events::messageChangedListener* l) } -void folder::notifyMessageChanged(const events::messageChangedEvent& event) +void folder::notifyMessageChanged(ref event) { for (std::list ::iterator it = m_messageChangedListeners.begin() ; it != m_messageChangedListeners.end() ; ++it) { - event.dispatch(*it); + event->dispatch(*it); } } @@ -70,12 +70,12 @@ void folder::removeMessageCountListener(events::messageCountListener* l) } -void folder::notifyMessageCount(const events::messageCountEvent& event) +void folder::notifyMessageCount(ref event) { for (std::list ::iterator it = m_messageCountListeners.begin() ; it != m_messageCountListeners.end() ; ++it) { - event.dispatch(*it); + event->dispatch(*it); } } @@ -92,12 +92,29 @@ void folder::removeFolderListener(events::folderListener* l) } -void folder::notifyFolder(const events::folderEvent& event) +void folder::notifyFolder(ref event) { for (std::list ::iterator it = m_folderListeners.begin() ; it != m_folderListeners.end() ; ++it) { - event.dispatch(*it); + event->dispatch(*it); + } +} + + +void folder::notifyEvent(ref event) +{ + if (event->getClass() == events::messageCountEvent::EVENT_CLASS) + { + notifyMessageCount(event.dynamicCast ()); + } + else if (event->getClass() == events::messageChangedEvent::EVENT_CLASS) + { + notifyMessageChanged(event.dynamicCast ()); + } + else if (event->getClass() == events::folderEvent::EVENT_CLASS) + { + notifyFolder(event.dynamicCast ()); } } -- cgit v1.2.3