aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--src/async/imap/MCIMAPFolderInfoOperation.cc9
-rw-r--r--src/async/imap/MCIMAPFolderInfoOperation.h4
-rw-r--r--src/core/imap/MCIMAPSession.cc13
-rw-r--r--src/core/imap/MCIMAPSession.h4
-rw-r--r--src/objc/imap/MCOIMAPFolderInfo.h3
-rw-r--r--src/objc/imap/MCOIMAPFolderInfo.m2
7 files changed, 38 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index fe570977..ef1ed6b8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
{