aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar CodaFi <devteam.codafi@gmail.com>2013-11-21 17:00:35 -0700
committerGravatar CodaFi <devteam.codafi@gmail.com>2013-11-21 17:00:35 -0700
commitce98cb1a45fbb71606b356a33c4e1865e1000369 (patch)
tree65870a5d15290316ee8ece29796a1bee8e5cd370
parentf48c98af691d3001f1ad272c4d589ec7199cceee (diff)
Add new search expressions
-rw-r--r--src/core/abstract/MCMessageConstants.h1
-rw-r--r--src/core/imap/MCIMAPSearchExpression.cc38
-rw-r--r--src/core/imap/MCIMAPSearchExpression.h71
3 files changed, 77 insertions, 33 deletions
diff --git a/src/core/abstract/MCMessageConstants.h b/src/core/abstract/MCMessageConstants.h
index baac7061..c85d7c5a 100644
--- a/src/core/abstract/MCMessageConstants.h
+++ b/src/core/abstract/MCMessageConstants.h
@@ -169,6 +169,7 @@ namespace mailcore {
IMAPSearchKindContent,
IMAPSearchKindHeader,
IMAPSearchKindGmailThreadID,
+ IMAPSearchKindUnread,
IMAPSearchKindOr,
IMAPSearchKindAnd,
};
diff --git a/src/core/imap/MCIMAPSearchExpression.cc b/src/core/imap/MCIMAPSearchExpression.cc
index 86111f2e..07e67ea1 100644
--- a/src/core/imap/MCIMAPSearchExpression.cc
+++ b/src/core/imap/MCIMAPSearchExpression.cc
@@ -124,6 +124,44 @@ IMAPSearchExpression * IMAPSearchExpression::searchHeader(String * header, Strin
return (IMAPSearchExpression *) expr->autorelease();
}
+IMAPSearchExpression * IMAPSearchExpression::searchRead()
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindRead;
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
+IMAPSearchExpression * IMAPSearchExpression::searchUnread()
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindUnread;
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
+IMAPSearchExpression * IMAPSearchExpression::searchBeforeDate(time_t date)
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindBeforeDate;
+ expr->mLongNumber = date;
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
+IMAPSearchExpression * IMAPSearchExpression::searchOnDate(time_t date)
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindOnDate;
+ expr->mLongNumber = date;
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
+IMAPSearchExpression * IMAPSearchExpression::searchSinceDate(time_t date)
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindSinceDate;
+ expr->mLongNumber = date;
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
IMAPSearchExpression * IMAPSearchExpression::searchGmailThreadID(uint64_t number)
{
IMAPSearchExpression * expr = new IMAPSearchExpression();
diff --git a/src/core/imap/MCIMAPSearchExpression.h b/src/core/imap/MCIMAPSearchExpression.h
index 352336d3..edb5f0fc 100644
--- a/src/core/imap/MCIMAPSearchExpression.h
+++ b/src/core/imap/MCIMAPSearchExpression.h
@@ -9,43 +9,48 @@
namespace mailcore {
- class IMAPSearchExpression : public Object {
- public:
- IMAPSearchExpression();
- virtual ~IMAPSearchExpression();
-
- virtual IMAPSearchKind kind();
- virtual String * header();
- virtual String * value();
- virtual uint64_t longNumber();
- virtual IMAPSearchExpression * leftExpression();
- virtual IMAPSearchExpression * rightExpression();
-
- static IMAPSearchExpression * searchAll();
- static IMAPSearchExpression * searchFrom(String * value);
- static IMAPSearchExpression * searchRecipient(String * value);
- static IMAPSearchExpression * searchSubject(String * value);
- static IMAPSearchExpression * searchContent(String * value);
- static IMAPSearchExpression * searchHeader(String * header, String * value);
- static IMAPSearchExpression * searchGmailThreadID(uint64_t number);
- static IMAPSearchExpression * searchAnd(IMAPSearchExpression * left, IMAPSearchExpression * right);
- static IMAPSearchExpression * searchOr(IMAPSearchExpression * left, IMAPSearchExpression * right);
+ class IMAPSearchExpression : public Object {
+ public:
+ IMAPSearchExpression();
+ virtual ~IMAPSearchExpression();
+
+ virtual IMAPSearchKind kind();
+ virtual String * header();
+ virtual String * value();
+ virtual uint64_t longNumber();
+ virtual IMAPSearchExpression * leftExpression();
+ virtual IMAPSearchExpression * rightExpression();
+
+ static IMAPSearchExpression * searchAll();
+ static IMAPSearchExpression * searchFrom(String * value);
+ static IMAPSearchExpression * searchRecipient(String * value);
+ static IMAPSearchExpression * searchSubject(String * value);
+ static IMAPSearchExpression * searchContent(String * value);
+ static IMAPSearchExpression * searchHeader(String * header, String * value);
+ static IMAPSearchExpression * searchRead();
+ static IMAPSearchExpression * searchUnread();
+ static IMAPSearchExpression * searchBeforeDate(time_t date);
+ static IMAPSearchExpression * searchOnDate(time_t date);
+ static IMAPSearchExpression * searchSinceDate(time_t date);
+ static IMAPSearchExpression * searchGmailThreadID(uint64_t number);
+ static IMAPSearchExpression * searchAnd(IMAPSearchExpression * left, IMAPSearchExpression * right);
+ static IMAPSearchExpression * searchOr(IMAPSearchExpression * left, IMAPSearchExpression * right);
public: // subclass behavior
- IMAPSearchExpression(IMAPSearchExpression * other);
- virtual String * description();
- virtual Object * copy();
+ IMAPSearchExpression(IMAPSearchExpression * other);
+ virtual String * description();
+ virtual Object * copy();
- private:
- IMAPSearchKind mKind;
- String * mHeader;
- String * mValue;
+ private:
+ IMAPSearchKind mKind;
+ String * mHeader;
+ String * mValue;
uint64_t mLongNumber;
- IMAPSearchExpression * mLeftExpression;
- IMAPSearchExpression * mRightExpression;
- void init();
- };
-
+ IMAPSearchExpression * mLeftExpression;
+ IMAPSearchExpression * mRightExpression;
+ void init();
+ };
+
}
#endif