aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/imap/MCIMAPSearchExpression.cc
diff options
context:
space:
mode:
authorGravatar pfennema <paul@bryce.demon.nl>2013-12-04 22:27:53 +0100
committerGravatar pfennema <paul@bryce.demon.nl>2013-12-04 22:27:53 +0100
commite2e59990da11eba54050001fff58b466a58ce740 (patch)
treeab0dbcc156ca4e7602e9e9692c4a8d721e39fcbe /src/core/imap/MCIMAPSearchExpression.cc
parentbaef8a77d30a9844eb63886624a1e04761d88a4a (diff)
Separate searches for to, cc and bcc fields.
Furthermore, search with uids now supported.
Diffstat (limited to 'src/core/imap/MCIMAPSearchExpression.cc')
-rw-r--r--src/core/imap/MCIMAPSearchExpression.cc54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/core/imap/MCIMAPSearchExpression.cc b/src/core/imap/MCIMAPSearchExpression.cc
index f7ac2a0f..436c7977 100644
--- a/src/core/imap/MCIMAPSearchExpression.cc
+++ b/src/core/imap/MCIMAPSearchExpression.cc
@@ -8,6 +8,7 @@ void IMAPSearchExpression::init()
mHeader = NULL;
mValue = NULL;
mLongNumber = 0;
+ mUids = NULL;
mLeftExpression = NULL;
mRightExpression = NULL;
}
@@ -24,6 +25,8 @@ IMAPSearchExpression::IMAPSearchExpression(IMAPSearchExpression * other)
mLongNumber = other->mLongNumber;
MC_SAFE_REPLACE_COPY(String, mHeader, other->mHeader);
MC_SAFE_REPLACE_COPY(String, mValue, other->mValue);
+ MC_SAFE_REPLACE_COPY(IndexSet, mUids, other->mUids);
+
MC_SAFE_REPLACE_COPY(IMAPSearchExpression, mLeftExpression, other->mLeftExpression);
MC_SAFE_REPLACE_COPY(IMAPSearchExpression, mRightExpression, other->mRightExpression);
}
@@ -32,6 +35,7 @@ IMAPSearchExpression::~IMAPSearchExpression()
{
MC_SAFE_RELEASE(mHeader);
MC_SAFE_RELEASE(mValue);
+ MC_SAFE_RELEASE(mUids);
MC_SAFE_RELEASE(mLeftExpression);
MC_SAFE_RELEASE(mRightExpression);
}
@@ -47,12 +51,24 @@ String * IMAPSearchExpression::description()
case IMAPSearchKindFrom:
return String::stringWithUTF8Format("<%s:%p From %s>", MCUTF8(className()), this,
MCUTF8(mValue->description()));
+ case IMAPSearchKindTo:
+ return String::stringWithUTF8Format("<%s:%p To %s>", MCUTF8(className()), this,
+ MCUTF8(mValue->description()));
+ case IMAPSearchKindCC:
+ return String::stringWithUTF8Format("<%s:%p CC %s>", MCUTF8(className()), this,
+ MCUTF8(mValue->description()));
+ case IMAPSearchKindBCC:
+ return String::stringWithUTF8Format("<%s:%p BCC %s>", MCUTF8(className()), this,
+ MCUTF8(mValue->description()));
case IMAPSearchKindRecipient:
return String::stringWithUTF8Format("<%s:%p Recipient %s>", MCUTF8(className()), this,
MCUTF8(mValue->description()));
case IMAPSearchKindSubject:
return String::stringWithUTF8Format("<%s:%p Subject %s>", MCUTF8(className()), this,
MCUTF8(mValue->description()));
+ case IMAPSearchKindUids:
+ return String::stringWithUTF8Format("<%s:%p Uids %s>", MCUTF8(className()), this,
+ MCUTF8(mUids->description()));
case IMAPSearchKindContent:
return String::stringWithUTF8Format("<%s:%p Content %s>", MCUTF8(className()), this,
MCUTF8(mValue->description()));
@@ -84,6 +100,30 @@ IMAPSearchExpression * IMAPSearchExpression::searchFrom(String * value)
return (IMAPSearchExpression *) expr->autorelease();
}
+IMAPSearchExpression * IMAPSearchExpression::searchTo(String * value)
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindTo;
+ MC_SAFE_REPLACE_COPY(String, expr->mValue, value);
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
+IMAPSearchExpression * IMAPSearchExpression::searchCC(String * value)
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindCC;
+ MC_SAFE_REPLACE_COPY(String, expr->mValue, value);
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
+IMAPSearchExpression * IMAPSearchExpression::searchBCC(String * value)
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindBCC;
+ MC_SAFE_REPLACE_COPY(String, expr->mValue, value);
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
IMAPSearchExpression * IMAPSearchExpression::searchRecipient(String * value)
{
IMAPSearchExpression * expr = new IMAPSearchExpression();
@@ -115,6 +155,15 @@ IMAPSearchExpression * IMAPSearchExpression::searchContent(String * value)
return (IMAPSearchExpression *) expr->autorelease();
}
+IMAPSearchExpression * IMAPSearchExpression::searchUids(IndexSet * uids)
+{
+ IMAPSearchExpression * expr = new IMAPSearchExpression();
+ expr->mKind = IMAPSearchKindUids;
+ MC_SAFE_REPLACE_COPY(IndexSet,expr->mUids, uids);
+ return (IMAPSearchExpression *) expr->autorelease();
+}
+
+
IMAPSearchExpression * IMAPSearchExpression::searchHeader(String * header, String * value)
{
IMAPSearchExpression * expr = new IMAPSearchExpression();
@@ -308,6 +357,11 @@ time_t IMAPSearchExpression::date()
return mDate;
}
+IndexSet * IMAPSearchExpression::uids()
+{
+ return mUids;
+}
+
IMAPSearchExpression * IMAPSearchExpression::leftExpression()
{
return mLeftExpression;