aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/async
diff options
context:
space:
mode:
Diffstat (limited to 'src/async')
-rwxr-xr-xsrc/async/imap/MCIMAPAsyncConnection.cc3
-rwxr-xr-xsrc/async/imap/MCIMAPAsyncConnection.h2
-rwxr-xr-xsrc/async/imap/MCIMAPAsyncSession.cc4
-rwxr-xr-xsrc/async/imap/MCIMAPAsyncSession.h2
-rw-r--r--src/async/imap/MCIMAPStoreFlagsOperation.cc14
-rw-r--r--src/async/imap/MCIMAPStoreFlagsOperation.h4
6 files changed, 23 insertions, 6 deletions
diff --git a/src/async/imap/MCIMAPAsyncConnection.cc b/src/async/imap/MCIMAPAsyncConnection.cc
index 5e3dc21b..aa94e3ee 100755
--- a/src/async/imap/MCIMAPAsyncConnection.cc
+++ b/src/async/imap/MCIMAPAsyncConnection.cc
@@ -420,7 +420,7 @@ IMAPFetchContentOperation * IMAPAsyncConnection::fetchMessageAttachmentByUIDOper
return op;
}
-IMAPOperation * IMAPAsyncConnection::storeFlagsOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags)
+IMAPOperation * IMAPAsyncConnection::storeFlagsOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags, Array * customFlags)
{
IMAPStoreFlagsOperation * op = new IMAPStoreFlagsOperation();
op->setSession(this);
@@ -428,6 +428,7 @@ IMAPOperation * IMAPAsyncConnection::storeFlagsOperation(String * folder, IndexS
op->setUids(uids);
op->setKind(kind);
op->setFlags(flags);
+ op->setCustomFlags(customFlags);
op->autorelease();
return op;
}
diff --git a/src/async/imap/MCIMAPAsyncConnection.h b/src/async/imap/MCIMAPAsyncConnection.h
index 1f4014da..e380c5e1 100755
--- a/src/async/imap/MCIMAPAsyncConnection.h
+++ b/src/async/imap/MCIMAPAsyncConnection.h
@@ -116,7 +116,7 @@ namespace mailcore {
virtual IMAPFetchContentOperation * fetchMessageAttachmentByUIDOperation(String * folder, uint32_t uid, String * partID,
Encoding encoding);
- virtual IMAPOperation * storeFlagsOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags);
+ virtual IMAPOperation * storeFlagsOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags, Array * customFlags);
virtual IMAPOperation * storeLabelsOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, Array * labels);
virtual IMAPSearchOperation * searchOperation(String * folder, IMAPSearchKind kind, String * searchString);
diff --git a/src/async/imap/MCIMAPAsyncSession.cc b/src/async/imap/MCIMAPAsyncSession.cc
index 8c3678e1..d6556309 100755
--- a/src/async/imap/MCIMAPAsyncSession.cc
+++ b/src/async/imap/MCIMAPAsyncSession.cc
@@ -418,10 +418,10 @@ IMAPFetchContentOperation * IMAPAsyncSession::fetchMessageAttachmentByUIDOperati
return session->fetchMessageAttachmentByUIDOperation(folder, uid, partID, encoding);
}
-IMAPOperation * IMAPAsyncSession::storeFlagsOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags)
+IMAPOperation * IMAPAsyncSession::storeFlagsOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags, Array * customFlags)
{
IMAPAsyncConnection * session = sessionForFolder(folder);
- return session->storeFlagsOperation(folder, uids, kind, flags);
+ return session->storeFlagsOperation(folder, uids, kind, flags, customFlags);
}
IMAPOperation * IMAPAsyncSession::storeLabelsOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, Array * labels)
diff --git a/src/async/imap/MCIMAPAsyncSession.h b/src/async/imap/MCIMAPAsyncSession.h
index 24fb6f91..38d14e0f 100755
--- a/src/async/imap/MCIMAPAsyncSession.h
+++ b/src/async/imap/MCIMAPAsyncSession.h
@@ -132,7 +132,7 @@ namespace mailcore {
virtual IMAPFetchContentOperation * fetchMessageAttachmentByUIDOperation(String * folder, uint32_t uid, String * partID,
Encoding encoding, bool urgent = false);
- virtual IMAPOperation * storeFlagsOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags);
+ virtual IMAPOperation * storeFlagsOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, MessageFlag flags, Array * customFlags);
virtual IMAPOperation * storeLabelsOperation(String * folder, IndexSet * uids, IMAPStoreFlagsRequestKind kind, Array * labels);
virtual IMAPSearchOperation * searchOperation(String * folder, IMAPSearchKind kind, String * searchString);
diff --git a/src/async/imap/MCIMAPStoreFlagsOperation.cc b/src/async/imap/MCIMAPStoreFlagsOperation.cc
index e0464c8c..e2e2bfe9 100644
--- a/src/async/imap/MCIMAPStoreFlagsOperation.cc
+++ b/src/async/imap/MCIMAPStoreFlagsOperation.cc
@@ -18,11 +18,13 @@ IMAPStoreFlagsOperation::IMAPStoreFlagsOperation()
mUids = NULL;
mKind = IMAPStoreFlagsRequestKindAdd;
mFlags = MessageFlagNone;
+ mCustomFlags = NULL;
}
IMAPStoreFlagsOperation::~IMAPStoreFlagsOperation()
{
MC_SAFE_RELEASE(mUids);
+ MC_SAFE_RELEASE(mCustomFlags);
}
void IMAPStoreFlagsOperation::setUids(IndexSet * uids)
@@ -55,9 +57,19 @@ 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;
- session()->session()->storeFlags(folder(), mUids, mKind, mFlags, &error);
+ session()->session()->storeFlags(folder(), mUids, mKind, mFlags, mCustomFlags, &error);
setError(error);
}
diff --git a/src/async/imap/MCIMAPStoreFlagsOperation.h b/src/async/imap/MCIMAPStoreFlagsOperation.h
index 0048283c..d908baf5 100644
--- a/src/async/imap/MCIMAPStoreFlagsOperation.h
+++ b/src/async/imap/MCIMAPStoreFlagsOperation.h
@@ -30,6 +30,9 @@ namespace mailcore {
virtual void setFlags(MessageFlag flags);
virtual MessageFlag flags();
+ virtual void setCustomFlags(Array * customFlags);
+ virtual Array * customFlags();
+
public: // subclass behavior
virtual void main();
@@ -37,6 +40,7 @@ namespace mailcore {
IndexSet * mUids;
IMAPStoreFlagsRequestKind mKind;
MessageFlag mFlags;
+ Array * mCustomFlags;
};