diff -r dcf0eedfc1a3 -r d189ee25cf9d emailservices/emailcommon/src/CFSMailMessageBase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailservices/emailcommon/src/CFSMailMessageBase.cpp Tue Aug 31 15:04:17 2010 +0300 @@ -0,0 +1,556 @@ +/* +* Copyright (c) 2007-2010 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: common email base object +* +*/ + +#include "emailtrace.h" + +// +#include "CFSMailRequestHandler.h" +#include "CFSMailMessageBase.h" +#include "cmailmessageext.h" +// + +// +#include +#include "nmmessageenvelope.h" +#include "nmconverter.h" +// + +// ================= MEMBER FUNCTIONS ========================================== +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::NewLC +// ----------------------------------------------------------------------------- +EXPORT_C CFSMailMessageBase * CFSMailMessageBase::NewLC( TFSMailMsgId aMessageId ) +{ + NM_FUNCTION; + + CFSMailMessageBase* message = new (ELeave) CFSMailMessageBase(); + CleanupStack:: PushL(message); + message->ConstructL(aMessageId); + return message; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::NewL +// ----------------------------------------------------------------------------- +EXPORT_C CFSMailMessageBase * CFSMailMessageBase::NewL( TFSMailMsgId aMessageId ) +{ + NM_FUNCTION; + + CFSMailMessageBase* message = CFSMailMessageBase::NewLC(aMessageId); + CleanupStack:: Pop(message); + return message; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::CFSMailMessageBase +// ----------------------------------------------------------------------------- +CFSMailMessageBase::CFSMailMessageBase(): iSender(NULL) +{ + NM_FUNCTION; + +// unnecessary member initialization removed: iSubject, iFlags + // set request handler pointer + iRequestHandler = static_cast(Dll::Tls()); +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::ConstructL +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::ConstructL( TFSMailMsgId aMessageId ) +{ + NM_FUNCTION; + +// + // Construction of shared data object + iNmPrivateMessageEnvelope = new NmMessageEnvelopePrivate(); + + // typedef long int TInt32 -> typedef unsigned int quint32 + iNmPrivateMessageEnvelope->mMessageId.setId32((quint32)aMessageId.Id() ); + + // typedef unsigned int TUint -> typedef unsigned int quint32 + iNmPrivateMessageEnvelope->mMessageId.setPluginId32((quint32)aMessageId.PluginId().iUid); + + // construct the CFSMailAddress object and connect it with NmAddress private data + iSender = CFSMailAddress::NewL(iNmPrivateMessageEnvelope->mSender); +// +} + +// +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::ConstructL +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::ConstructL( + const NmMessageEnvelope &aMessageEnvelope ) +{ + NM_FUNCTION; + + iNmPrivateMessageEnvelope = aMessageEnvelope.d; +} +// + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::~CFSMailMessageBase +// ----------------------------------------------------------------------------- +EXPORT_C CFSMailMessageBase::~CFSMailMessageBase() +{ + NM_FUNCTION; + + if(iSender) + { + delete iSender; + iSender = NULL; + } +// unnecessary member destruction removed: iSubject, iToRecipients, iCcRecipients, iBccRecipients +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetMessageId +// ----------------------------------------------------------------------------- +EXPORT_C TFSMailMsgId CFSMailMessageBase::GetMessageId( ) const +{ + NM_FUNCTION; + +// + //For message + TFSMailMsgId id = TFSMailMsgId(iNmPrivateMessageEnvelope->mMessageId); + + //For message part + if(id.IsNullId()){ + id = TFSMailMsgId(iNmPrivateMessageEnvelope->mFolderId); + } + + return id; +// +} + +// +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::SetMessageId +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::SetMessageId( const TFSMailMsgId aMessageId ) +{ + NM_FUNCTION; + + // typedef long int TInt32 -> typedef unsigned int quint32 + iNmPrivateMessageEnvelope->mMessageId.setId32( aMessageId.Id() ); + + // typedef unsigned int TUint -> typedef unsigned int quint32 + iNmPrivateMessageEnvelope->mMessageId.setPluginId32( + (unsigned int)aMessageId.PluginId().iUid); +} +// + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetFolderId +// ----------------------------------------------------------------------------- +EXPORT_C TFSMailMsgId CFSMailMessageBase::GetFolderId( ) const +{ + NM_FUNCTION; + +// + return TFSMailMsgId(iNmPrivateMessageEnvelope->mFolderId); +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::SetFolderId +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::SetFolderId( const TFSMailMsgId aFolderId ) +{ + NM_FUNCTION; + +// + iNmPrivateMessageEnvelope->mFolderId = NmConverter::mailMsgIdToNmId(aFolderId); +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetMailBoxId +// ----------------------------------------------------------------------------- +EXPORT_C TFSMailMsgId CFSMailMessageBase::GetMailBoxId( ) const +{ + NM_FUNCTION; + +// + return NmId(iNmPrivateMessageEnvelope->mMailboxId); +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::SetMailBoxId +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::SetMailBoxId( const TFSMailMsgId aMailBoxId ) +{ + NM_FUNCTION; + +// + iNmPrivateMessageEnvelope->mMailboxId = NmConverter::mailMsgIdToNmId(aMailBoxId); +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::SetSender +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::SetSender(CFSMailAddress* aSender) +{ + NM_FUNCTION; + +// + // store sender + if (iSender) + { + delete iSender; + iSender = NULL; + } + if (!aSender) + { + TRAP_IGNORE(iSender = CFSMailAddress::NewL()); + } + else + { + iSender = aSender; + } + iNmPrivateMessageEnvelope->mSender = iSender->GetNmAddress(); +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetSender +// ----------------------------------------------------------------------------- +EXPORT_C CFSMailAddress* CFSMailMessageBase::GetSender() const +{ + NM_FUNCTION; + + return iSender; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetToRecipients +// ----------------------------------------------------------------------------- +EXPORT_C RPointerArray CFSMailMessageBase::GetToRecipients() +{ +// + NM_FUNCTION; + + return NmConverter::toRPointerArray( + iNmPrivateMessageEnvelope->mToRecipients); +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetCCRecipients +// ----------------------------------------------------------------------------- +EXPORT_C RPointerArray CFSMailMessageBase::GetCCRecipients() +{ +// + NM_FUNCTION; + + return NmConverter::toRPointerArray( + iNmPrivateMessageEnvelope->mCcRecipients); +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetBCCRecipients +// ----------------------------------------------------------------------------- +EXPORT_C RPointerArray CFSMailMessageBase::GetBCCRecipients() +{ +// + NM_FUNCTION; + + return NmConverter::toRPointerArray( + iNmPrivateMessageEnvelope->mBccRecipients); +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::AppendToRecipient +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::AppendToRecipient(CFSMailAddress* aRecipient) +{ + NM_FUNCTION; + +// + if (aRecipient) + { + iNmPrivateMessageEnvelope->mToRecipients.append(aRecipient->GetNmAddress()); + } +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::AppendCCRecipient +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::AppendCCRecipient(CFSMailAddress* aRecipient ) +{ + NM_FUNCTION; + +// + if (aRecipient) + { + iNmPrivateMessageEnvelope->mCcRecipients.append( + aRecipient->GetNmAddress()); + } +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::AppendBCCRecipient +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::AppendBCCRecipient( CFSMailAddress* aRecipient ) +{ + NM_FUNCTION; + +// + if (aRecipient) + { + iNmPrivateMessageEnvelope->mBccRecipients.append( + aRecipient->GetNmAddress()); + } +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::ClearToRecipients +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::ClearToRecipients( ) +{ + NM_FUNCTION; + +// + iNmPrivateMessageEnvelope->mToRecipients.clear(); +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::ClearCcRecipients +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::ClearCcRecipients( ) +{ + NM_FUNCTION; + +// + iNmPrivateMessageEnvelope->mCcRecipients.clear(); +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::ClearBccRecipients +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::ClearBccRecipients( ) +{ + NM_FUNCTION; + +// + iNmPrivateMessageEnvelope->mBccRecipients.clear(); +// +} + +// +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetSubject +// ----------------------------------------------------------------------------- +EXPORT_C TDesC& CFSMailMessageBase::GetSubject() const +{ + NM_FUNCTION; + +// + iSubjectPtr.Set(reinterpret_cast (iNmPrivateMessageEnvelope->mSubject.utf16()), + iNmPrivateMessageEnvelope->mSubject.length()); + return iSubjectPtr; +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetDate +// ----------------------------------------------------------------------------- +EXPORT_C TTime CFSMailMessageBase::GetDate() const +{ + NM_FUNCTION; + +// + return NmConverter::toTTime(iNmPrivateMessageEnvelope->mSentTime); +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::SetDate +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::SetDate( const TTime aDate ) +{ + NM_FUNCTION; + +// + iNmPrivateMessageEnvelope->mSentTime = NmConverter::toQDateTime(aDate); +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::SetSubject +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::SetSubject(const TDesC& aSubject) +{ + NM_FUNCTION; + +// + QString qtSubject = QString::fromUtf16(aSubject.Ptr(), aSubject.Length()); + iNmPrivateMessageEnvelope->mSubject = qtSubject; +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetFlags +// ----------------------------------------------------------------------------- +EXPORT_C TInt CFSMailMessageBase::GetFlags( ) const +{ + NM_FUNCTION; + +// + return (TInt)iNmPrivateMessageEnvelope->flags(); +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::SetFlag +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::SetFlag(const TInt aFlag) +{ + NM_FUNCTION; + +// + iNmPrivateMessageEnvelope->setFlags((NmMessageFlags)aFlag, true); +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::ResetFlag +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::ResetFlag(const TInt aFlag) +{ + NM_FUNCTION; + +// + iNmPrivateMessageEnvelope->setFlags((NmMessageFlags)aFlag, false); +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::IsFlagSet +// ----------------------------------------------------------------------------- +EXPORT_C TBool CFSMailMessageBase::IsFlagSet(const TInt aFlag) const +{ + NM_FUNCTION; + +// + TBool result = EFalse; + if (iNmPrivateMessageEnvelope->isFlagSet((NmMessageFlag)aFlag)) + { + result = ETrue; + } + return result; +// +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::SetReplyToAddress +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::SetReplyToAddress(CFSMailAddress* aReplyToAddress) +{ + NM_FUNCTION; + + // store sender + if (iReplyTo) + { + delete iReplyTo; + } + iReplyTo = aReplyToAddress; + +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetReplyToAddress +// ----------------------------------------------------------------------------- +EXPORT_C const CFSMailAddress& CFSMailMessageBase::GetReplyToAddress() +{ + NM_FUNCTION; + + return *iReplyTo; +} + +EXPORT_C CFSMailRequestHandler& CFSMailMessageBase::RequestHandler( ) +{ + NM_FUNCTION; + + return *iRequestHandler; +} + +// +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetNmMessageEnvelope +// ----------------------------------------------------------------------------- +EXPORT_C NmMessageEnvelope* CFSMailMessageBase::GetNmMessageEnvelope() +{ + NM_FUNCTION; + + return new NmMessageEnvelope(iNmPrivateMessageEnvelope); +} +// + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::ReleaseExtension +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::ReleaseExtension( CEmailExtension* aExtension ) + { + NM_FUNCTION; + + if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( + iNmPrivateMessageEnvelope->mMessageId ) ) + { + // If plugin has created the extension, let it handle destruction. + plugin->ReleaseExtension( aExtension ); + } + else + { + CExtendableEmail::ReleaseExtension( aExtension ); + } + } + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::ExtensionL +// ----------------------------------------------------------------------------- +EXPORT_C CEmailExtension* CFSMailMessageBase::ExtensionL( + const TUid& aInterfaceUid ) + { + NM_FUNCTION; + + CEmailExtension* ext = CExtendableEmail::ExtensionL( aInterfaceUid ); + // didn't find already created instance, try now + if ( !ext ) + { + // check that plugin supports requested extension. +// + if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( + iNmPrivateMessageEnvelope->mMessageId ) ) +// + { + // request extension from plugin, leaves if not supported + ext = plugin->ExtensionL( aInterfaceUid ); + } + + } + return ext; + }