diff -r e7aa27f58ae1 -r 578830873419 emailservices/nmailbase/src/nmmessage.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailservices/nmailbase/src/nmmessage.cpp Fri Apr 16 14:51:52 2010 +0300 @@ -0,0 +1,218 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include "nmmessage.h" +#include "nmmessageenvelope.h" + + +/*! + \class NmMessage + \brief Data model for mail message + */ + +/*! + Constructor + */ +NmMessage::NmMessage() +{ +} + +/*! + Constructs message with id \a id, parent id and mailbox id is set to null id + */ +NmMessage::NmMessage(const NmId &id):NmMessagePart(id) +{ + mEnvelope.setId(id); +} + +/*! + Constructs message part with id \a id and with parent id \a parentId, + mailbox id is set to null id + */ +NmMessage::NmMessage(const NmId &id, const NmId &parentId) +:NmMessagePart(id, parentId) +{ + mEnvelope.setId(id); +} + +/*! + Constructs message with id \a id, with parent id \a parentId and + with mailbox id \a mailboxId + */ +NmMessage::NmMessage(const NmId &id, + const NmId &parentId, + const NmId &mailboxId) +:NmMessagePart(id, parentId, mailboxId) +{ + mEnvelope.setId(id); +} + +/*! + Constructs message with meta data + */ +NmMessage::NmMessage(const NmMessageEnvelope &envelope) +{ + mEnvelope = envelope; + // set message id same as meta data id + this->setId(envelope.id()); +} + +/*! + Copy constructor + */ +NmMessage::NmMessage(const NmMessagePart& message):NmMessagePart(message) +{ + mEnvelope.setId( message.id() ); +} + +NmMessage::NmMessage(const NmMessage& message):NmMessagePart(message) +{ + mEnvelope.setId( message.id() ); +} + +/*! + Assignment operator + */ +NmMessage &NmMessage::operator=(const NmMessage &message) +{ + if (this != &message) { + mEnvelope.setId( message.id() ); + } + return *this; +} + +/*! + Destructor + */ +NmMessage::~NmMessage() +{ +} + +/*! + returns id of envelope + */ +NmId NmMessage::id() const +{ + return mEnvelope.id(); +} + + +/*! + Sets id to envelope + */ +void NmMessage::setId(const NmId &id) +{ + //NmMessagePart::setId(id); + mEnvelope.setId(id); +} + +/*! + Returns pointer to plain text body, if plain text body is not found + returns null pointer. Ownership of message part object is not transferred. + Do not delete returned pointer. + */ +NmMessagePart *NmMessage::plainTextBodyPart() +{ + NmMessagePart *ret = NULL; + ret = findContentPart(NmContentTypeTextPlain); + return ret; +} + +/*! + Returns pointer to html body, if html body is not found + returns null pointer. Ownership of message part object is not transferred. + Do not delete returned pointer. + */ +NmMessagePart *NmMessage::htmlBodyPart() +{ + NmMessagePart *ret = NULL; + ret = findContentPart(NmContentTypeTextHtml); + return ret; +} + +/*! + Sets message meta data. If meta data id is different than null id, messages + id is set to \a envelope's id + */ +void NmMessage::setEnvelope(const NmMessageEnvelope &envelope) +{ + mEnvelope = envelope; + if (envelope.id() != 0) { + this->setId(envelope.id()); + } else { + mEnvelope.setId(this->id()); + } +} + +/*! + Returns reference to message envelope + */ +NmMessageEnvelope &NmMessage::envelope() +{ + return mEnvelope; +} + +/*! + Returns reference to message envelope + */ +const NmMessageEnvelope &NmMessage::envelope() const +{ + return mEnvelope; +} + +/** +* Returns a flat list of message parts that can be handled as attachments. +* Excludes message parts that are multipart and parts that are considered +* plain text or html body. +* +* @param flat list of attachments to be filled +*/ +void NmMessage::attachmentList(QList &parts) +{ + parts.clear(); + appendAttachments(parts); + + // special case, if single part content type is not given, + // default type is text/plain + if ( parts.count() == 1 && parts.at(0)->contentType().length() == 0) { + parts.clear(); + } + else { + // find plain text body part from the list + NmMessagePart* txtPart = findContentPart(NmContentTypeTextPlain); + if ( txtPart ) { + // remove plain text body part from attachment list + for ( int ii = parts.count() - 1; ii >= 0; --ii ) { + if ( parts.at(ii)->id() == txtPart->id() ) { + parts.removeAt(ii); + break; + } + } + } + // find html body part from the list + NmMessagePart* htmlPart = findContentPart(NmContentTypeTextHtml); + if ( htmlPart ) { + // remove html body part from attachment list + for ( int ii = parts.count() - 1; ii >= 0; --ii ) { + if ( parts.at(ii)->id() == htmlPart->id() ) { + parts.removeAt(ii); + break; + } + } + } + } +}