diff options
author | Hoà V. DINH <dinh.viet.hoa@gmail.com> | 2014-03-10 21:58:47 -0700 |
---|---|---|
committer | Hoà V. DINH <dinh.viet.hoa@gmail.com> | 2014-03-10 21:58:47 -0700 |
commit | 551a2a8dc7cdb5f0bf97505693ab176009c73f93 (patch) | |
tree | c6354b7db3cc589fa44a93b11c7643fa1d55dcea | |
parent | ee8548c6d503c300cf707ddbe7e1a6ac52a931a7 (diff) | |
parent | 6dd20cf12e8b6fc03b0790c96b7279276ffc849a (diff) |
Merge pull request #629 from bvanosten/master
Implement Gmail Message ID search
-rw-r--r-- | src/core/abstract/MCMessageConstants.h | 1 | ||||
-rw-r--r-- | src/core/imap/MCIMAPSearchExpression.cc | 8 | ||||
-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 | 40 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPSearchExpression.h | 10 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPSearchExpression.mm | 5 |
7 files changed, 70 insertions, 1 deletions
diff --git a/src/core/abstract/MCMessageConstants.h b/src/core/abstract/MCMessageConstants.h index b7bebe3a..20be3e31 100644 --- a/src/core/abstract/MCMessageConstants.h +++ b/src/core/abstract/MCMessageConstants.h @@ -195,6 +195,7 @@ namespace mailcore { IMAPSearchKindSizeLarger, IMAPSearchKindSizeSmaller, IMAPSearchKindGmailThreadID, + IMAPSearchKindGmailMessageID, IMAPSearchKindGmailRaw, IMAPSearchKindOr, IMAPSearchKindAnd, diff --git a/src/core/imap/MCIMAPSearchExpression.cc b/src/core/imap/MCIMAPSearchExpression.cc index 2c6657af..cd3ccc2d 100644 --- a/src/core/imap/MCIMAPSearchExpression.cc +++ b/src/core/imap/MCIMAPSearchExpression.cc @@ -313,6 +313,14 @@ IMAPSearchExpression * IMAPSearchExpression::searchGmailThreadID(uint64_t number return (IMAPSearchExpression *) expr->autorelease(); } +IMAPSearchExpression * IMAPSearchExpression::searchGmailMessageID(uint64_t number) +{ + IMAPSearchExpression * expr = new IMAPSearchExpression(); + expr->mKind = IMAPSearchKindGmailMessageID; + expr->mLongNumber = number; + return (IMAPSearchExpression *) expr->autorelease(); +} + IMAPSearchExpression * IMAPSearchExpression::searchGmailRaw(String * searchExpr) { IMAPSearchExpression * expr = new IMAPSearchExpression(); diff --git a/src/core/imap/MCIMAPSearchExpression.h b/src/core/imap/MCIMAPSearchExpression.h index 928b9d41..a0647216 100644 --- a/src/core/imap/MCIMAPSearchExpression.h +++ b/src/core/imap/MCIMAPSearchExpression.h @@ -54,6 +54,7 @@ namespace mailcore { static IMAPSearchExpression * searchSizeLarger(uint32_t size); static IMAPSearchExpression * searchSizeSmaller(uint32_t size); static IMAPSearchExpression * searchGmailThreadID(uint64_t number); + static IMAPSearchExpression * searchGmailMessageID(uint64_t number); static IMAPSearchExpression * searchGmailRaw(String * expr); static IMAPSearchExpression * searchAnd(IMAPSearchExpression * left, IMAPSearchExpression * right); static IMAPSearchExpression * searchOr(IMAPSearchExpression * left, IMAPSearchExpression * right); diff --git a/src/core/imap/MCIMAPSession.cc b/src/core/imap/MCIMAPSession.cc index 3108ac3e..9cdf0ce9 100755 --- a/src/core/imap/MCIMAPSession.cc +++ b/src/core/imap/MCIMAPSession.cc @@ -2791,7 +2791,11 @@ static struct mailimap_search_key * searchKeyFromSearchExpression(IMAPSearchExpr case IMAPSearchKindGmailThreadID: { return mailimap_search_key_new_xgmthrid(expression->longNumber()); - } + } + case IMAPSearchKindGmailMessageID: + { + return mailimap_search_key_new_xgmmsgid(expression->longNumber()); + } case IMAPSearchKindRead: { return mailimap_search_key_new(MAILIMAP_SEARCH_KEY_SEEN, diff --git a/src/objc/abstract/MCOConstants.h b/src/objc/abstract/MCOConstants.h index 28fa9e05..e5ab8184 100644 --- a/src/objc/abstract/MCOConstants.h +++ b/src/objc/abstract/MCOConstants.h @@ -184,8 +184,48 @@ typedef enum { MCOIMAPSearchKindUids, /** Match headers of the message.*/ MCOIMAPSearchKindHeader, + /** Match messages that are read.*/ + MCOIMAPSearchKindRead, + /** Match messages that are not read.*/ + MCOIMAPSearchKindUnread, + /** Match messages that are flagged.*/ + MCOIMAPSearchKindFlagged, + /** Match messages that are not flagged.*/ + MCOIMAPSearchKindUnflagged, + /** Match messages that are answered.*/ + MCOIMAPSearchKindAnswered, + /** Match messages that are not answered.*/ + MCOIMAPSearchKindUnanswered, + /** Match messages that are a drafts.*/ + MCOIMAPSearchKindDraft, + /** Match messages that are not drafts.*/ + MCOIMAPSearchKindUndraft, + /** Match messages that are deleted.*/ + MCOIMAPSearchKindDeleted, + /** Match messages that are spam.*/ + MCOIMAPSearchKindSpam, + /** Match messages before the given date.*/ + MCOIMAPSearchKindBeforeDate, + /** Match messages on the given date.*/ + MCOIMAPSearchKindOnDate, + /** Match messages after the given date.*/ + MCOIMAPSearchKindSinceDate, + /** Match messages before the given received date.*/ + MCOIMAPSearchKindBeforeReceivedDate, + /** Match messages on the given received date.*/ + MCOIMAPSearchKindOnReceivedDate, + /** Match messages after the given received date.*/ + MCOIMAPSearchKindSinceReceivedDate, + /** Match messages that are larger than the given size in bytes.*/ + MCOIMAPSearchKindSizeLarger, + /** Match messages that are smaller than the given size in bytes.*/ + MCOIMAPSearchKindSizeSmaller, /** Match X-GM-THRID.*/ MCOIMAPSearchGmailThreadID, + /** Match X-GM-MSGID.*/ + MCOIMAPSearchGmailMessageID, + /** Match X-GM-RAW.*/ + MCOIMAPSearchGmailRaw, /** Or expresssion.*/ MCOIMAPSearchKindOr, /** And expression.*/ diff --git a/src/objc/imap/MCOIMAPSearchExpression.h b/src/objc/imap/MCOIMAPSearchExpression.h index 3ff956b2..fbffb8f3 100644 --- a/src/objc/imap/MCOIMAPSearchExpression.h +++ b/src/objc/imap/MCOIMAPSearchExpression.h @@ -287,6 +287,16 @@ */ + (MCOIMAPSearchExpression *) searchGmailThreadID:(uint64_t)number; + +/** + Creates a search expression that matches emails with the given gmail message id + + Example: + + MCOIMAPSearchExpression * expr = [MCOIMAPSearchExpression searchGmailMessageID:aMessageID] + */ ++ (MCOIMAPSearchExpression *) searchGmailMessageID:(uint64_t)number; + /** Creates a search expression that gets emails that match a gmail raw search expression. diff --git a/src/objc/imap/MCOIMAPSearchExpression.mm b/src/objc/imap/MCOIMAPSearchExpression.mm index 020acdb8..f395596c 100644 --- a/src/objc/imap/MCOIMAPSearchExpression.mm +++ b/src/objc/imap/MCOIMAPSearchExpression.mm @@ -200,6 +200,11 @@ return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchGmailThreadID(number)); } ++ (MCOIMAPSearchExpression *) searchGmailMessageID:(uint64_t)number +{ + return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchGmailMessageID(number)); +} + + (MCOIMAPSearchExpression *) searchGmailRaw:(NSString *)expr { return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchGmailRaw([expr mco_mcString])); |