diff -r 000000000000 -r 8e480a14352b messagingfw/msgsrvnstore/server/src/CMsvAttributeManager.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/msgsrvnstore/server/src/CMsvAttributeManager.cpp Mon Jan 18 20:36:02 2010 +0200 @@ -0,0 +1,208 @@ +// 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 "CMsvAttributeManager.h" +#include + +CDesC8Attribute::CDesC8Attribute() + { + } + +CDesC8Attribute::~CDesC8Attribute() + { + delete iAttribute; + } + +CMsvAttributeManager* CMsvAttributeManager::NewL(CMsvAttachment& aAttachment) + { + CMsvAttributeManager* self = new(ELeave) CMsvAttributeManager(aAttachment); + return self; + } + +CMsvAttributeManager::CMsvAttributeManager(CMsvAttachment& aAttachment) + : iAttachment(aAttachment) + { + } + +CMsvAttributeManager::~CMsvAttributeManager() + { + iDesC8Attributes.ResetAndDestroy(); + iIntAttributes.Reset(); + } + +void CMsvAttributeManager::CloneL(CMsvAttributeManager& aAttributeManager) + { + iDesC8Attributes.ResetAndDestroy(); + for( TInt ii=0; iiiUid = attribToCopy->iUid; + attrib->iAttribute = attribToCopy->iAttribute->AllocL(); + User::LeaveIfError(iDesC8Attributes.Append(attrib)); + CleanupStack::Pop(attrib); + } + + iIntAttributes.Reset(); + for( TInt ii=0; iiiUid = TUid::Uid(aStream.ReadInt32L()); + attrib->iAttribute = HBufC8::NewL(aStream, KMaxTInt); + User::LeaveIfError(iDesC8Attributes.Append(attrib)); + CleanupStack::Pop(attrib); + } + + // Int attributes + iIntAttributes.Reset(); + attributeCount = aStream.ReadInt32L(); + for( TInt ii=0; iiiUid.iUid); + aStream << *(attrib->iAttribute); + } + + // Int attributes + attributeCount = iIntAttributes.Count(); + aStream.WriteInt32L(attributeCount); + for( TInt ii=0; iiiUid = aAttributeId; + attrib->iAttribute = aAttribute.AllocL(); + CleanupStack::Pop(attrib); + } + +TInt CMsvAttributeManager::GetDesC8Attribute(TUid aAttributeId, TPtrC8& aAttribute) const + { + TInt attribIndex = FindDesC8Attribute(aAttributeId); + if( attribIndex != KErrNotFound ) + { + aAttribute.Set(*(iDesC8Attributes[attribIndex]->iAttribute)); + return KErrNone; + } + + return KErrNotFound; + } + +void CMsvAttributeManager::RemoveDesC8Attribute(TUid aAttributeId) + { + TInt attribIndex = FindDesC8Attribute(aAttributeId); + if( attribIndex != KErrNotFound ) + { + delete iDesC8Attributes[attribIndex]; + iDesC8Attributes.Remove(attribIndex); + } + } + +TInt CMsvAttributeManager::FindDesC8Attribute(TUid aUid) const + { + for( TInt ii=0; iiiUid == aUid ) + return ii; + } + + return KErrNotFound; + } + +void CMsvAttributeManager::SetIntAttributeL(TUid aAttributeId, TInt aAttribute) + { + TInt attribIndex = FindIntAttribute(aAttributeId); + if( attribIndex != KErrNotFound ) + iIntAttributes.Remove(attribIndex); + + TIntAttribute attrib; + attrib.iUid = aAttributeId; + attrib.iAttribute = aAttribute; + User::LeaveIfError(iIntAttributes.Append(attrib)); + } + +TInt CMsvAttributeManager::GetIntAttribute(TUid aAttributeId, TInt& aAttribute) const + { + TInt attribIndex = FindIntAttribute(aAttributeId); + if( attribIndex != KErrNotFound ) + { + aAttribute = iIntAttributes[attribIndex].iAttribute; + return KErrNone; + } + + return KErrNotFound; + } + +void CMsvAttributeManager::RemoveIntAttribute(TUid aAttributeId) + { + TInt attribIndex = FindIntAttribute(aAttributeId); + if( attribIndex != KErrNotFound ) + iIntAttributes.Remove(attribIndex); + } + +TInt CMsvAttributeManager::FindIntAttribute(TUid aUid) const + { + for( TInt ii=0; ii