From e2e59990da11eba54050001fff58b466a58ce740 Mon Sep 17 00:00:00 2001 From: pfennema Date: Wed, 4 Dec 2013 22:27:53 +0100 Subject: Separate searches for to, cc and bcc fields. Furthermore, search with uids now supported. --- src/core/imap/MCIMAPSearchExpression.cc | 54 +++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) (limited to 'src/core/imap/MCIMAPSearchExpression.cc') 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; -- cgit v1.2.3