diff options
author | 2014-11-19 00:48:34 -0800 | |
---|---|---|
committer | 2014-11-19 00:48:34 -0800 | |
commit | e3c45123799d84b0ff85035db606cc36b8379427 (patch) | |
tree | 17b16bd16f57d097eae1458e8fa10943fb75e54c /src/core/abstract/MCAbstractMultipart.cpp | |
parent | b030d6139ba3f0eb39818ce6f9852e48db079feb (diff) |
Renamed .cc files to .cpp (fixed #983)
Diffstat (limited to 'src/core/abstract/MCAbstractMultipart.cpp')
-rw-r--r-- | src/core/abstract/MCAbstractMultipart.cpp | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/src/core/abstract/MCAbstractMultipart.cpp b/src/core/abstract/MCAbstractMultipart.cpp new file mode 100644 index 00000000..d46a0c75 --- /dev/null +++ b/src/core/abstract/MCAbstractMultipart.cpp @@ -0,0 +1,111 @@ +#include "MCAbstractMultipart.h" + +using namespace mailcore; + +AbstractMultipart::AbstractMultipart() +{ + init(); +} + +AbstractMultipart::AbstractMultipart(AbstractMultipart * other) : AbstractPart(other) +{ + init(); + + setPartType(other->partType()); + Array * parts = Array::array(); + for(unsigned int i = 0 ; i < other->parts()->count() ; i ++) { + AbstractPart * part = (AbstractPart *) other->parts()->objectAtIndex(i); + parts->addObject(part->copy()->autorelease()); + } + setParts(parts); +} + +void AbstractMultipart::init() +{ + mParts = NULL; + setPartType(PartTypeMultipartMixed); +} + +AbstractMultipart::~AbstractMultipart() +{ + MC_SAFE_RELEASE(mParts); +} + +Array * AbstractMultipart::parts() +{ + return mParts; +} + +void AbstractMultipart::setParts(Array * parts) +{ + MC_SAFE_REPLACE_COPY(Array, mParts, parts); +} + +String * AbstractMultipart::description() +{ + String * result = String::string(); + + const char * partTypeName = NULL; + switch (partType()) { + default: + case PartTypeMultipartMixed: + partTypeName = "mixed"; + break; + case PartTypeMultipartRelated: + partTypeName = "related"; + break; + case PartTypeMultipartAlternative: + partTypeName = "alternative"; + break; + case PartTypeMultipartSigned: + partTypeName = "signed"; + break; + } + + result->appendUTF8Format("<%s:%p %s %s>", + MCUTF8(className()), this, partTypeName, MCUTF8(mParts->description())); + return result; +} + +Object * AbstractMultipart::copy() +{ + return new AbstractMultipart(this); +} + +AbstractPart * AbstractMultipart::partForContentID(String * contentID) +{ + for(unsigned int i = 0 ; i < parts()->count() ; i ++) { + mailcore::AbstractPart * subpart = (mailcore::AbstractPart *) parts()->objectAtIndex(i); + mailcore::AbstractPart * result = subpart->partForContentID(contentID); + if (result != NULL) + return result; + } + return NULL; +} + + +AbstractPart * AbstractMultipart::partForUniqueID(String * uniqueID) +{ + for(unsigned int i = 0 ; i < parts()->count() ; i ++) { + mailcore::AbstractPart * subpart = (mailcore::AbstractPart *) parts()->objectAtIndex(i); + mailcore::AbstractPart * result = subpart->partForUniqueID(uniqueID); + if (result != NULL) + return result; + } + return NULL; +} + +HashMap * AbstractMultipart::serializable() +{ + HashMap * result = (HashMap *) AbstractPart::serializable(); + if (mParts != NULL) { + result->setObjectForKey(MCSTR("parts"), mParts->serializable()); + } + return result; +} + +void AbstractMultipart::importSerializable(HashMap * serializable) +{ + AbstractPart::importSerializable(serializable); + setParts((Array *) Object::objectWithSerializable((HashMap *) serializable->objectForKey(MCSTR("parts")))); +} |