diff options
author | Vincent Richard <[email protected]> | 2013-07-18 19:51:09 +0000 |
---|---|---|
committer | Vincent Richard <[email protected]> | 2013-07-18 19:51:09 +0000 |
commit | 9a9794cb7d91893ec720a1e1a4aab1c52ae13e1b (patch) | |
tree | eecc177592324725fa52627dd915729752e90c25 /src/net/folder.cpp | |
parent | Removed useless accessors. (diff) | |
download | vmime-9a9794cb7d91893ec720a1e1a4aab1c52ae13e1b.tar.gz vmime-9a9794cb7d91893ec720a1e1a4aab1c52ae13e1b.zip |
Reworked IMAP event notification code.
Diffstat (limited to '')
-rw-r--r-- | src/net/folder.cpp | 29 |
1 files changed, 23 insertions, 6 deletions
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 <events::messageChangedEvent> event) { for (std::list <events::messageChangedListener*>::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 <events::messageCountEvent> event) { for (std::list <events::messageCountListener*>::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 <events::folderEvent> event) { for (std::list <events::folderListener*>::iterator it = m_folderListeners.begin() ; it != m_folderListeners.end() ; ++it) { - event.dispatch(*it); + event->dispatch(*it); + } +} + + +void folder::notifyEvent(ref <events::event> event) +{ + if (event->getClass() == events::messageCountEvent::EVENT_CLASS) + { + notifyMessageCount(event.dynamicCast <events::messageCountEvent>()); + } + else if (event->getClass() == events::messageChangedEvent::EVENT_CLASS) + { + notifyMessageChanged(event.dynamicCast <events::messageChangedEvent>()); + } + else if (event->getClass() == events::folderEvent::EVENT_CLASS) + { + notifyFolder(event.dynamicCast <events::folderEvent>()); } } |