aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/abstract/MCAbstractPart.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/abstract/MCAbstractPart.cc')
-rw-r--r--src/core/abstract/MCAbstractPart.cc84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/core/abstract/MCAbstractPart.cc b/src/core/abstract/MCAbstractPart.cc
index 6991e5fc..d7b57544 100644
--- a/src/core/abstract/MCAbstractPart.cc
+++ b/src/core/abstract/MCAbstractPart.cc
@@ -282,3 +282,87 @@ void AbstractPart::applyUniquePartID()
}
queue->release();
}
+
+HashMap * AbstractPart::serializable()
+{
+ HashMap * result = Object::serializable();
+
+ if (uniqueID() != NULL) {
+ result->setObjectForKey(MCSTR("uniqueID"), uniqueID());
+ }
+ if (filename() != NULL) {
+ result->setObjectForKey(MCSTR("filename"), filename());
+ }
+ if (mimeType() != NULL) {
+ result->setObjectForKey(MCSTR("mimeType"), mimeType());
+ }
+ if (charset() != NULL) {
+ result->setObjectForKey(MCSTR("charset"), charset());
+ }
+ if (contentID() != NULL) {
+ result->setObjectForKey(MCSTR("contentID"), contentID());
+ }
+ if (contentLocation() != NULL) {
+ result->setObjectForKey(MCSTR("contentLocation"), contentLocation());
+ }
+ if (mInlineAttachment) {
+ result->setObjectForKey(MCSTR("inlineAttachment"), MCSTR("1"));
+ }
+ String * partTypeStr;
+ switch (mPartType) {
+ default:
+ case PartTypeSingle:
+ partTypeStr = MCSTR("single");
+ break;
+ case PartTypeMessage:
+ partTypeStr = MCSTR("message");
+ break;
+ case PartTypeMultipartMixed:
+ partTypeStr = MCSTR("multipart/mixed");
+ break;
+ case PartTypeMultipartRelated:
+ partTypeStr = MCSTR("multipart/related");
+ break;
+ case PartTypeMultipartAlternative:
+ partTypeStr = MCSTR("multipart/alternative");
+ break;
+ }
+ result->setObjectForKey(MCSTR("partType"), partTypeStr);
+
+ return result;
+}
+
+void AbstractPart::importSerializable(HashMap * serializable)
+{
+ setUniqueID((String *) serializable->objectForKey(MCSTR("uniqueID")));
+ setFilename((String *) serializable->objectForKey(MCSTR("filename")));
+ setMimeType((String *) serializable->objectForKey(MCSTR("mimeType")));
+ setCharset((String *) serializable->objectForKey(MCSTR("charset")));
+ setContentID((String *) serializable->objectForKey(MCSTR("contentID")));
+ setContentLocation((String *) serializable->objectForKey(MCSTR("contentLocation")));
+ String * value = (String *) serializable->objectForKey(MCSTR("inlineAttachment"));
+ if (value != NULL) {
+ if (value->intValue()) {
+ setInlineAttachment(true);
+ }
+ }
+ value = (String *) serializable->objectForKey(MCSTR("partType"));
+ if (value != NULL) {
+ if (value->isEqual(MCSTR("single"))) {
+ setPartType(PartTypeSingle);
+ }
+ else if (value->isEqual(MCSTR("message"))) {
+ setPartType(PartTypeMessage);
+ }
+ else if (value->isEqual(MCSTR("multipart/mixed"))) {
+ setPartType(PartTypeMultipartMixed);
+ }
+ else if (value->isEqual(MCSTR("multipart/related"))) {
+ setPartType(PartTypeMultipartRelated);
+ }
+ else if (value->isEqual(MCSTR("multipart/alternative"))) {
+ setPartType(PartTypeMultipartAlternative);
+ }
+ }
+ PartType mPartType;
+}