aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/abstract
diff options
context:
space:
mode:
authorGravatar Viktor Gedzenko <foxinushka@gmail.com>2014-08-02 12:36:10 +0300
committerGravatar Viktor Gedzenko <foxinushka@gmail.com>2014-08-02 12:36:10 +0300
commit0eb214740b9e25be17ee6d8c76f37652f9eb1601 (patch)
tree7e0a97833dc3aec2fc84175aba4707e0339c2386 /src/core/abstract
parent6f5f44ff92337b6f34e6f6d10d9135661b164b0c (diff)
Added 'message id auto-generated' flag
Diffstat (limited to 'src/core/abstract')
-rw-r--r--src/core/abstract/MCMessageHeader.cc20
-rw-r--r--src/core/abstract/MCMessageHeader.h3
2 files changed, 22 insertions, 1 deletions
diff --git a/src/core/abstract/MCMessageHeader.cc b/src/core/abstract/MCMessageHeader.cc
index 6d2d8066..5d7a10b3 100644
--- a/src/core/abstract/MCMessageHeader.cc
+++ b/src/core/abstract/MCMessageHeader.cc
@@ -28,7 +28,10 @@ MessageHeader::MessageHeader()
MessageHeader::MessageHeader(MessageHeader * other)
{
init(false, other->mMessageID == NULL);
- setMessageID(other->mMessageID);
+ if (other->mMessageID != NULL) {
+ setMessageID(other->mMessageID);
+ mMessageIDAutoGenerated = other->isMessageIDAutoGenerated();
+ }
setReferences(other->mReferences);
setInReplyTo(other->mInReplyTo);
setSender(other->mSender);
@@ -94,6 +97,8 @@ void MessageHeader::init(bool generateDate, bool generateMessageID)
messageID->appendString(hostname);
setMessageID(messageID);
messageID->release();
+
+ mMessageIDAutoGenerated = true;
}
}
@@ -165,6 +170,7 @@ Object * MessageHeader::copy()
void MessageHeader::setMessageID(String * messageID)
{
MC_SAFE_REPLACE_COPY(String, mMessageID, messageID);
+ mMessageIDAutoGenerated = false;
}
String * MessageHeader::messageID()
@@ -172,6 +178,11 @@ String * MessageHeader::messageID()
return mMessageID;
}
+bool MessageHeader::isMessageIDAutoGenerated()
+{
+ return mMessageIDAutoGenerated;
+}
+
void MessageHeader::setReferences(Array * references)
{
MC_SAFE_REPLACE_COPY(Array, mReferences, references);
@@ -1211,6 +1222,9 @@ HashMap * MessageHeader::serializable()
if (messageID() != NULL) {
result->setObjectForKey(MCSTR("messageID"), messageID());
}
+ if (mMessageIDAutoGenerated) {
+ result->setObjectForKey(MCSTR("messageIDAutoGenerated"), Value::valueWithBoolValue(true));
+ }
if (references() != NULL) {
result->setObjectForKey(MCSTR("references"), references());
}
@@ -1250,6 +1264,10 @@ HashMap * MessageHeader::serializable()
void MessageHeader::importSerializable(HashMap * hashmap)
{
setMessageID((String *) hashmap->objectForKey(MCSTR("messageID")));
+
+ Value * value = (Value *)hashmap->objectForKey(MCSTR("messageIDAutoGenerated"));
+ mMessageIDAutoGenerated = value != NULL && value->boolValue();
+
setReferences((Array *) hashmap->objectForKey(MCSTR("references")));
setInReplyTo((Array *) hashmap->objectForKey(MCSTR("inReplyTo")));
setSender((Address *) Object::objectWithSerializable((HashMap *) hashmap->objectForKey(MCSTR("sender"))));
diff --git a/src/core/abstract/MCMessageHeader.h b/src/core/abstract/MCMessageHeader.h
index 4fef0b7f..51b1e2f7 100644
--- a/src/core/abstract/MCMessageHeader.h
+++ b/src/core/abstract/MCMessageHeader.h
@@ -19,6 +19,8 @@ namespace mailcore {
virtual void setMessageID(String * messageID);
virtual String * messageID();
+ virtual bool isMessageIDAutoGenerated();
+
virtual void setReferences(Array * /* String */ references);
virtual Array * /* String */ references();
@@ -84,6 +86,7 @@ namespace mailcore {
private:
String * mMessageID;
+ bool mMessageIDAutoGenerated;
Array * /* String */ mReferences;
Array * /* String */ mInReplyTo;
Address * mSender;