diff options
author | 2014-08-02 12:36:10 +0300 | |
---|---|---|
committer | 2014-08-02 12:36:10 +0300 | |
commit | 0eb214740b9e25be17ee6d8c76f37652f9eb1601 (patch) | |
tree | 7e0a97833dc3aec2fc84175aba4707e0339c2386 /src | |
parent | 6f5f44ff92337b6f34e6f6d10d9135661b164b0c (diff) |
Added 'message id auto-generated' flag
Diffstat (limited to 'src')
-rw-r--r-- | src/core/abstract/MCMessageHeader.cc | 20 | ||||
-rw-r--r-- | src/core/abstract/MCMessageHeader.h | 3 | ||||
-rw-r--r-- | src/objc/abstract/MCOMessageHeader.h | 3 | ||||
-rw-r--r-- | src/objc/abstract/MCOMessageHeader.mm | 4 |
4 files changed, 29 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; diff --git a/src/objc/abstract/MCOMessageHeader.h b/src/objc/abstract/MCOMessageHeader.h index 11a98c4f..f9bb2229 100644 --- a/src/objc/abstract/MCOMessageHeader.h +++ b/src/objc/abstract/MCOMessageHeader.h @@ -21,6 +21,9 @@ /** Message-ID field.*/ @property (nonatomic, copy) NSString * messageID; +/** Message-ID auto-generated flag.*/ +@property (nonatomic, readonly, getter=isMessageIDAutoGenerated) BOOL messageIDAutoGenerated; + /** References field. It's an array of message-ids.*/ @property (nonatomic, copy) NSArray * /* NSString */ references; diff --git a/src/objc/abstract/MCOMessageHeader.mm b/src/objc/abstract/MCOMessageHeader.mm index e5b085a5..6ce3f27b 100644 --- a/src/objc/abstract/MCOMessageHeader.mm +++ b/src/objc/abstract/MCOMessageHeader.mm @@ -114,6 +114,10 @@ MCO_OBJC_SYNTHESIZE_ARRAY(setReplyTo, replyTo) MCO_OBJC_SYNTHESIZE_STRING(setSubject, subject) MCO_OBJC_SYNTHESIZE_STRING(setUserAgent, userAgent) +- (BOOL)isMessageIDAutoGenerated { + return MCO_NATIVE_INSTANCE->isMessageIDAutoGenerated(); +} + - (void) setExtraHeaderValue:(NSString *)value forName:(NSString *)name { _nativeHeader->setExtraHeader(MCO_FROM_OBJC(mailcore::String, name), MCO_FROM_OBJC(mailcore::String, value)); |