serviceproviders/sapi_messaging/messagingservice/src/messageheader.cpp
changeset 19 989d2f495d90
child 33 50974a8b132e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/serviceproviders/sapi_messaging/messagingservice/src/messageheader.cpp	Fri Jul 03 15:51:24 2009 +0100
@@ -0,0 +1,1201 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:  Implementation of class CMessageHeader
+*
+*/
+
+
+#include <CMsvAttachment.h>
+#include <senduiconsts.h>
+
+#include "messageheader.h"
+
+
+// ---------------------------------------------------------------------------
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+EXPORT_C CMessageHeader* CMessageHeader::NewL()
+	{
+	CMessageHeader* self = new(ELeave) CMessageHeader();
+	return self;
+	}
+	
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+CMessageHeader::~CMessageHeader()
+	{
+	delete iSubject;
+	delete iFrom;
+	delete iMtmAsString;
+	delete iPriAsString;
+	}
+	
+// --------------------------------------------------------------------------- 
+//  C++  constructor.
+// ---------------------------------------------------------------------------
+CMessageHeader::CMessageHeader():
+		iMtm(TUid(TUid::Null())),
+		iMessageID(-1)
+	{
+	}
+
+// --------------------------------------------------------------------------- 
+// Sets the unread flag
+// ---------------------------------------------------------------------------
+EXPORT_C void CMessageHeader::SetUnreadFlag(const TBool aUnread)
+	{
+	iUnread = aUnread;
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the unread flag
+// ---------------------------------------------------------------------------
+EXPORT_C void CMessageHeader::GetUnreadFlag(TBool& aUnread) const
+	{
+	aUnread = iUnread;
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the unread flag
+// ---------------------------------------------------------------------------
+EXPORT_C TBool CMessageHeader::UnreadFlag() const
+	{
+	return ( iUnread ? ETrue : EFalse ); 
+	}
+
+// --------------------------------------------------------------------------- 
+// Sets the attachment flag
+// ---------------------------------------------------------------------------
+EXPORT_C void CMessageHeader::SetAttachFlag(const TBool aAttachment)
+	{
+	iAttachment = aAttachment;
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the attachment flag
+// ---------------------------------------------------------------------------
+EXPORT_C void CMessageHeader::GetAttachFlag(TBool& aAttachment) const
+	{
+	aAttachment = iAttachment ; 
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the attachment flag
+// ---------------------------------------------------------------------------
+EXPORT_C TBool CMessageHeader::AttachFlag() const
+	{
+	return ( iAttachment ? ETrue : EFalse ); 
+	}
+
+// --------------------------------------------------------------------------- 
+// Sets the priority flag
+// ---------------------------------------------------------------------------
+EXPORT_C void CMessageHeader::SetPriorityFlag(const TMsvPriority aPriority)
+	{
+	iPriority = aPriority;
+	delete iPriAsString;
+	iPriAsString = NULL;
+	
+	switch ( iPriority )
+		{
+		case EMsvHighPriority: 
+			iPriAsString = KPriorityHigh.operator()().Alloc();
+			break;
+			
+		case EMsvLowPriority: 
+			iPriAsString = KPriorityLow.operator()().Alloc();
+			break;
+			
+		case EMsvMediumPriority:
+		default:
+			iPriAsString = KPriorityMedium.operator()().Alloc();
+		}
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the priority flag
+// ---------------------------------------------------------------------------
+EXPORT_C void CMessageHeader::GetPriorityFlag(TMsvPriority& aPriority) const
+	{
+	aPriority = iPriority;
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the priority 
+// ---------------------------------------------------------------------------
+EXPORT_C TPtrC CMessageHeader::Priority() const
+	{
+    return iPriAsString ? TPtrC( *iPriAsString ) : TPtrC(); 
+	}
+
+// --------------------------------------------------------------------------- 
+// Sets the mtm id
+// ---------------------------------------------------------------------------
+EXPORT_C void CMessageHeader::SetMtmId(const TUid aMtm)
+	{
+	iMtm = aMtm;
+	
+	if ( iMtmAsString )
+		delete iMtmAsString;
+	
+	iMtmAsString = NULL;
+	
+	if ( iMtm == KSenduiMtmSmsUid )
+		{
+		iMtmAsString = KMessageTypeSMS.operator()().Alloc();
+		}
+	else if ( iMtm == KSenduiMtmMmsUid )
+		{
+		iMtmAsString = KMessageTypeMMS.operator()().Alloc();
+		}
+	else
+		{
+		iMtmAsString = KUnknown.operator()().Alloc();
+		}
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the mtm id
+// ---------------------------------------------------------------------------
+EXPORT_C void CMessageHeader::GetMtmId(TUid& aMtm) const
+	{
+	aMtm = iMtm;	
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the mtm 
+// ---------------------------------------------------------------------------
+EXPORT_C TPtrC CMessageHeader::Mtm() const
+	{
+    return iMtmAsString ? TPtrC( *iMtmAsString ) : TPtrC(); 
+	}
+
+// --------------------------------------------------------------------------- 
+// Sets the messge id
+// ---------------------------------------------------------------------------
+EXPORT_C void CMessageHeader::SetMessageId(const TMsvId aMessageID)
+	{
+	iMessageID = aMessageID;
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the messge id
+// ---------------------------------------------------------------------------
+EXPORT_C void CMessageHeader::GetMessageId(TMsvId& aMessageID) const
+	{
+	aMessageID = iMessageID;	
+	}
+
+// --------------------------------------------------------------------------- 
+// returns the messge id
+// ---------------------------------------------------------------------------
+EXPORT_C TMsvId CMessageHeader::MessageId() const
+	{
+	return iMessageID;	
+	}
+
+// --------------------------------------------------------------------------- 
+// Sets the time
+// ---------------------------------------------------------------------------
+EXPORT_C void CMessageHeader::SetTime(const TTime& aTime)
+	{
+	TDateTime tmp;
+	tmp = aTime.DateTime();
+	iTime = tmp;
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the time
+// ---------------------------------------------------------------------------
+EXPORT_C void CMessageHeader::GetTime(TTime& aTime) const
+	{
+	TDateTime tmp;
+	tmp = iTime.DateTime();
+	aTime = tmp;
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the time
+// ---------------------------------------------------------------------------
+EXPORT_C const TTime& CMessageHeader::Time() const
+	{
+	return iTime;
+	}
+
+// --------------------------------------------------------------------------- 
+// Sets the sender address
+// ---------------------------------------------------------------------------
+EXPORT_C void CMessageHeader::SetFromL(const TDesC& aFrom)
+	{
+	if( iFrom )
+		{
+		delete iFrom;
+		iFrom = NULL;	
+		}
+	iFrom = aFrom.AllocL();	
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the sender address
+// ---------------------------------------------------------------------------
+EXPORT_C const TPtrC CMessageHeader::From() const
+	{
+    return iFrom ? TPtrC( *iFrom ) : TPtrC(); 
+	}
+
+// --------------------------------------------------------------------------- 
+// Sets the subject
+// ---------------------------------------------------------------------------
+EXPORT_C void CMessageHeader::SetSubjectL(const TDesC& aSubject)
+	{
+	if( iSubject )
+		{
+		delete iSubject;
+		iSubject = NULL;	
+		}
+	iSubject = aSubject.AllocL();	
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the subject
+// ---------------------------------------------------------------------------
+EXPORT_C const TPtrC CMessageHeader::Subject() const
+	{
+    return iSubject ? TPtrC( *iSubject ) : TPtrC(); 
+	}
+
+
+// ---------------------------------------------------------------------------
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+EXPORT_C CRecipientList* CRecipientList::CRecipientList::NewL()
+	{
+	CRecipientList* self = new (ELeave) CRecipientList;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+CRecipientList::~CRecipientList()
+	{
+	if ( iRecipients )
+		iRecipients->Reset();
+	
+	delete iRecipients;
+	iRecipientType.Close();
+	}
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+CRecipientList::CRecipientList()
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// SYmbian Constructor
+// ---------------------------------------------------------------------------
+void CRecipientList::ConstructL()
+	{
+	iRecipients = new (ELeave) CDesCArrayFlat(KArrayGranularity);	
+	}
+
+// --------------------------------------------------------------------------- 
+// Appends the recipient type 
+// ---------------------------------------------------------------------------
+EXPORT_C void CRecipientList::AppendL(TMsvRecipientType aValue, const TDesC& aPtr)
+	{
+	iRecipientType.AppendL(aValue);
+	TRAPD(err, iRecipients->AppendL(aPtr));
+	if (err != KErrNone)
+		{
+		iRecipientType.Remove(iRecipientType.Count() - 1);
+		User::Leave(err);
+		}
+	}
+
+// --------------------------------------------------------------------------- 
+// Gives the number of recipients
+// ---------------------------------------------------------------------------
+EXPORT_C TInt CRecipientList::Count() const
+	{
+	return iRecipients->Count();
+	}
+
+// --------------------------------------------------------------------------- 
+// Gives the recipient type
+// ---------------------------------------------------------------------------
+EXPORT_C TMsvRecipientType CRecipientList::Type(TInt aPos) const
+	{
+	return iRecipientType[aPos];
+	}
+
+// --------------------------------------------------------------------------- 
+// Gives recipient address
+// ---------------------------------------------------------------------------
+EXPORT_C const TDesC& CRecipientList::operator[](TInt aIndex) const
+	{
+	HBufC16* temp=(*(HBufC16**)iRecipients->At(aIndex));
+	return *temp;
+	}
+	
+// --------------------------------------------------------------------------- 
+// Resets the recipient list
+// ---------------------------------------------------------------------------
+EXPORT_C void CRecipientList::Reset()
+	{
+	iRecipients->Reset();
+	iRecipientType.Reset();
+	}
+	
+
+// --------------------------------------------------------------------------- 
+// Two Phase Constructor
+// ---------------------------------------------------------------------------
+EXPORT_C CFilterParamInfo* CFilterParamInfo::NewL()
+	{
+	return new(ELeave) CFilterParamInfo;
+	}
+	
+// --------------------------------------------------------------------------- 
+// Destructor
+// ---------------------------------------------------------------------------
+CFilterParamInfo::~CFilterParamInfo()
+	{
+	Reset();
+	}
+
+// --------------------------------------------------------------------------- 
+// Constructor
+// ---------------------------------------------------------------------------
+CFilterParamInfo::CFilterParamInfo()
+	{
+	
+	}
+		
+// --------------------------------------------------------------------------- 
+// Sets the sender address as a filter
+// ---------------------------------------------------------------------------
+EXPORT_C void CFilterParamInfo::AddFromL( const TDesC& aFrom )
+	{
+	if( !iFromArray )
+		{
+		iFromArray = new (ELeave) CDesCArraySeg( KArrayGranularity );
+		}
+		
+	if ( aFrom.Length() )
+		{
+		iFromArray->AppendL( aFrom );	
+		iFilter |= EFilterFrom;
+		}
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the sender address as a filter
+// ---------------------------------------------------------------------------
+EXPORT_C const CDesCArray* CFilterParamInfo::From() const 
+	{
+	return iFromArray;
+	}
+
+
+// --------------------------------------------------------------------------- 
+// Sets the mtm as a filter
+// ---------------------------------------------------------------------------
+EXPORT_C TInt CFilterParamInfo::AddMtmL( const TDesC& aMtm )
+	{
+	if ( aMtm.CompareF( KMessageTypeSMS ) == 0 || aMtm.CompareF( KMessageTypeMMS ) == 0 )
+		{
+		}
+	else
+		{
+		return KErrNotSupported;
+		}
+		
+	if( !iMtmArray )
+		{
+		iMtmArray = new (ELeave) CDesCArraySeg( KArrayGranularity );
+		}
+		
+	if ( aMtm.Length() )
+		{
+		iMtmArray->AppendL( aMtm );	
+		iFilter |= EFilterMtm;
+		}
+	return KErrNone;	
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the mtm array
+// ---------------------------------------------------------------------------
+EXPORT_C const CDesCArray* CFilterParamInfo::Mtm() const
+	{
+	return iMtmArray;
+	}
+
+// --------------------------------------------------------------------------- 
+// Sets subject filter
+// ---------------------------------------------------------------------------
+EXPORT_C void CFilterParamInfo::SetSubjectL( const TDesC& aSubject )
+	{
+	if ( iSubject )
+		{
+		delete iSubject;
+		iSubject = NULL;
+		iFilter ^= ( iFilter & EFilterSubject );
+		}
+	
+	if ( aSubject.Length() )
+		{
+		iSubject = HBufC::NewL( aSubject.Length() );
+		iSubject->Des().Copy( aSubject );
+		iFilter |= EFilterSubject;
+		}
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the filter for subject of message
+// ---------------------------------------------------------------------------
+EXPORT_C TPtrC CFilterParamInfo::Subject() const
+	{
+    return iSubject ? TPtrC( *iSubject ) : TPtrC(); 
+	}
+
+// --------------------------------------------------------------------------- 
+// Sets the sorting order
+// ---------------------------------------------------------------------------
+EXPORT_C void CFilterParamInfo::SetSortType( const TMsvSorting aSortType )
+	{
+    iSortType = aSortType;   
+	}
+	
+
+// --------------------------------------------------------------------------- 
+// Gets the sorting order
+// ---------------------------------------------------------------------------
+EXPORT_C TMsvSorting CFilterParamInfo::SortType() const
+	{
+	return iSortType;
+	}
+
+
+// --------------------------------------------------------------------------- 
+// Sets the message id as filter
+// ---------------------------------------------------------------------------
+EXPORT_C void CFilterParamInfo::SetMessageIdFilter( const TMsvId aMessageId )
+	{
+	iFilter ^= ( iFilter & EFilterId );
+	
+	if( aMessageId != 0)
+		{
+		iMessageId = aMessageId;
+		iFilter |= EFilterId;
+		}
+	}
+	
+// --------------------------------------------------------------------------- 
+// Gets the message id as filter
+// ---------------------------------------------------------------------------
+EXPORT_C TMsvId CFilterParamInfo::MessageId() const
+	{
+	return iMessageId;
+	}
+
+
+// --------------------------------------------------------------------------- 
+// Sets the starting date for date range as a filter
+// ---------------------------------------------------------------------------
+EXPORT_C void CFilterParamInfo::SetStartDateFilter( const TTime& aStartDate )
+	{
+	iFilter ^= ( iFilter & EFilterStartDate );
+	
+
+	if ( aStartDate.Int64() > 0 )
+		{
+		iStartDate = aStartDate;
+		iFilter |= EFilterStartDate;
+		}
+	}
+	
+
+// --------------------------------------------------------------------------- 
+// Gets the starting date for date range as a filter
+// ---------------------------------------------------------------------------
+EXPORT_C const TTime& CFilterParamInfo::StartDate() const
+	{
+	return iStartDate;
+	}
+
+
+// --------------------------------------------------------------------------- 
+// Sets the ending date for date range as a filter
+// ---------------------------------------------------------------------------
+EXPORT_C void CFilterParamInfo::SetEndDate( const TTime& aEndDate )
+	{
+	iFilter ^= ( iFilter & EFilterEndDate );
+
+	if ( aEndDate.Int64() > 0 )
+		{
+		iEndDate = aEndDate;
+		iFilter |= EFilterEndDate;
+		}
+	}
+	
+
+// --------------------------------------------------------------------------- 
+// Gets the ending date for date range as a filter
+// ---------------------------------------------------------------------------
+EXPORT_C const TTime& CFilterParamInfo::EndDate() const
+	{
+	return iEndDate;
+	}
+
+// --------------------------------------------------------------------------- 
+// Gives the iFilter
+// ---------------------------------------------------------------------------
+EXPORT_C TInt CFilterParamInfo::Filter() const
+	{
+	return iFilter;
+	}
+
+
+// --------------------------------------------------------------------------- 
+// Resets the filterinfo object
+// ---------------------------------------------------------------------------
+EXPORT_C void CFilterParamInfo::Reset()
+	{
+	if ( iFromArray )
+		{
+		iFromArray->Reset();
+		}
+		
+	if ( iMtmArray )
+		{
+		iMtmArray->Reset();
+		}
+		
+	delete iFromArray;
+	iFromArray = NULL;
+	delete iMtmArray;
+	iMtmArray = NULL;
+	delete iSubject;
+	iSubject = NULL;
+	iFilter = 0;
+	}
+
+CFilterParamInfo& CFilterParamInfo::operator=( const CFilterParamInfo& aFilterParamInfo )
+	{
+	if ( iFromArray )
+		{
+		iFromArray->Reset();
+		delete iFromArray;
+		iFromArray = NULL;
+		}
+	
+	if ( aFilterParamInfo.iFromArray )
+		{
+		TInt count = aFilterParamInfo.iFromArray->Count();
+		for( TInt index = 0; index < count; index++ )
+			{
+			AddFromL((*(aFilterParamInfo.iFromArray))[index]);
+			}
+		}
+
+	if ( iMtmArray )
+		{
+		iMtmArray->Reset();
+		delete iMtmArray;
+		iMtmArray = NULL;
+		}
+	
+	if ( aFilterParamInfo.iMtmArray )
+		{
+		TInt count = aFilterParamInfo.iMtmArray->Count();
+		for( TInt index = 0; index < count; index++ )
+			{
+			AddMtmL((*(aFilterParamInfo.iMtmArray))[index]);
+			}
+		}
+
+	delete iSubject;
+	iSubject = NULL;
+	if( aFilterParamInfo.iSubject )
+		{
+		iSubject = aFilterParamInfo.Subject().AllocL();
+		}
+
+	iSortType = aFilterParamInfo.iSortType;
+
+	iMessageId = aFilterParamInfo.iMessageId;
+
+	iStartDate = aFilterParamInfo.iStartDate;
+
+	iEndDate = aFilterParamInfo.iEndDate;
+
+	iFilter = aFilterParamInfo.iFilter;
+	
+	return *this;
+	}
+
+
+
+// --------------------------------------------------------------------------- 
+// Two Phase constructor
+// ---------------------------------------------------------------------------
+EXPORT_C CSendMessageParams* CSendMessageParams::NewL()
+	{
+	return new(ELeave) CSendMessageParams;
+	}
+	
+
+// --------------------------------------------------------------------------- 
+// Destructor
+// ---------------------------------------------------------------------------
+CSendMessageParams::~CSendMessageParams()
+	{
+    if ( iRecipientArray )
+	    {
+	    iRecipientArray->Reset();
+	    }
+
+    if ( iAttachmentArray )
+	    {
+	    iAttachmentArray->ResetAndDestroy();
+	    }
+
+    delete iRecipientArray;
+    delete iAttachmentArray;
+    delete iSubject;
+    delete iBodyText;
+ 	}
+	
+// --------------------------------------------------------------------------- 
+// Constructor
+// ---------------------------------------------------------------------------
+CSendMessageParams::CSendMessageParams()
+	{
+	}
+
+
+// --------------------------------------------------------------------------- 
+// Adds Recipient 
+// ---------------------------------------------------------------------------
+EXPORT_C void CSendMessageParams::AddRecipientL( const TDesC& aRecipient, TMsvRecipientType aType )
+	{
+	if ( !iRecipientArray )
+		{
+	    iRecipientArray = CRecipientList::NewL();
+		}
+		
+	if ( aRecipient.Length() )
+		{
+			iRecipientArray->AppendL( aType, aRecipient );
+		}
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the Recipient arrary
+// ---------------------------------------------------------------------------
+EXPORT_C const CRecipientList* CSendMessageParams::RecipientArray() const
+	{
+	return iRecipientArray;
+	}
+
+
+// --------------------------------------------------------------------------- 
+// Adds attachment 
+// ---------------------------------------------------------------------------
+EXPORT_C void CSendMessageParams::AddAttachmentL( CMsvAttachment* aAttachment )
+	{
+    if ( !iAttachmentArray )
+	    {
+	    iAttachmentArray = new (ELeave) CArrayPtrSeg<CMsvAttachment>( KArrayGranularity );
+	    }
+	    
+	if ( aAttachment )
+		{
+		iAttachmentArray->AppendL( aAttachment );
+		}
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the array of attachment information
+// ---------------------------------------------------------------------------
+EXPORT_C const CArrayPtr<CMsvAttachment>* CSendMessageParams::AttachmentArray()
+	{
+	return iAttachmentArray;
+	}
+	
+// --------------------------------------------------------------------------- 
+// Sets the subject for message
+// ---------------------------------------------------------------------------
+EXPORT_C void CSendMessageParams::SetSubjectL( const TDesC& aSubject )
+	{
+	if ( iSubject )
+		{
+		delete iSubject;
+		iSubject = NULL;
+		}
+	
+	if ( aSubject.Length() )
+		{
+		iSubject = HBufC::NewL( aSubject.Length() );
+		iSubject->Des().Copy( aSubject );
+		}
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the subject for message
+// ---------------------------------------------------------------------------
+EXPORT_C const TPtrC CSendMessageParams::Subject() const
+	{
+    return iSubject ? TPtrC( *iSubject ) : TPtrC(); 
+	}
+
+
+// --------------------------------------------------------------------------- 
+// Sets the body for message
+// ---------------------------------------------------------------------------
+EXPORT_C void CSendMessageParams::SetBodyTextL( const TDesC& aMsg )
+	{
+	if ( iBodyText )
+		{
+		delete iBodyText;
+		iBodyText = NULL;
+		}
+	
+	if ( aMsg.Length() )
+		{
+		iBodyText = HBufC::NewL( aMsg.Length() );
+		iBodyText->Des().Copy( aMsg );
+		}
+	}
+
+// --------------------------------------------------------------------------- 
+// Appends the message to existing bodytext
+// ---------------------------------------------------------------------------
+void CSendMessageParams::AppendBodyTextL( const TDesC& aMsg )
+	{
+	if ( aMsg.Length() )
+		{
+		HBufC* tmpMsgBody = HBufC::NewL( aMsg.Length() + BodyText().Length() );
+		CleanupStack::PushL( tmpMsgBody );
+		tmpMsgBody->Des().Copy( BodyText() );
+		tmpMsgBody->Des().Append( aMsg );
+		delete iBodyText;
+		iBodyText = tmpMsgBody;
+		CleanupStack::Pop( tmpMsgBody );
+		}
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the body for message
+// ---------------------------------------------------------------------------
+EXPORT_C const TPtrC CSendMessageParams::BodyText() const
+	{
+    return iBodyText ? TPtrC( *iBodyText ) : TPtrC(); 
+	}
+
+// --------------------------------------------------------------------------- 
+// Sets the templateid  
+// ---------------------------------------------------------------------------
+EXPORT_C void CSendMessageParams::SetTemplateId( const TMsvId aTemplateId )
+	{
+	iTemplateId = aTemplateId;
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the templateid  
+// ---------------------------------------------------------------------------
+EXPORT_C TMsvId CSendMessageParams::TemplateId() const
+	{
+	return iTemplateId;
+	}
+
+// --------------------------------------------------------------------------- 
+// Sets paramter to launch editor depends on argument value  
+// ---------------------------------------------------------------------------
+EXPORT_C void CSendMessageParams::SetLaunchEditor( const TBool aLaunchEditor )
+	{
+	iLaunchEditor = aLaunchEditor;
+	}
+	
+// --------------------------------------------------------------------------- 
+// Gets the LaunchEditor value  
+// ---------------------------------------------------------------------------
+EXPORT_C TBool CSendMessageParams::LaunchEditor() const
+	{
+	return iLaunchEditor;
+	}
+
+// --------------------------------------------------------------------------- 
+// Sets the message type
+// ---------------------------------------------------------------------------
+EXPORT_C TInt CSendMessageParams::SetMessageTypeL( const TDesC& aMessageType )
+	{
+	if ( aMessageType.CompareF( KMessageTypeSMS ) == 0 )
+		{
+		iMessageType = KSenduiMtmSmsUid;
+		}
+	else if ( aMessageType.CompareF( KMessageTypeMMS ) == 0 )
+		{
+		iMessageType = KSenduiMtmMmsUid;
+		}
+	else
+		{
+		return KErrNotSupported;
+		}
+	return KErrNone;	
+	}
+
+// --------------------------------------------------------------------------- 
+// Gets the message type
+// ---------------------------------------------------------------------------	
+EXPORT_C TUid CSendMessageParams::MessageType() const
+	{
+	return iMessageType;
+	}
+
+CSendMessageParams& CSendMessageParams::operator=(const CSendMessageParams& aSendMessageParams )
+	{
+	iMessageType = aSendMessageParams.iMessageType;
+
+	iTemplateId = aSendMessageParams.iTemplateId;
+	
+	iLaunchEditor = aSendMessageParams.iLaunchEditor;
+	
+	delete iSubject;
+	iSubject = NULL;
+	if( aSendMessageParams.iSubject )
+		{
+		iSubject = aSendMessageParams.Subject().AllocL();
+		}
+
+	delete iBodyText;
+	iBodyText = NULL;
+	if( aSendMessageParams.iBodyText )
+		{
+		iBodyText = aSendMessageParams.BodyText().AllocL();
+		}
+	
+	if ( iRecipientArray )
+		{
+		iRecipientArray->Reset();
+		delete iRecipientArray;
+		iRecipientArray = NULL;
+		}
+	
+	if( aSendMessageParams.iRecipientArray )
+		{
+		TInt count = aSendMessageParams.iRecipientArray->Count();
+		for(TInt index = 0; index < count; index++)
+			{
+			AddRecipientL( (*(aSendMessageParams.iRecipientArray))[index], 
+									aSendMessageParams.iRecipientArray->Type(index) );
+			}
+		}
+	
+	if ( iAttachmentArray )
+		{
+		iAttachmentArray->ResetAndDestroy();
+		delete iAttachmentArray;
+		iAttachmentArray = NULL;
+		}
+	
+	if ( aSendMessageParams.iAttachmentArray )
+		{
+		TInt count = aSendMessageParams.iAttachmentArray->Count();
+		for(TInt index = 0; index < count; index++)
+			{
+			CMsvAttachment* element = aSendMessageParams.iAttachmentArray->At( index );
+			CMsvAttachment* newElement = CMsvAttachment::NewL( *element );
+			CleanupStack::PushL( newElement );
+			AddAttachmentL( newElement );
+			CleanupStack::Pop( newElement );
+			}
+		}
+
+	return *this;
+	}
+
+/**
+ * Two Phase Constructor
+*/ 
+EXPORT_C CMessageAttachInfo* CMessageAttachInfo::NewL()
+	{
+	return new(ELeave) CMessageAttachInfo;
+	}
+
+/**
+ * Constructor
+*/ 
+CMessageAttachInfo::CMessageAttachInfo()
+	{
+	}
+
+/**
+ * Destructor
+*/ 
+CMessageAttachInfo::~CMessageAttachInfo()
+	{
+	delete iName;
+	delete iMimeType;
+	}
+
+/** 
+ * Sets the Attachment Name
+ * @param aName Attachment Name
+ * @return void
+*/
+EXPORT_C void CMessageAttachInfo::SetNameL(const TDesC& aName)
+	{
+	if( iName )
+		{
+		delete iName;
+		iName = NULL;	
+		}
+	iName = aName.AllocL();	
+	}
+
+/** 
+ * Gets the Attachment Name
+ * @return TPtrC Attachment Name
+*/
+EXPORT_C const TPtrC CMessageAttachInfo::Name() const
+	{
+	return iName ? TPtrC( *iName ) : TPtrC(); 
+	}
+
+/** 
+ * Sets the File handle
+ * @param aFile File handle
+ * @return void
+*/
+EXPORT_C void CMessageAttachInfo::SetFileHandle( RFile aFile)
+	{
+	iFile = aFile;
+	}
+
+/** 
+ * Gets the File handle
+ * @return RFile File handle
+*/
+EXPORT_C RFile CMessageAttachInfo::FileHandle() const
+	{
+	return iFile;
+	}
+
+/** 
+ * Sets the File size
+ * @param aSize File size
+ * @return void
+*/
+EXPORT_C void CMessageAttachInfo::SetSize( TInt32 aSize)
+	{
+	iSize = aSize;
+	}
+
+/** 
+ * Gets the File size
+ * @return File size
+*/
+EXPORT_C TInt32 CMessageAttachInfo::Size() const
+	{
+	return iSize;
+	}
+
+/** 
+ * Sets the Mime type
+ * @param aMimeType Mime type
+ * @return void
+*/
+EXPORT_C void CMessageAttachInfo::SetMimeTypeL(const TDesC& aMimeType)
+	{
+	if( iMimeType )
+		{
+		delete iMimeType;
+		iMimeType = NULL;	
+		}
+	iMimeType = aMimeType.AllocL();	
+	}
+
+/** 
+ * Gets the Mime type
+ * @return TPtrC Mime type
+*/
+EXPORT_C const TPtrC CMessageAttachInfo::MimeType() const
+	{
+	return iMimeType ? TPtrC( *iMimeType ) : TPtrC(); 
+	}
+
+
+
+/**
+ * Two Phase Constructor
+*/ 
+EXPORT_C CMessageDetailInfo* CMessageDetailInfo::NewL()
+	{
+	return new(ELeave) CMessageDetailInfo;
+	}
+
+/**
+ * Constructor
+*/ 
+CMessageDetailInfo::CMessageDetailInfo()
+	{
+	}
+
+/**
+ * Destructor
+*/ 
+CMessageDetailInfo::~CMessageDetailInfo()
+	{
+	if ( iRecipientList )
+		iRecipientList->Reset();
+	
+	if ( iAttachEntries )
+		iAttachEntries->ResetAndDestroy();
+	
+	delete iBodyText;
+	delete iFrom;
+	delete iRecipientList;
+	delete iAttachEntries;
+	}
+
+/**
+ * Adds Recipient 
+ * @param aRecipient recipient address
+ * @param aType recipient type
+*/
+EXPORT_C void CMessageDetailInfo::AddRecipientL( const TDesC& aRecipient, TMsvRecipientType aType )
+	{
+	if ( !iRecipientList )
+		{
+	    iRecipientList = CRecipientList::NewL();
+		}
+		
+	if ( aRecipient.Length() )
+		{
+			iRecipientList->AppendL( aType, aRecipient );
+		}
+	}
+
+/**
+ * Gives the receipient array
+ * @return CRecipientList*
+*/ 
+EXPORT_C const CRecipientList* CMessageDetailInfo::RecipientArray() const
+	{
+	return iRecipientList;
+	}
+
+/** 
+ * Sets the sender address
+ * @param aFrom Sender address
+ * @return void
+*/
+EXPORT_C void CMessageDetailInfo::SetFromL(const TDesC& aFrom)
+	{
+	if( iFrom )
+		{
+		delete iFrom;
+		iFrom = NULL;	
+		}
+		
+	iFrom = aFrom.AllocL();	
+	}
+
+/** 
+ * Gets the sender address
+ * @return TPtrC Sender address
+*/
+EXPORT_C const TPtrC CMessageDetailInfo::From() const
+	{
+	return iFrom ? TPtrC( *iFrom ) : TPtrC(); 
+	}
+
+/**
+ * Sets the body for message
+ * @param aMsg Body for message
+*/
+EXPORT_C void CMessageDetailInfo::SetBodyTextL( const TDesC& aMsg )
+	{
+	if( iBodyText )
+		{
+		delete iBodyText;
+		iBodyText = NULL;	
+		}
+		
+	iBodyText = aMsg.AllocL();	
+	}
+
+/**
+ * Gets the body text 
+ * @return  TPtrC 
+*/
+EXPORT_C const TPtrC CMessageDetailInfo::BodyText() const
+	{
+	return iBodyText ? TPtrC( *iBodyText ) : TPtrC(); 
+	}
+
+/** 
+ * Sets the message id
+ * @param aMessageID Message ID
+ * @return void
+*/
+EXPORT_C void CMessageDetailInfo::SetMessageId(const TMsvId aMessageId)
+	{
+	iMessageId = aMessageId;
+	}
+
+/** 
+ * Gets the message id
+ * @return TMsvId Message ID
+*/
+EXPORT_C TMsvId CMessageDetailInfo::MessageId() const
+	{
+	return iMessageId;
+	}
+
+/**
+ * Adds attachment 
+ * @param aAttachment attachment information
+*/
+EXPORT_C void CMessageDetailInfo::AddAttachmentInfoL( CMessageAttachInfo* aAttachment )
+	{
+   if ( !iAttachEntries )
+	    {
+	    iAttachEntries = new (ELeave) CArrayPtrSeg<CMessageAttachInfo>( KArrayGranularity );
+	    }
+	    
+	if ( aAttachment )
+		{
+		iAttachEntries->AppendL( aAttachment );
+		}
+	}
+
+/**
+ * Gives the attachment array
+ * @return CArrayPtr<CMsvAttachment>*
+*/ 
+EXPORT_C const CArrayPtr<CMessageAttachInfo>* CMessageDetailInfo::AttachmentInfoArray()
+	{
+	return iAttachEntries;
+	}
+