aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/folder.cpp
diff options
context:
space:
mode:
authorVincent Richard <[email protected]>2013-07-18 19:51:09 +0000
committerVincent Richard <[email protected]>2013-07-18 19:51:09 +0000
commit9a9794cb7d91893ec720a1e1a4aab1c52ae13e1b (patch)
treeeecc177592324725fa52627dd915729752e90c25 /src/net/folder.cpp
parentRemoved useless accessors. (diff)
downloadvmime-9a9794cb7d91893ec720a1e1a4aab1c52ae13e1b.tar.gz
vmime-9a9794cb7d91893ec720a1e1a4aab1c52ae13e1b.zip
Reworked IMAP event notification code.
Diffstat (limited to '')
-rw-r--r--src/net/folder.cpp29
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>());
}
}