diff options
Diffstat (limited to 'src/core/abstract/MCAbstractMessage.cpp')
-rw-r--r-- | src/core/abstract/MCAbstractMessage.cpp | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/src/core/abstract/MCAbstractMessage.cpp b/src/core/abstract/MCAbstractMessage.cpp new file mode 100644 index 00000000..1d1d7efc --- /dev/null +++ b/src/core/abstract/MCAbstractMessage.cpp @@ -0,0 +1,100 @@ +#include "MCAbstractMessage.h" + +#include "MCMessageHeader.h" +#include "MCHTMLRenderer.h" + +using namespace mailcore; + +AbstractMessage::AbstractMessage() +{ + init(); +} + +AbstractMessage::AbstractMessage(AbstractMessage * other) +{ + init(); + mHeader = (MessageHeader *) MC_SAFE_COPY(other->mHeader); +} + +void AbstractMessage::init() +{ + mHeader = NULL; +} + +AbstractMessage::~AbstractMessage() +{ + MC_SAFE_RELEASE(mHeader); +} + +String * AbstractMessage::description() +{ + if (mHeader != NULL) { + String * result = String::string(); + result->appendUTF8Format("<%s:%p\n", className()->UTF8Characters(), this); + result->appendString(mHeader->description()); + result->appendUTF8Characters(">"); + return result; + } + else { + return Object::description(); + } +} + +Object * AbstractMessage::copy() +{ + return new AbstractMessage(this); +} + +MessageHeader * AbstractMessage::header() +{ + if (mHeader == NULL) { + mHeader = new MessageHeader(); + } + return mHeader; +} + +void AbstractMessage::setHeader(MessageHeader * header) +{ + MC_SAFE_REPLACE_RETAIN(MessageHeader, mHeader, header); +} + +AbstractPart * AbstractMessage::partForContentID(String * contentID) +{ + MCAssert(0); + return NULL; +} + +AbstractPart * AbstractMessage::partForUniqueID(String * uniqueID) +{ + MCAssert(0); + return NULL; +} + +Array * AbstractMessage::attachments() +{ + return HTMLRenderer::attachmentsForMessage(this); +} + +Array * AbstractMessage::htmlInlineAttachments() +{ + return HTMLRenderer::htmlInlineAttachmentsForMessage(this); +} + +Array * AbstractMessage::requiredPartsForRendering() +{ + return HTMLRenderer::requiredPartsForRendering(this); +} + +HashMap * AbstractMessage::serializable() +{ + HashMap * result = Object::serializable(); + if (header() != NULL) { + result->setObjectForKey(MCSTR("header"), mHeader->serializable()); + } + return result; +} + +void AbstractMessage::importSerializable(HashMap * hashmap) +{ + setHeader((MessageHeader *) Object::objectWithSerializable((HashMap *) hashmap->objectForKey(MCSTR("header")))); +} |