aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/imap/MCIMAPMessage.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/imap/MCIMAPMessage.cc')
-rw-r--r--src/core/imap/MCIMAPMessage.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/core/imap/MCIMAPMessage.cc b/src/core/imap/MCIMAPMessage.cc
index 59d67654..6845d19a 100644
--- a/src/core/imap/MCIMAPMessage.cc
+++ b/src/core/imap/MCIMAPMessage.cc
@@ -17,6 +17,7 @@ void IMAPMessage::init()
mUid = 0;
mFlags = MessageFlagNone;
mOriginalFlags = MessageFlagNone;
+ mCustomFlags = NULL;
mMainPart = NULL;
mGmailLabels = NULL;
mModSeqValue = 0;
@@ -35,6 +36,7 @@ IMAPMessage::IMAPMessage(IMAPMessage * other) : AbstractMessage(other)
setUid(other->uid());
setFlags(other->flags());
setOriginalFlags(other->originalFlags());
+ setCustomFlags(other->customFlags());
setMainPart((AbstractPart *) other->mainPart()->copy()->autorelease());
setGmailLabels(other->gmailLabels());
setGmailThreadID(other->gmailThreadID());
@@ -45,6 +47,7 @@ IMAPMessage::~IMAPMessage()
{
MC_SAFE_RELEASE(mMainPart);
MC_SAFE_RELEASE(mGmailLabels);
+ MC_SAFE_RELEASE(mCustomFlags);
}
Object * IMAPMessage::copy()
@@ -105,6 +108,16 @@ MessageFlag IMAPMessage::originalFlags()
return mOriginalFlags;
}
+void IMAPMessage::setCustomFlags(Array * customFlags)
+{
+ MC_SAFE_REPLACE_COPY(Array, mCustomFlags, customFlags);
+}
+
+Array * IMAPMessage::customFlags()
+{
+ return mCustomFlags;
+}
+
void IMAPMessage::setModSeqValue(uint64_t uid)
{
mModSeqValue = uid;
@@ -226,6 +239,9 @@ HashMap * IMAPMessage::serializable()
result->setObjectForKey(MCSTR("size"), String::stringWithUTF8Format("%lu", (long unsigned) uid()));
result->setObjectForKey(MCSTR("flags"), String::stringWithUTF8Format("%u", (unsigned) flags()));
result->setObjectForKey(MCSTR("originalFlags"), String::stringWithUTF8Format("%u", (unsigned) originalFlags()));
+ if (customFlags() != NULL) {
+ result->setObjectForKey(MCSTR("customFlags"), customFlags());
+ }
result->setObjectForKey(MCSTR("mainPart"), mMainPart->serializable());
if (gmailLabels() != NULL) {
result->setObjectForKey(MCSTR("gmailLabels"), gmailLabels());
@@ -262,6 +278,10 @@ void IMAPMessage::importSerializable(HashMap * serializable)
if (originalFlags != NULL) {
setFlags((MessageFlag) originalFlags->unsignedIntValue());
}
+ String * customFlags = (String *) serializable->objectForKey(MCSTR("customFlags"));
+ if (customFlags != NULL) {
+ setCustomFlags((Array *) serializable->objectForKey(MCSTR("customFlags")));
+ }
setMainPart((AbstractPart *) Object::objectWithSerializable((HashMap *) serializable->objectForKey(MCSTR("mainPart"))));
setGmailLabels((Array *) serializable->objectForKey(MCSTR("gmailLabels")));
String * gmailMessageID = (String *) serializable->objectForKey(MCSTR("gmailMessageID"));