diff options
author | pfennema <paul@bryce.demon.nl> | 2013-12-04 22:27:53 +0100 |
---|---|---|
committer | pfennema <paul@bryce.demon.nl> | 2013-12-04 22:27:53 +0100 |
commit | e2e59990da11eba54050001fff58b466a58ce740 (patch) | |
tree | ab0dbcc156ca4e7602e9e9692c4a8d721e39fcbe /src/core/imap/MCIMAPSearchExpression.cc | |
parent | baef8a77d30a9844eb63886624a1e04761d88a4a (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.cc | 54 |
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; |