aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Hoà V. DINH <dinh.viet.hoa@gmail.com>2014-03-10 21:58:47 -0700
committerGravatar Hoà V. DINH <dinh.viet.hoa@gmail.com>2014-03-10 21:58:47 -0700
commit551a2a8dc7cdb5f0bf97505693ab176009c73f93 (patch)
treec6354b7db3cc589fa44a93b11c7643fa1d55dcea
parentee8548c6d503c300cf707ddbe7e1a6ac52a931a7 (diff)
parent6dd20cf12e8b6fc03b0790c96b7279276ffc849a (diff)
Merge pull request #629 from bvanosten/master
Implement Gmail Message ID search
-rw-r--r--src/core/abstract/MCMessageConstants.h1
-rw-r--r--src/core/imap/MCIMAPSearchExpression.cc8
-rw-r--r--src/core/imap/MCIMAPSearchExpression.h1
-rwxr-xr-xsrc/core/imap/MCIMAPSession.cc6
-rw-r--r--src/objc/abstract/MCOConstants.h40
-rw-r--r--src/objc/imap/MCOIMAPSearchExpression.h10
-rw-r--r--src/objc/imap/MCOIMAPSearchExpression.mm5
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]));