diff options
author | CodaFi <devteam.codafi@gmail.com> | 2013-11-30 09:26:23 -0700 |
---|---|---|
committer | CodaFi <devteam.codafi@gmail.com> | 2013-11-30 09:26:23 -0700 |
commit | 611b3763f6ce749c75ba02a3c0c3007daf48e68c (patch) | |
tree | da4a5166ed5f8c2270f9e2311922fa085e3a9acf | |
parent | b069569fdf1d86039d5c476052f177dfe4b3699e (diff) |
Implement size search
-rw-r--r-- | src/core/abstract/MCMessageConstants.h | 2 | ||||
-rw-r--r-- | src/core/imap/MCIMAPSearchExpression.cc | 21 | ||||
-rw-r--r-- | src/core/imap/MCIMAPSearchExpression.h | 6 | ||||
-rwxr-xr-x | src/core/imap/MCIMAPSession.cc | 8 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPSearchExpression.h | 20 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPSearchExpression.mm | 10 |
6 files changed, 66 insertions, 1 deletions
diff --git a/src/core/abstract/MCMessageConstants.h b/src/core/abstract/MCMessageConstants.h index aa252243..41b5ccb4 100644 --- a/src/core/abstract/MCMessageConstants.h +++ b/src/core/abstract/MCMessageConstants.h @@ -184,6 +184,8 @@ namespace mailcore { IMAPSearchKindBeforeReceivedDate, IMAPSearchKindOnReceivedDate, IMAPSearchKindSinceReceivedDate, + IMAPSearchKindSizeLarger, + IMAPSearchKindSizeSmaller, IMAPSearchKindGmailThreadID, IMAPSearchKindOr, IMAPSearchKindAnd, diff --git a/src/core/imap/MCIMAPSearchExpression.cc b/src/core/imap/MCIMAPSearchExpression.cc index 4e6b6e4e..0aa791d0 100644 --- a/src/core/imap/MCIMAPSearchExpression.cc +++ b/src/core/imap/MCIMAPSearchExpression.cc @@ -241,6 +241,22 @@ IMAPSearchExpression * IMAPSearchExpression::searchSinceReceivedDate(time_t date return (IMAPSearchExpression *) expr->autorelease(); } +IMAPSearchExpression * IMAPSearchExpression::searchSizeLarger(uint32_t size) +{ + IMAPSearchExpression * expr = new IMAPSearchExpression(); + expr->mKind = IMAPSearchKindSizeLarger; + expr->mNumber = size; + return (IMAPSearchExpression *) expr->autorelease(); +} + +IMAPSearchExpression * IMAPSearchExpression::searchSizeSmaller(uint32_t size) +{ + IMAPSearchExpression * expr = new IMAPSearchExpression(); + expr->mKind = IMAPSearchKindSizeSmaller; + expr->mNumber = size; + return (IMAPSearchExpression *) expr->autorelease(); +} + IMAPSearchExpression * IMAPSearchExpression::searchGmailThreadID(uint64_t number) { IMAPSearchExpression * expr = new IMAPSearchExpression(); @@ -287,6 +303,11 @@ uint64_t IMAPSearchExpression::longNumber() return mLongNumber; } +uint32_t IMAPSearchExpression::number() +{ + return mNumber; +} + time_t IMAPSearchExpression::date() { return mDate; diff --git a/src/core/imap/MCIMAPSearchExpression.h b/src/core/imap/MCIMAPSearchExpression.h index 13d934bc..6d313730 100644 --- a/src/core/imap/MCIMAPSearchExpression.h +++ b/src/core/imap/MCIMAPSearchExpression.h @@ -18,6 +18,7 @@ namespace mailcore { virtual String * header(); virtual String * value(); virtual uint64_t longNumber(); + virtual uint32_t number(); virtual time_t date(); virtual IMAPSearchExpression * leftExpression(); virtual IMAPSearchExpression * rightExpression(); @@ -44,7 +45,9 @@ namespace mailcore { static IMAPSearchExpression * searchBeforeReceivedDate(time_t date); static IMAPSearchExpression * searchOnReceivedDate(time_t date); static IMAPSearchExpression * searchSinceReceivedDate(time_t date); - static IMAPSearchExpression * searchGmailThreadID(uint64_t number); + static IMAPSearchExpression * searchSizeLarger(uint32_t number); + static IMAPSearchExpression * searchSizeSmaller(uint32_t size); + static IMAPSearchExpression * searchGmailThreadID(uint64_t size); static IMAPSearchExpression * searchAnd(IMAPSearchExpression * left, IMAPSearchExpression * right); static IMAPSearchExpression * searchOr(IMAPSearchExpression * left, IMAPSearchExpression * right); @@ -58,6 +61,7 @@ namespace mailcore { String * mHeader; String * mValue; uint64_t mLongNumber; + uint32_t mNumber; time_t mDate; IMAPSearchExpression * mLeftExpression; IMAPSearchExpression * mRightExpression; diff --git a/src/core/imap/MCIMAPSession.cc b/src/core/imap/MCIMAPSession.cc index 0a115e78..5cce4f39 100755 --- a/src/core/imap/MCIMAPSession.cc +++ b/src/core/imap/MCIMAPSession.cc @@ -2730,6 +2730,14 @@ static struct mailimap_search_key * searchKeyFromSearchExpression(IMAPSearchExpr NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL); } + case IMAPSearchKindSizeLarger: + { + return mailimap_search_key_new_larger(expression->number()); + } + case IMAPSearchKindSizeSmaller: + { + return mailimap_search_key_new_smaller(expression->number()); + } case IMAPSearchKindOr: { return mailimap_search_key_new_or(searchKeyFromSearchExpression(expression->leftExpression()), searchKeyFromSearchExpression(expression->rightExpression())); diff --git a/src/objc/imap/MCOIMAPSearchExpression.h b/src/objc/imap/MCOIMAPSearchExpression.h index 4916d6df..ea9b6812 100644 --- a/src/objc/imap/MCOIMAPSearchExpression.h +++ b/src/objc/imap/MCOIMAPSearchExpression.h @@ -222,6 +222,26 @@ + (MCOIMAPSearchExpression *) searchSinceReceivedDate:(NSDate *)date; /** + Creates a search expression that matches messages larger than a given size in bytes. + + Example: + + uint32_t minSize = 1024 * 10; // 10 KB + MCOIMAPSearchExpression * expr = [MCOIMAPSearchExpression searchSizeLargerThan:minSize] + **/ ++ (MCOIMAPSearchExpression *) searchSizeLargerThan:(uint32_t)size; + +/** + Creates a search expression that matches messages smaller than a given size in bytes. + + Example: + + uint32_t maxSize = 1024 * 10; // 10 KB + MCOIMAPSearchExpression * expr = [MCOIMAPSearchExpression searchSizeSmallerThan:maxSize] + **/ ++ (MCOIMAPSearchExpression *) searchSizeSmallerThan:(uint32_t)size; + +/** Creates a search expression that matches emails with the given gmail thread id Example: diff --git a/src/objc/imap/MCOIMAPSearchExpression.mm b/src/objc/imap/MCOIMAPSearchExpression.mm index 82286183..252e73b3 100644 --- a/src/objc/imap/MCOIMAPSearchExpression.mm +++ b/src/objc/imap/MCOIMAPSearchExpression.mm @@ -167,6 +167,16 @@ return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchSinceReceivedDate((time_t) [date timeIntervalSince1970])); } ++ (MCOIMAPSearchExpression *) searchSizeLargerThan:(uint32_t)size +{ + return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchSizeLarger(size)); +} + ++ (MCOIMAPSearchExpression *) searchSizeSmallerThan:(uint32_t)size +{ + return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchSizeSmaller(size)); +} + + (MCOIMAPSearchExpression *) searchGmailThreadID:(uint64_t)number { return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchGmailThreadID(number)); |