aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/async/imap/MCIMAPAppendMessageOperation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/async/imap/MCIMAPAppendMessageOperation.cpp')
-rw-r--r--src/async/imap/MCIMAPAppendMessageOperation.cpp19
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);
}