diff options
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | src/async/imap/MCIMAPFolderInfoOperation.cc | 9 | ||||
-rw-r--r-- | src/async/imap/MCIMAPFolderInfoOperation.h | 4 | ||||
-rw-r--r-- | src/core/imap/MCIMAPSession.cc | 13 | ||||
-rw-r--r-- | src/core/imap/MCIMAPSession.h | 4 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPFolderInfo.h | 3 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPFolderInfo.m | 2 |
7 files changed, 38 insertions, 1 deletions
@@ -5,4 +5,6 @@ xcuserdata .idea project.xcworkspace -example/ios/iOS UI Test/DerivedData
\ No newline at end of file +example/ios/iOS UI Test/DerivedData + + diff --git a/src/async/imap/MCIMAPFolderInfoOperation.cc b/src/async/imap/MCIMAPFolderInfoOperation.cc index e966fb27..8220caf0 100644 --- a/src/async/imap/MCIMAPFolderInfoOperation.cc +++ b/src/async/imap/MCIMAPFolderInfoOperation.cc @@ -19,6 +19,7 @@ IMAPFolderInfoOperation::IMAPFolderInfoOperation() mUidValidity = 0; mMessageCount = 0; mModSequenceValue = 0; + mUnseenCount = 0; } IMAPFolderInfoOperation::~IMAPFolderInfoOperation() @@ -45,6 +46,11 @@ int IMAPFolderInfoOperation::messageCount() return mMessageCount; } +int IMAPFolderInfoOperation::unseenCount() +{ + return mUnseenCount; +} + void IMAPFolderInfoOperation::main() { ErrorCode error; @@ -61,10 +67,13 @@ void IMAPFolderInfoOperation::main() return; } + mUidNext = session()->session()->uidNext(); mUidValidity = session()->session()->uidValidity(); mModSequenceValue = session()->session()->modSequenceValue(); mMessageCount = session()->session()->lastFolderMessageCount(); + mUnseenCount = session()->session()->lastFolderUnseenCount(); + setError(error); } diff --git a/src/async/imap/MCIMAPFolderInfoOperation.h b/src/async/imap/MCIMAPFolderInfoOperation.h index cdf6f35a..07c7a789 100644 --- a/src/async/imap/MCIMAPFolderInfoOperation.h +++ b/src/async/imap/MCIMAPFolderInfoOperation.h @@ -21,19 +21,23 @@ namespace mailcore { IMAPFolderInfoOperation(); virtual ~IMAPFolderInfoOperation(); + virtual uint32_t uidNext(); virtual uint32_t uidValidity(); virtual uint64_t modSequenceValue(); virtual int messageCount(); + virtual int unseenCount(); public: // subclass behavior virtual void main(); private: + uint32_t mUidNext; uint32_t mUidValidity; uint64_t mModSequenceValue; int mMessageCount; + int mUnseenCount; }; diff --git a/src/core/imap/MCIMAPSession.cc b/src/core/imap/MCIMAPSession.cc index e926be75..542f7e14 100644 --- a/src/core/imap/MCIMAPSession.cc +++ b/src/core/imap/MCIMAPSession.cc @@ -329,6 +329,7 @@ void IMAPSession::init() mUIDNext = 0; mModSequenceValue = 0; mFolderMsgCount = 0; + mFolderUnseenCount = 0; mLastFetchedSequenceNumber = 0; mCurrentFolder = NULL; pthread_mutex_init(&mIdleLock, NULL); @@ -840,6 +841,13 @@ void IMAPSession::select(String * folder, ErrorCode * pError) mFolderMsgCount = -1; } + if (mImap->imap_selection_info->sel_first_unseen) { + mFolderUnseenCount = (unsigned int) (mImap->imap_selection_info->sel_first_unseen); + } else { + mFolderUnseenCount = -1; + } + + mModSequenceValue = get_mod_sequence_value(mImap); } @@ -2694,6 +2702,11 @@ unsigned int IMAPSession::lastFolderMessageCount() return mFolderMsgCount; } +unsigned int IMAPSession::lastFolderUnseenCount() +{ + return mFolderUnseenCount; +} + IMAPSyncResult * IMAPSession::syncMessagesByUID(String * folder, IMAPMessagesRequestKind requestKind, IndexSet * uids, uint64_t modseq, IMAPProgressCallback * progressCallback, ErrorCode * pError) diff --git a/src/core/imap/MCIMAPSession.h b/src/core/imap/MCIMAPSession.h index 9cf72843..5a052744 100644 --- a/src/core/imap/MCIMAPSession.h +++ b/src/core/imap/MCIMAPSession.h @@ -122,6 +122,8 @@ namespace mailcore { virtual uint32_t uidNext(); virtual uint64_t modSequenceValue(); virtual unsigned int lastFolderMessageCount(); + virtual unsigned int lastFolderUnseenCount(); + virtual bool isIdleEnabled(); virtual bool isXListEnabled(); @@ -157,6 +159,8 @@ namespace mailcore { uint32_t mUIDNext; uint64_t mModSequenceValue; unsigned int mFolderMsgCount; + unsigned int mFolderUnseenCount; + unsigned int mLastFetchedSequenceNumber; String * mCurrentFolder; pthread_mutex_t mIdleLock; diff --git a/src/objc/imap/MCOIMAPFolderInfo.h b/src/objc/imap/MCOIMAPFolderInfo.h index cbeb64f2..2c51b7bb 100644 --- a/src/objc/imap/MCOIMAPFolderInfo.h +++ b/src/objc/imap/MCOIMAPFolderInfo.h @@ -31,6 +31,9 @@ // number of messages. @property (nonatomic, assign) int messageCount; +// number of unseen messages. +@property (nonatomic, assign) int unseenCount; + @end #endif diff --git a/src/objc/imap/MCOIMAPFolderInfo.m b/src/objc/imap/MCOIMAPFolderInfo.m index f23336bf..3f90ed65 100644 --- a/src/objc/imap/MCOIMAPFolderInfo.m +++ b/src/objc/imap/MCOIMAPFolderInfo.m @@ -13,12 +13,14 @@ uint32_t _uidValidity; uint64_t _modSequenceValue; int _messageCount; + int _unseenCount; } @synthesize uidNext = _uidNext; @synthesize uidValidity = _uidValidity; @synthesize modSequenceValue = _modSequenceValue; @synthesize messageCount = _messageCount; +@synthesize unseenCount = _unseenCount; + (MCOIMAPFolderInfo *) info { |