messagingfw/sendas/test/sendastestmtm/src/csendastestmessage.cpp
changeset 0 8e480a14352b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/sendas/test/sendastestmtm/src/csendastestmessage.cpp	Mon Jan 18 20:36:02 2010 +0200
@@ -0,0 +1,130 @@
+// Copyright (c) 2004-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 "csendastestmessage.h"
+
+#include <msvstore.h>
+
+#include "csendastestaddress.h"
+
+const TUid KUidSendAsTestMessageStream	= {0x10204289};
+const TInt KSendAsTestMessageVersion	= 1;
+
+EXPORT_C CSendAsTestMessage* CSendAsTestMessage::NewL()
+	{
+	CSendAsTestMessage* self = new (ELeave) CSendAsTestMessage();
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;	
+	}
+
+EXPORT_C CSendAsTestMessage::~CSendAsTestMessage()
+	{
+	iAddresses.ResetAndDestroy();
+	delete iSubject;
+	}
+
+CSendAsTestMessage::CSendAsTestMessage()
+: CBase()
+	{
+	}
+
+void CSendAsTestMessage::ConstructL()
+	{
+	}
+
+EXPORT_C const RPointerArray<CSendAsTestAddress>& CSendAsTestMessage::Addresses() const
+	{
+	return iAddresses;
+	}
+
+EXPORT_C RPointerArray<CSendAsTestAddress>& CSendAsTestMessage::Addresses()
+	{
+	return iAddresses;
+	}
+
+EXPORT_C void CSendAsTestMessage::SetSubjectL(const TDesC& aSubject)
+	{
+	HBufC* temp = aSubject.AllocL();
+	delete iSubject;
+	iSubject = temp;	
+	}
+
+EXPORT_C const TDesC& CSendAsTestMessage::Subject() const
+	{
+	return iSubject == NULL ? KNullDesC() : *iSubject;
+	}
+
+EXPORT_C void CSendAsTestMessage::SetBioTypeL(const TUid aBioType)
+	{
+	iBioType = aBioType;
+	}
+
+EXPORT_C TUid CSendAsTestMessage::BioType() const
+	{
+	return iBioType;
+	}
+
+EXPORT_C void CSendAsTestMessage::RestoreL(CMsvStore& aStore)
+	{
+	RMsvReadStream in;
+	in.OpenLC(aStore, KUidSendAsTestMessageStream);
+	InternalizeL(in);
+	CleanupStack::PopAndDestroy(&in);
+	}
+	
+EXPORT_C void CSendAsTestMessage::StoreL(CMsvStore& aStore) const
+	{
+	RMsvWriteStream out;
+	out.AssignLC(aStore, KUidSendAsTestMessageStream);
+	ExternalizeL(out);
+	out.CommitL();
+	CleanupStack::PopAndDestroy(&out);
+	}
+
+void CSendAsTestMessage::InternalizeL(RReadStream& aStream)
+	{
+	aStream.ReadInt16L(); //version. Not used yet
+
+	iAddresses.ResetAndDestroy();
+	TInt count = aStream.ReadInt32L();
+	while(count--)
+		{
+		CSendAsTestAddress* addressee = CSendAsTestAddress::NewL();  
+		CleanupStack::PushL(addressee);
+		addressee->InternalizeL(aStream);
+		iAddresses.AppendL(addressee);
+		CleanupStack::Pop(addressee);
+		}
+	HBufC* subject = HBufC::NewL(aStream, KMaxTInt);
+	delete iSubject;
+	iSubject = subject;
+	aStream >> iBioType;
+	}
+	
+void CSendAsTestMessage::ExternalizeL(RWriteStream& aStream) const
+	{
+	aStream.WriteInt16L(KSendAsTestMessageVersion);
+
+	TInt count = iAddresses.Count();
+	aStream.WriteInt32L(count);
+
+	for (TInt i=0; i<count; ++i)
+		iAddresses[i]->ExternalizeL(aStream);
+	
+	aStream << Subject();
+	aStream << iBioType;
+	}