pimappservices/calendar/shared/src/agmcontent.cpp
changeset 0 f979ecb2b13e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappservices/calendar/shared/src/agmcontent.cpp	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,143 @@
+// Copyright (c) 2005-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 "agmcontent.h"
+#include <s32stor.h>
+
+
+EXPORT_C CAgnContent::CAgnContent() : iType(CCalContent::EDispositionUnknown)
+	{
+	}
+
+CAgnContent::CAgnContent(CCalContent::TDisposition aType) : iType(aType)
+	{
+	}
+
+EXPORT_C CAgnContent::~CAgnContent()
+	{
+	delete iContent;
+	delete iMimeType;
+	}
+	
+/** Takes ownership of aSmallContent and aContentMimeType */
+EXPORT_C void CAgnContent::SetContentL(TDesC8* aSmallContent, TDesC8* aContentMimeType, CCalContent::TDisposition aType)
+	{
+	delete iContent;
+	iContent = aSmallContent;
+
+	delete iMimeType;
+	iMimeType = aContentMimeType;
+
+	iType = aType;
+	}
+
+
+EXPORT_C const TDesC8& CAgnContent::Content() const
+	{
+	if (iContent == NULL)
+		{
+		return KNullDesC8();
+		}
+	
+	return *iContent;
+	}
+
+
+EXPORT_C const TDesC8& CAgnContent::MimeType() const
+	{
+	if (iMimeType == NULL)
+		{
+		return KNullDesC8();
+		}
+	
+	return *iMimeType;
+	}
+
+
+EXPORT_C CCalContent::TDisposition CAgnContent::Type() const
+	{
+	return iType;
+	}
+
+
+EXPORT_C CAgnContent* CAgnContent::CloneL() const
+	{
+	CAgnContent* clone = new (ELeave) CAgnContent();
+	CleanupStack::PushL(clone);
+	
+	HBufC8* content = NULL;
+	if (iContent)
+		{
+		content = iContent->AllocL();
+		CleanupStack::PushL(content);
+		}
+		
+	HBufC8* mimeType = NULL;
+	if (iMimeType)
+		{
+		mimeType = iMimeType->AllocL();
+		CleanupStack::PushL(mimeType);
+		}
+		
+	clone->SetContentL(content, mimeType, iType); // takes ownership of content & mimeType.
+	
+	if (mimeType != NULL)
+		{
+		CleanupStack::Pop(mimeType);
+		}
+	if (content != NULL)
+		{
+		CleanupStack::Pop(content);
+		}
+		
+	CleanupStack::Pop(clone);
+	return clone;
+	}
+
+
+EXPORT_C void CAgnContent::InternalizeL(RReadStream& aStream)
+	{
+	delete iContent;
+	iContent = NULL;
+	iContent = HBufC8::NewL(aStream, KMaxTInt);
+	
+	delete iMimeType;
+	iMimeType = NULL;
+	iMimeType = HBufC8::NewL(aStream, KMaxTInt);
+	
+	TInt32 disposition;
+	aStream >> disposition;
+	iType = static_cast<CCalContent::TDisposition>(disposition);
+	}
+	
+
+EXPORT_C void CAgnContent::ExternalizeL(RWriteStream& aStream) const
+	{
+	aStream << Content(); // Use accessor so a KNullDesC8 is stored if content not set.
+	aStream << MimeType(); // Use accessor so a KNullDesC8 is stored if mime type not set.
+	aStream.WriteInt32L(iType);
+	}
+
+void CAgnContent::SetContent(TDesC8* aContent)
+	{
+	delete iContent;
+	iContent = aContent;
+	}
+
+void CAgnContent::SetMimeType(TDesC8* aMimeType)
+	{
+	delete iMimeType;
+	iMimeType = aMimeType;
+	}