diff options
Diffstat (limited to 'src/async/imap/MCIMAPAppendMessageOperation.cpp')
-rw-r--r-- | src/async/imap/MCIMAPAppendMessageOperation.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/async/imap/MCIMAPAppendMessageOperation.cpp b/src/async/imap/MCIMAPAppendMessageOperation.cpp index 23eaaea0..69ed5c5f 100644 --- a/src/async/imap/MCIMAPAppendMessageOperation.cpp +++ b/src/async/imap/MCIMAPAppendMessageOperation.cpp @@ -16,6 +16,7 @@ using namespace mailcore; IMAPAppendMessageOperation::IMAPAppendMessageOperation() { mMessageData = NULL; + mMessageFilepath = NULL; mFlags = MessageFlagNone; mCustomFlags = NULL; mDate = (time_t) -1; @@ -25,6 +26,7 @@ IMAPAppendMessageOperation::IMAPAppendMessageOperation() IMAPAppendMessageOperation::~IMAPAppendMessageOperation() { MC_SAFE_RELEASE(mMessageData); + MC_SAFE_RELEASE(mMessageFilepath); MC_SAFE_RELEASE(mCustomFlags); } @@ -38,6 +40,16 @@ Data * IMAPAppendMessageOperation::messageData() return mMessageData; } +void IMAPAppendMessageOperation::setMessageFilepath(String * path) +{ + MC_SAFE_REPLACE_RETAIN(String, mMessageFilepath, path); +} + +String * IMAPAppendMessageOperation::messageFilepath() +{ + return mMessageFilepath; +} + void IMAPAppendMessageOperation::setFlags(MessageFlag flags) { mFlags = flags; @@ -76,7 +88,12 @@ uint32_t IMAPAppendMessageOperation::createdUID() void IMAPAppendMessageOperation::main() { ErrorCode error; - session()->session()->appendMessageWithCustomFlagsAndDate(folder(), mMessageData, mFlags, mCustomFlags, mDate, this, &mCreatedUID, &error); + if (mMessageFilepath != NULL) { + session()->session()->appendMessageWithCustomFlagsAndDate(folder(), mMessageFilepath, mFlags, mCustomFlags, mDate, this, &mCreatedUID, &error); + } + else { + session()->session()->appendMessageWithCustomFlagsAndDate(folder(), mMessageData, mFlags, mCustomFlags, mDate, this, &mCreatedUID, &error); + } setError(error); } |