diff options
author | 2013-11-06 21:31:25 -0800 | |
---|---|---|
committer | 2013-11-06 21:31:25 -0800 | |
commit | a8d867d29c1c2b0be6cf2a6873d65ab2945d4125 (patch) | |
tree | 20bcd5aaf344e9e39a1f85223cf183fa4de5ca14 | |
parent | a4466bae1cb6d07c76e365dfa0423b23b73b75d5 (diff) | |
parent | 4d579b28287075c2c94b6fd54bbe492514c28aa3 (diff) |
Merge pull request #448 from Metric/searchexpressions
Added UID Search All Expression and SearchKindAll for IMAP
-rw-r--r-- | src/core/abstract/MCMessageConstants.h | 1 | ||||
-rw-r--r-- | src/core/imap/MCIMAPSearchExpression.cc | 9 | ||||
-rw-r--r-- | src/core/imap/MCIMAPSearchExpression.h | 1 | ||||
-rwxr-xr-x | src/core/imap/MCIMAPSession.cc | 6 | ||||
-rw-r--r-- | src/objc/abstract/MCOConstants.h | 2 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPSearchExpression.h | 10 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPSearchExpression.mm | 5 |
7 files changed, 34 insertions, 0 deletions
diff --git a/src/core/abstract/MCMessageConstants.h b/src/core/abstract/MCMessageConstants.h index 2044ba76..adb7276c 100644 --- a/src/core/abstract/MCMessageConstants.h +++ b/src/core/abstract/MCMessageConstants.h @@ -161,6 +161,7 @@ namespace mailcore { }; enum IMAPSearchKind { + IMAPSearchKindAll, IMAPSearchKindNone, IMAPSearchKindFrom, IMAPSearchKindRecipient, diff --git a/src/core/imap/MCIMAPSearchExpression.cc b/src/core/imap/MCIMAPSearchExpression.cc index 373b93aa..2157fdd2 100644 --- a/src/core/imap/MCIMAPSearchExpression.cc +++ b/src/core/imap/MCIMAPSearchExpression.cc @@ -40,6 +40,8 @@ String * IMAPSearchExpression::description() default: case IMAPSearchKindNone: return String::stringWithUTF8Format("<%s:%p None>", MCUTF8(className()), this); + case IMAPSearchKindAll: + return String::stringWithUTF8Format("<%s:%p ALL>", MCUTF8(className()), this); case IMAPSearchKindFrom: return String::stringWithUTF8Format("<%s:%p From %s>", MCUTF8(className()), this, MCUTF8(mValue->description())); @@ -85,6 +87,13 @@ IMAPSearchExpression * IMAPSearchExpression::searchRecipient(String * value) return (IMAPSearchExpression *) expr->autorelease(); } +IMAPSearchExpression * IMAPSearchExpression::searchAll() +{ + IMAPSearchExpression *expr = new IMAPSearchExpression(); + expr->mKind = IMAPSearchKindAll; + return (IMAPSearchExpression *) expr->autorelease(); +} + IMAPSearchExpression * IMAPSearchExpression::searchSubject(String * value) { IMAPSearchExpression * expr = new IMAPSearchExpression(); diff --git a/src/core/imap/MCIMAPSearchExpression.h b/src/core/imap/MCIMAPSearchExpression.h index 59028092..dcc46666 100644 --- a/src/core/imap/MCIMAPSearchExpression.h +++ b/src/core/imap/MCIMAPSearchExpression.h @@ -20,6 +20,7 @@ namespace mailcore { virtual IMAPSearchExpression * leftExpression(); virtual IMAPSearchExpression * rightExpression(); + static IMAPSearchExpression * searchAll(); static IMAPSearchExpression * searchFrom(String * value); static IMAPSearchExpression * searchRecipient(String * value); static IMAPSearchExpression * searchSubject(String * value); diff --git a/src/core/imap/MCIMAPSession.cc b/src/core/imap/MCIMAPSession.cc index 65cec4df..95662f3b 100755 --- a/src/core/imap/MCIMAPSession.cc +++ b/src/core/imap/MCIMAPSession.cc @@ -2533,6 +2533,9 @@ IndexSet * IMAPSession::search(String * folder, IMAPSearchKind kind, String * se expr = NULL; switch (kind) { + case IMAPSearchKindAll: + expr = IMAPSearchExpression::searchAll(); + break; case IMAPSearchKindFrom: expr = IMAPSearchExpression::searchFrom(searchString); break; @@ -2555,6 +2558,9 @@ IndexSet * IMAPSession::search(String * folder, IMAPSearchKind kind, String * se static struct mailimap_search_key * searchKeyFromSearchExpression(IMAPSearchExpression * expression) { switch (expression->kind()) { + case IMAPSearchKindAll: { + return mailimap_search_key_new_all(); + } case IMAPSearchKindFrom: { return mailimap_search_key_new_from(strdup(expression->value()->UTF8Characters())); diff --git a/src/objc/abstract/MCOConstants.h b/src/objc/abstract/MCOConstants.h index 0c0f701b..c66b2ee7 100644 --- a/src/objc/abstract/MCOConstants.h +++ b/src/objc/abstract/MCOConstants.h @@ -156,6 +156,8 @@ typedef enum { /** It's the search type.*/ typedef enum { + /** Search All */ + MCOIMAPSearchKindAll, /** No search.*/ MCOIMAPSearchKindNone, /** Match sender.*/ diff --git a/src/objc/imap/MCOIMAPSearchExpression.h b/src/objc/imap/MCOIMAPSearchExpression.h index 17a7656a..0983f685 100644 --- a/src/objc/imap/MCOIMAPSearchExpression.h +++ b/src/objc/imap/MCOIMAPSearchExpression.h @@ -16,6 +16,16 @@ #import <MailCore/MCOConstants.h> @interface MCOIMAPSearchExpression : NSObject + +/** + Creates a search expression that returns all UIDS for the mailbox + + Example: + + MCOIMAPSearchExpression * expr = [MCOIMAPSearchExpression searchAll] +*/ ++ (MCOIMAPSearchExpression *) searchAll; + /** Creates a search expression that matches the sender of an email. diff --git a/src/objc/imap/MCOIMAPSearchExpression.mm b/src/objc/imap/MCOIMAPSearchExpression.mm index f1bc3046..b565acba 100644 --- a/src/objc/imap/MCOIMAPSearchExpression.mm +++ b/src/objc/imap/MCOIMAPSearchExpression.mm @@ -57,6 +57,11 @@ [super dealloc]; } ++ (MCOIMAPSearchExpression *) searchAll +{ + return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchAll()); +} + + (MCOIMAPSearchExpression *) searchFrom:(NSString *)value { return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchFrom([value mco_mcString])); |