aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar pfennema <paul@bryce.demon.nl>2013-12-01 00:44:32 +0100
committerGravatar pfennema <paul@bryce.demon.nl>2013-12-01 00:44:32 +0100
commit21c43667aefeb106a46720bf027501f78198b714 (patch)
treeb0ce99d18f7b9d3a56507b451ac20d4659ca3bcb /src
parent6ae124c2a3a9fbb55cce392d8966216c8c1f2692 (diff)
parent611b3763f6ce749c75ba02a3c0c3007daf48e68c (diff)
Merge branch 'Search-Size' of https://github.com/CodaFi/mailcore2
Check for if search expression for size works
Diffstat (limited to 'src')
-rw-r--r--src/core/abstract/MCMessageConstants.h2
-rw-r--r--src/core/imap/MCIMAPSearchExpression.cc21
-rw-r--r--src/core/imap/MCIMAPSearchExpression.h6
-rwxr-xr-xsrc/core/imap/MCIMAPSession.cc8
-rw-r--r--src/objc/imap/MCOIMAPSearchExpression.h20
-rw-r--r--src/objc/imap/MCOIMAPSearchExpression.mm10
6 files changed, 66 insertions, 1 deletions
diff --git a/src/core/abstract/MCMessageConstants.h b/src/core/abstract/MCMessageConstants.h
index aa252243..41b5ccb4 100644
--- a/src/core/abstract/MCMessageConstants.h
+++ b/src/core/abstract/MCMessageConstants.h
@@ -184,6 +184,8 @@ namespace mailcore {
IMAPSearchKindBeforeReceivedDate,
IMAPSearchKindOnReceivedDate,
IMAPSearchKindSinceReceivedDate,
+ IMAPSearchKindSizeLarger,
+ IMAPSearchKindSizeSmaller,
IMAPSearchKindGmailThreadID,
IMAPSearchKindOr,
IMAPSearchKindAnd,
diff --git a/src/core/imap/MCIMAPSearchExpression.cc b/src/core/imap/MCIMAPSearchExpression.cc
index 4e6b6e4e..0aa791d0 100644
--- a/src/core/imap/MCIMAPSearchExpression.cc
+++ b/src/core/imap/MCIMAPSearchExpression.cc
@@ -241,6 +241,22 @@ IMAPSearchExpression * IMAPSearchExpression::searchSinceReceivedDate(time_t date
return (IMAPSearchExpression *) expr->autorelease();
}
+IMAPSearchExpression * IMAPSearchExpression::searchSizeLarger(uint32_t size)
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindSizeLarger;
+ expr->mNumber = size;
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
+IMAPSearchExpression * IMAPSearchExpression::searchSizeSmaller(uint32_t size)
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindSizeSmaller;
+ expr->mNumber = size;
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
IMAPSearchExpression * IMAPSearchExpression::searchGmailThreadID(uint64_t number)
{
IMAPSearchExpression * expr = new IMAPSearchExpression();
@@ -287,6 +303,11 @@ uint64_t IMAPSearchExpression::longNumber()
return mLongNumber;
}
+uint32_t IMAPSearchExpression::number()
+{
+ return mNumber;
+}
+
time_t IMAPSearchExpression::date()
{
return mDate;
diff --git a/src/core/imap/MCIMAPSearchExpression.h b/src/core/imap/MCIMAPSearchExpression.h
index 13d934bc..6d313730 100644
--- a/src/core/imap/MCIMAPSearchExpression.h
+++ b/src/core/imap/MCIMAPSearchExpression.h
@@ -18,6 +18,7 @@ namespace mailcore {
virtual String * header();
virtual String * value();
virtual uint64_t longNumber();
+ virtual uint32_t number();
virtual time_t date();
virtual IMAPSearchExpression * leftExpression();
virtual IMAPSearchExpression * rightExpression();
@@ -44,7 +45,9 @@ namespace mailcore {
static IMAPSearchExpression * searchBeforeReceivedDate(time_t date);
static IMAPSearchExpression * searchOnReceivedDate(time_t date);
static IMAPSearchExpression * searchSinceReceivedDate(time_t date);
- static IMAPSearchExpression * searchGmailThreadID(uint64_t number);
+ static IMAPSearchExpression * searchSizeLarger(uint32_t number);
+ static IMAPSearchExpression * searchSizeSmaller(uint32_t size);
+ static IMAPSearchExpression * searchGmailThreadID(uint64_t size);
static IMAPSearchExpression * searchAnd(IMAPSearchExpression * left, IMAPSearchExpression * right);
static IMAPSearchExpression * searchOr(IMAPSearchExpression * left, IMAPSearchExpression * right);
@@ -58,6 +61,7 @@ namespace mailcore {
String * mHeader;
String * mValue;
uint64_t mLongNumber;
+ uint32_t mNumber;
time_t mDate;
IMAPSearchExpression * mLeftExpression;
IMAPSearchExpression * mRightExpression;
diff --git a/src/core/imap/MCIMAPSession.cc b/src/core/imap/MCIMAPSession.cc
index 26b7f1d3..009bdc9f 100755
--- a/src/core/imap/MCIMAPSession.cc
+++ b/src/core/imap/MCIMAPSession.cc
@@ -2739,6 +2739,14 @@ static struct mailimap_search_key * searchKeyFromSearchExpression(IMAPSearchExpr
NULL, NULL, NULL, NULL, NULL,
NULL, 0, NULL, NULL, NULL);
}
+ case IMAPSearchKindSizeLarger:
+ {
+ return mailimap_search_key_new_larger(expression->number());
+ }
+ case IMAPSearchKindSizeSmaller:
+ {
+ return mailimap_search_key_new_smaller(expression->number());
+ }
case IMAPSearchKindOr:
{
return mailimap_search_key_new_or(searchKeyFromSearchExpression(expression->leftExpression()), searchKeyFromSearchExpression(expression->rightExpression()));
diff --git a/src/objc/imap/MCOIMAPSearchExpression.h b/src/objc/imap/MCOIMAPSearchExpression.h
index 4916d6df..ea9b6812 100644
--- a/src/objc/imap/MCOIMAPSearchExpression.h
+++ b/src/objc/imap/MCOIMAPSearchExpression.h
@@ -222,6 +222,26 @@
+ (MCOIMAPSearchExpression *) searchSinceReceivedDate:(NSDate *)date;
/**
+ Creates a search expression that matches messages larger than a given size in bytes.
+
+ Example:
+
+ uint32_t minSize = 1024 * 10; // 10 KB
+ MCOIMAPSearchExpression * expr = [MCOIMAPSearchExpression searchSizeLargerThan:minSize]
+ **/
++ (MCOIMAPSearchExpression *) searchSizeLargerThan:(uint32_t)size;
+
+/**
+ Creates a search expression that matches messages smaller than a given size in bytes.
+
+ Example:
+
+ uint32_t maxSize = 1024 * 10; // 10 KB
+ MCOIMAPSearchExpression * expr = [MCOIMAPSearchExpression searchSizeSmallerThan:maxSize]
+ **/
++ (MCOIMAPSearchExpression *) searchSizeSmallerThan:(uint32_t)size;
+
+/**
Creates a search expression that matches emails with the given gmail thread id
Example:
diff --git a/src/objc/imap/MCOIMAPSearchExpression.mm b/src/objc/imap/MCOIMAPSearchExpression.mm
index 82286183..252e73b3 100644
--- a/src/objc/imap/MCOIMAPSearchExpression.mm
+++ b/src/objc/imap/MCOIMAPSearchExpression.mm
@@ -167,6 +167,16 @@
return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchSinceReceivedDate((time_t) [date timeIntervalSince1970]));
}
++ (MCOIMAPSearchExpression *) searchSizeLargerThan:(uint32_t)size
+{
+ return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchSizeLarger(size));
+}
+
++ (MCOIMAPSearchExpression *) searchSizeSmallerThan:(uint32_t)size
+{
+ return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchSizeSmaller(size));
+}
+
+ (MCOIMAPSearchExpression *) searchGmailThreadID:(uint64_t)number
{
return MCO_TO_OBJC(mailcore::IMAPSearchExpression::searchGmailThreadID(number));