aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Hoà V. DINH <dinh.viet.hoa@gmail.com>2013-11-06 21:31:25 -0800
committerGravatar Hoà V. DINH <dinh.viet.hoa@gmail.com>2013-11-06 21:31:25 -0800
commita8d867d29c1c2b0be6cf2a6873d65ab2945d4125 (patch)
tree20bcd5aaf344e9e39a1f85223cf183fa4de5ca14
parenta4466bae1cb6d07c76e365dfa0423b23b73b75d5 (diff)
parent4d579b28287075c2c94b6fd54bbe492514c28aa3 (diff)
Merge pull request #448 from Metric/searchexpressions
Added UID Search All Expression and SearchKindAll for IMAP
-rw-r--r--src/core/abstract/MCMessageConstants.h1
-rw-r--r--src/core/imap/MCIMAPSearchExpression.cc9
-rw-r--r--src/core/imap/MCIMAPSearchExpression.h1
-rwxr-xr-xsrc/core/imap/MCIMAPSession.cc6
-rw-r--r--src/objc/abstract/MCOConstants.h2
-rw-r--r--src/objc/imap/MCOIMAPSearchExpression.h10
-rw-r--r--src/objc/imap/MCOIMAPSearchExpression.mm5
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]));