applayerpluginsandutils/bookmarksupport/src/bkmrkattachment.cpp
changeset 0 b16258d2340f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerpluginsandutils/bookmarksupport/src/bkmrkattachment.cpp	Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,112 @@
+// 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:
+// Internal class for manipulating bookmark extended properties.
+// @internalComponent
+// 
+//
+
+#include "bkmrkattachment.h"
+
+CBkmrkAttachment* CBkmrkAttachment::NewL(CRepository& aRepository, const TDesC8& aData)
+	{
+	CBkmrkAttachment* self = new (ELeave) CBkmrkAttachment();
+	CleanupStack::PushL(self);
+	self->ConstructL(aRepository, aData);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CBkmrkAttachment::CBkmrkAttachment() 
+	: CRepositoryAccessor(), iId(Bookmark::KNullAttachmentID)
+	{
+	}
+
+CBkmrkAttachment::~CBkmrkAttachment()
+	{
+	delete iData;
+	}
+
+void CBkmrkAttachment::ConstructL(CRepository& aRepository, const TDesC8& aData)
+	{
+	SetRepository(aRepository);
+	SetDataL(aData);
+	}
+
+Bookmark::TAttachmentId CBkmrkAttachment::Id() const
+	{
+	return iId;
+	}
+	
+void CBkmrkAttachment::SetIdL()
+	{
+	iId = NextIndexL();
+	}
+
+TInt CBkmrkAttachment::Size() const
+	{
+	return iData->Size();
+	}
+	
+const TDesC8& CBkmrkAttachment::Data() const
+	{
+	return *iData;
+	}
+
+void CBkmrkAttachment::SetDataL(const TDesC8& aData)
+	{
+	// The aData must be smaller that the maximim data storage size
+	__ASSERT_ALWAYS(aData.Length() <= Bookmark::KMaxDataLength, User::Panic(Bookmark::KBookmarkErrTooLong, KErrArgument));
+	
+	delete iData;
+	iData = NULL;
+	iData = aData.AllocL();
+	SetDirty();
+	}
+
+TUint32 CBkmrkAttachment::IndexBase()
+	{
+	return (iId << KIconIndexShift);
+	}
+	
+void CBkmrkAttachment::SetIdFromIndexBase(TUint32 aIndexBase)
+	{
+	iId = aIndexBase >> KIconIndexShift;
+	}
+
+void CBkmrkAttachment::TransNewL()
+	{
+	// create entries in the repository
+	iRepository->Create(IndexBase() + KIconDataIndex, Data());
+	}
+	
+void CBkmrkAttachment::TransSaveL()
+	{
+	iRepository->Set(IndexBase() + KIconDataIndex, Data());
+	}
+
+void CBkmrkAttachment::TransLoadL()
+	{
+	HBufC8* dataBuffer = HBufC8::NewLC(Bookmark::KMaxUriLength);
+	TPtr8 dataPtr = dataBuffer->Des();
+	User::LeaveIfError(iRepository->Get(IndexBase() + KIconDataIndex, dataPtr));
+	SetDataL(dataPtr);
+	CleanupStack::PopAndDestroy(dataBuffer);
+	SetClean();
+	}
+
+void CBkmrkAttachment::TransRemoveL()
+	{
+	iRepository->Delete(IndexBase() + KIconDataIndex);
+	}
+