aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
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
parent6f5f44ff92337b6f34e6f6d10d9135661b164b0c (diff)
Added 'message id auto-generated' flag
Diffstat (limited to 'src')
-rw-r--r--src/core/abstract/MCMessageHeader.cc20
-rw-r--r--src/core/abstract/MCMessageHeader.h3
-rw-r--r--src/objc/abstract/MCOMessageHeader.h3
-rw-r--r--src/objc/abstract/MCOMessageHeader.mm4
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));