diff options
author | Vincent Richard <[email protected]> | 2004-12-17 17:02:18 +0000 |
---|---|---|
committer | Vincent Richard <[email protected]> | 2004-12-17 17:02:18 +0000 |
commit | 90b9650ede514a6cbc01a7e7501df3c9afed7c8f (patch) | |
tree | 0de1be429125a4bae8740be5cbec9bafbe248aaf /src/messaging/IMAPFolder.cpp | |
parent | Updated function doc. (diff) | |
download | vmime-90b9650ede514a6cbc01a7e7501df3c9afed7c8f.tar.gz vmime-90b9650ede514a6cbc01a7e7501df3c9afed7c8f.zip |
Fixed bugs with message count notification.
Diffstat (limited to 'src/messaging/IMAPFolder.cpp')
-rw-r--r-- | src/messaging/IMAPFolder.cpp | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/messaging/IMAPFolder.cpp b/src/messaging/IMAPFolder.cpp index 7544dc2c..0cbb860a 100644 --- a/src/messaging/IMAPFolder.cpp +++ b/src/messaging/IMAPFolder.cpp @@ -1214,11 +1214,26 @@ void IMAPFolder::expunge() } } + m_messageCount -= nums.size(); + // Notify message expunged events::messageCountEvent event(this, events::messageCountEvent::TYPE_REMOVED, nums); - m_messageCount -= nums.size(); notifyMessageCount(event); + + // Notify folders with the same path + for (std::list <IMAPFolder*>::iterator it = m_store->m_folders.begin() ; + it != m_store->m_folders.end() ; ++it) + { + if ((*it) != this && (*it)->getFullPath() == m_path) + { + (*it)->m_messageCount = m_messageCount; + + events::messageCountEvent event(*it, events::messageCountEvent::TYPE_REMOVED, nums); + + (*it)->notifyMessageCount(event); + } + } } @@ -1474,12 +1489,18 @@ void IMAPFolder::status(int& count, int& unseen) events::messageCountEvent event(this, events::messageCountEvent::TYPE_ADDED, nums); + notifyMessageCount(event); + + // Notify folders with the same path for (std::list <IMAPFolder*>::iterator it = m_store->m_folders.begin() ; it != m_store->m_folders.end() ; ++it) { - if ((*it)->getFullPath() == m_path) + if ((*it) != this && (*it)->getFullPath() == m_path) { (*it)->m_messageCount = count; + + events::messageCountEvent event(*it, events::messageCountEvent::TYPE_ADDED, nums); + (*it)->notifyMessageCount(event); } } |