--- /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);
+ }
+