aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Oshikawa <oshikawa@azione.co.jp>2015-05-16 16:43:49 +0900
committerGravatar Oshikawa <oshikawa@azione.co.jp>2015-05-16 16:43:49 +0900
commitb0b9c5269bcb881141ff6f9d192ba771cde485aa (patch)
tree7e8c7baca52a0d9ce8143f329231e4fdfb14836c /src
parent640d1945f279038c197e31419677ac64e4246453 (diff)
Added UID Search with message number expression and SearchKindNumber for IMAP
Diffstat (limited to 'src')
-rw-r--r--src/core/imap/MCIMAPSearchExpression.cpp7
-rw-r--r--src/core/imap/MCIMAPSearchExpression.h1
-rwxr-xr-xsrc/core/imap/MCIMAPSession.cpp4
-rw-r--r--src/objc/imap/MCOIMAPSearchExpression.mm6
4 files changed, 18 insertions, 0 deletions
diff --git a/src/core/imap/MCIMAPSearchExpression.cpp b/src/core/imap/MCIMAPSearchExpression.cpp
index b3467e59..b49d83bf 100644
--- a/src/core/imap/MCIMAPSearchExpression.cpp
+++ b/src/core/imap/MCIMAPSearchExpression.cpp
@@ -170,6 +170,13 @@ IMAPSearchExpression * IMAPSearchExpression::searchUIDs(IndexSet * uids)
return (IMAPSearchExpression *) expr->autorelease();
}
+IMAPSearchExpression * IMAPSearchExpression::searchNumbers(IndexSet * numbers)
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindNumbers;
+ MC_SAFE_REPLACE_COPY(IndexSet, expr->mUids, numbers);
+ return (IMAPSearchExpression *) expr->autorelease();
+}
IMAPSearchExpression * IMAPSearchExpression::searchHeader(String * header, String * value)
{
diff --git a/src/core/imap/MCIMAPSearchExpression.h b/src/core/imap/MCIMAPSearchExpression.h
index 6f1f4ea0..9f20fe6c 100644
--- a/src/core/imap/MCIMAPSearchExpression.h
+++ b/src/core/imap/MCIMAPSearchExpression.h
@@ -36,6 +36,7 @@ namespace mailcore {
static IMAPSearchExpression * searchBody(String * value);
static IMAPSearchExpression * searchHeader(String * header, String * value);
static IMAPSearchExpression * searchUIDs(IndexSet * uids);
+ static IMAPSearchExpression * searchNumbers(IndexSet * numbers);
static IMAPSearchExpression * searchRead();
static IMAPSearchExpression * searchUnread();
static IMAPSearchExpression * searchFlagged();
diff --git a/src/core/imap/MCIMAPSession.cpp b/src/core/imap/MCIMAPSession.cpp
index d3f0895e..3abb5716 100755
--- a/src/core/imap/MCIMAPSession.cpp
+++ b/src/core/imap/MCIMAPSession.cpp
@@ -2795,6 +2795,10 @@ static struct mailimap_search_key * searchKeyFromSearchExpression(IMAPSearchExpr
{
return mailimap_search_key_new_uid(setFromIndexSet(expression->uids()));
}
+ case IMAPSearchKindNumbers:
+ {
+ return mailimap_search_key_new_set(setFromIndexSet(expression->uids()));
+ }
case IMAPSearchKindHeader:
{
return mailimap_search_key_new_header(strdup(expression->header()->UTF8Characters()), strdup(expression->value()->UTF8Characters()));
diff --git a/src/objc/imap/MCOIMAPSearchExpression.mm b/src/objc/imap/MCOIMAPSearchExpression.mm
index 57ae8455..57dd928e 100644
--- a/src/objc/imap/MCOIMAPSearchExpression.mm
+++ b/src/objc/imap/MCOIMAPSearchExpression.mm
@@ -105,6 +105,12 @@
{
return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchUIDs(MCO_FROM_OBJC(mailcore::IndexSet, uids)));
}
+
++ (MCOIMAPSearchExpression *) searchNumbers:(MCOIndexSet *) numbers
+{
+ return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchNumbers(MCO_FROM_OBJC(mailcore::IndexSet, numbers)));
+}
+
+ (MCOIMAPSearchExpression *) searchHeader:(NSString *)header value:(NSString *)value
{
return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchHeader([header mco_mcString], [value mco_mcString]));