diff options
Diffstat (limited to 'src/async/imap/MCIMAPStoreFlagsOperation.cpp')
-rw-r--r-- | src/async/imap/MCIMAPStoreFlagsOperation.cpp | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/src/async/imap/MCIMAPStoreFlagsOperation.cpp b/src/async/imap/MCIMAPStoreFlagsOperation.cpp new file mode 100644 index 00000000..a049333e --- /dev/null +++ b/src/async/imap/MCIMAPStoreFlagsOperation.cpp @@ -0,0 +1,92 @@ +// +// MCIMAPStoreFlagsOperation.cc +// mailcore2 +// +// Created by DINH Viêt Hoà on 1/12/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#include "MCIMAPStoreFlagsOperation.h" + +#include "MCIMAPSession.h" +#include "MCIMAPAsyncConnection.h" + +using namespace mailcore; + +IMAPStoreFlagsOperation::IMAPStoreFlagsOperation() +{ + mUids = NULL; + mNumbers = NULL; + mKind = IMAPStoreFlagsRequestKindAdd; + mFlags = MessageFlagNone; + mCustomFlags = NULL; +} + +IMAPStoreFlagsOperation::~IMAPStoreFlagsOperation() +{ + MC_SAFE_RELEASE(mNumbers); + MC_SAFE_RELEASE(mUids); + MC_SAFE_RELEASE(mCustomFlags); +} + +void IMAPStoreFlagsOperation::setUids(IndexSet * uids) +{ + MC_SAFE_REPLACE_RETAIN(IndexSet, mUids, uids); +} + +IndexSet * IMAPStoreFlagsOperation::uids() +{ + return mUids; +} + +void IMAPStoreFlagsOperation::setNumbers(IndexSet * numbers) +{ + MC_SAFE_REPLACE_RETAIN(IndexSet, mNumbers, numbers); +} + +IndexSet * IMAPStoreFlagsOperation::numbers() +{ + return mNumbers; +} + +void IMAPStoreFlagsOperation::setKind(IMAPStoreFlagsRequestKind kind) +{ + mKind = kind; +} + +IMAPStoreFlagsRequestKind IMAPStoreFlagsOperation::kind() +{ + return mKind; +} + +void IMAPStoreFlagsOperation::setFlags(MessageFlag flags) +{ + mFlags = flags; +} + +MessageFlag IMAPStoreFlagsOperation::flags() +{ + return mFlags; +} + +void IMAPStoreFlagsOperation::setCustomFlags(Array * customFlags) +{ + MC_SAFE_REPLACE_RETAIN(Array, mCustomFlags, customFlags); +} + +Array * IMAPStoreFlagsOperation::customFlags() +{ + return mCustomFlags; +} + +void IMAPStoreFlagsOperation::main() +{ + ErrorCode error; + if (mUids != NULL) { + session()->session()->storeFlagsAndCustomFlagsByUID(folder(), mUids, mKind, mFlags, mCustomFlags, &error); + } + else { + session()->session()->storeFlagsAndCustomFlagsByNumber(folder(), mNumbers, mKind, mFlags, mCustomFlags, &error); + } + setError(error); +} |