diff -r 000000000000 -r 8466d47a6819 emailservices/emailframework/commonlib/src/CFSMailMessageBase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailservices/emailframework/commonlib/src/CFSMailMessageBase.cpp Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,418 @@ +/* +* Copyright (c) 2007-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: common email base object +* +*/ + + +#include "CFSMailRequestHandler.h" +#include "emailtrace.h" +#include "CFSMailMessageBase.h" +#include "cmailmessageext.h" + +// ================= MEMBER FUNCTIONS ========================================== +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::NewLC +// ----------------------------------------------------------------------------- +EXPORT_C CFSMailMessageBase * CFSMailMessageBase::NewLC( TFSMailMsgId aMessageId ) +{ + FUNC_LOG; + CFSMailMessageBase* message = new (ELeave) CFSMailMessageBase(); + CleanupStack:: PushL(message); + message->ConstructL(aMessageId); + return message; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::NewL +// ----------------------------------------------------------------------------- +EXPORT_C CFSMailMessageBase * CFSMailMessageBase::NewL( TFSMailMsgId aMessageId ) +{ + FUNC_LOG; + CFSMailMessageBase* message = CFSMailMessageBase::NewLC(aMessageId); + CleanupStack:: Pop(message); + return message; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::CFSMailMessageBase +// ----------------------------------------------------------------------------- +CFSMailMessageBase::CFSMailMessageBase() +{ + FUNC_LOG; + + iSubject = HBufC::New(1); + iSubject->Des().Copy(KNullDesC()); + + iSender = NULL; + iFlags = 0; + // set request handler pointer + iRequestHandler = static_cast(Dll::Tls()); +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::ConstructL +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::ConstructL( TFSMailMsgId aMessageId ) +{ + FUNC_LOG; + iMessageId = aMessageId; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::~CFSMailMessageBase +// ----------------------------------------------------------------------------- +EXPORT_C CFSMailMessageBase::~CFSMailMessageBase() +{ + FUNC_LOG; + if(iSender) + { + delete iSender; + iSender = NULL; + } + + if(iSubject) + { + delete iSubject; + iSubject = NULL; + } + + // clear recipients lists + iToRecipients.ResetAndDestroy(); + iCcRecipients.ResetAndDestroy(); + iBccRecipients.ResetAndDestroy(); + +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetMessageId +// ----------------------------------------------------------------------------- +EXPORT_C TFSMailMsgId CFSMailMessageBase::GetMessageId( ) const +{ + FUNC_LOG; + return iMessageId; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetFolderId +// ----------------------------------------------------------------------------- +EXPORT_C TFSMailMsgId CFSMailMessageBase::GetFolderId( ) const +{ + FUNC_LOG; + return iFolderId; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::SetFolderId +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::SetFolderId( const TFSMailMsgId aFolderId ) +{ + FUNC_LOG; + iFolderId = aFolderId; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetMailBoxId +// ----------------------------------------------------------------------------- +EXPORT_C TFSMailMsgId CFSMailMessageBase::GetMailBoxId( ) const +{ + FUNC_LOG; + return iMailBoxId; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::SetMailBoxId +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::SetMailBoxId( const TFSMailMsgId aMailBoxId ) +{ + FUNC_LOG; + iMailBoxId = aMailBoxId; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::SetSender +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::SetSender(CFSMailAddress* aSender) +{ + FUNC_LOG; + // store sender + if (iSender) + { + delete iSender; + } + iSender = aSender; + +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetSender +// ----------------------------------------------------------------------------- +EXPORT_C CFSMailAddress* CFSMailMessageBase::GetSender() const +{ + FUNC_LOG; + return iSender; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetToRecipients +// ----------------------------------------------------------------------------- +EXPORT_C RPointerArray& CFSMailMessageBase::GetToRecipients() +{ + return iToRecipients; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetCCRecipients +// ----------------------------------------------------------------------------- +EXPORT_C RPointerArray& CFSMailMessageBase::GetCCRecipients( ) +{ + return iCcRecipients; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetBCCRecipients +// ----------------------------------------------------------------------------- +EXPORT_C RPointerArray& CFSMailMessageBase::GetBCCRecipients( ) +{ + return iBccRecipients; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::AppendToRecipient +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::AppendToRecipient(CFSMailAddress* aRecipient) +{ + FUNC_LOG; + iToRecipients.Append(aRecipient); +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::AppendCCRecipient +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::AppendCCRecipient(CFSMailAddress* aRecipient ) +{ + FUNC_LOG; + iCcRecipients.Append(aRecipient); +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::AppendBCCRecipient +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::AppendBCCRecipient( CFSMailAddress* aRecipient ) +{ + FUNC_LOG; + iBccRecipients.Append(aRecipient); +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::ClearToRecipients +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::ClearToRecipients( ) + { + FUNC_LOG; + iToRecipients.ResetAndDestroy(); + } + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::ClearCcRecipients +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::ClearCcRecipients( ) + { + FUNC_LOG; + iCcRecipients.ResetAndDestroy(); + } + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::ClearBccRecipients +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::ClearBccRecipients( ) + { + FUNC_LOG; + iBccRecipients.ResetAndDestroy(); + } + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetSubject +// ----------------------------------------------------------------------------- +EXPORT_C TDesC& CFSMailMessageBase::GetSubject() const +{ + FUNC_LOG; + return *iSubject; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetDate +// ----------------------------------------------------------------------------- +EXPORT_C TTime CFSMailMessageBase::GetDate() const +{ + FUNC_LOG; + return iDate; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::SetDate +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::SetDate( const TTime aDate ) +{ + FUNC_LOG; + iDate = aDate; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::SetSubject +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::SetSubject(const TDesC& aSubject) +{ + FUNC_LOG; + // init mailbox name + HBufC* subject = HBufC::New(aSubject.Length()); + + // store new mailbox name + if(subject) + { + delete iSubject; + iSubject = subject; + iSubject->Des().Copy(aSubject); + } + +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetFlags +// ----------------------------------------------------------------------------- +EXPORT_C TInt CFSMailMessageBase::GetFlags( ) const +{ + FUNC_LOG; + return iFlags; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::SetFlag +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::SetFlag(const TInt aFlag) +{ + FUNC_LOG; + iFlags |= aFlag; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::ResetFlag +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::ResetFlag(const TInt aFlag) +{ + FUNC_LOG; + iFlags &= ~aFlag; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::IsFlagSet +// ----------------------------------------------------------------------------- +EXPORT_C TBool CFSMailMessageBase::IsFlagSet(const TInt aFlag) const +{ + FUNC_LOG; + if(iFlags & aFlag) + { + return ETrue; + } + else + { + return EFalse; + } +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::IsRelatedTo +// ----------------------------------------------------------------------------- +EXPORT_C TFSMailMsgId CFSMailMessageBase::IsRelatedTo() const + { + FUNC_LOG; + return iRelatedTo; + } + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::SetRelatedTo +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::SetRelatedTo( const TFSMailMsgId aMessageId ) + { + FUNC_LOG; + iRelatedTo = aMessageId; + } + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::SetReplyToAddress +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::SetReplyToAddress(CFSMailAddress* aReplyToAddress) +{ + FUNC_LOG; + // store sender + if (iReplyTo) + { + delete iReplyTo; + } + iReplyTo = aReplyToAddress; + +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::GetReplyToAddress +// ----------------------------------------------------------------------------- +EXPORT_C const CFSMailAddress& CFSMailMessageBase::GetReplyToAddress() +{ + FUNC_LOG; + return *iReplyTo; +} + +EXPORT_C CFSMailRequestHandler& CFSMailMessageBase::RequestHandler( ) +{ + return *iRequestHandler; +} + +// ----------------------------------------------------------------------------- +// CFSMailMessageBase::ReleaseExtension +// ----------------------------------------------------------------------------- +EXPORT_C void CFSMailMessageBase::ReleaseExtension( CEmailExtension* aExtension ) + { + FUNC_LOG; + if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(iMessageId) ) + { + // 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 ) + { + FUNC_LOG; + 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(iMessageId) ) + { + // request extension from plugin, leaves if not supported + ext = plugin->ExtensionL( aInterfaceUid ); + } + + } + return ext; + }