emailservices/emailframework/commonlib/src/CFSMailMessageBase.cpp
changeset 0 8466d47a6819
child 8 e1b6206813b4
--- /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<CFSMailRequestHandler*>(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<CFSMailAddress>&  CFSMailMessageBase::GetToRecipients()
+{
+	return iToRecipients;
+}
+
+// -----------------------------------------------------------------------------
+// CFSMailMessageBase::GetCCRecipients
+// -----------------------------------------------------------------------------
+EXPORT_C RPointerArray<CFSMailAddress>&  CFSMailMessageBase::GetCCRecipients( )
+{
+	return iCcRecipients;
+}
+
+// -----------------------------------------------------------------------------
+// CFSMailMessageBase::GetBCCRecipients
+// -----------------------------------------------------------------------------
+EXPORT_C RPointerArray<CFSMailAddress>&  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;
+    }