diff -r f5050f1da672 -r 04becd199f91 javaextensions/location/landmarks/src/clapiaddressinfo.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaextensions/location/landmarks/src/clapiaddressinfo.cpp Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,140 @@ +/* +* Copyright (c) 2008 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: Holds Location API address information + * +*/ + + +// INTERNAL INCLUDES +#include "clapiaddressinfo.h" +#include "lapipanics.h" +#include "mlapilandmark.h" +#include "logger.h" + +// --------------------------------------------------------------------------- +// CLAPIAddressInfo::NewL +// --------------------------------------------------------------------------- +// +CLAPIAddressInfo* CLAPIAddressInfo::NewL() +{ + JELOG2(EJavaLocation); + CLAPIAddressInfo* self = CLAPIAddressInfo::NewLC(); + CleanupStack::Pop(self); + return self; +} + +// --------------------------------------------------------------------------- +// CLAPIAddressInfo::NewLC +// --------------------------------------------------------------------------- +// +CLAPIAddressInfo* CLAPIAddressInfo::NewLC() +{ + JELOG2(EJavaLocation); + CLAPIAddressInfo* self = new(ELeave) CLAPIAddressInfo(); + CleanupStack::PushL(self); + return self; +} + +// --------------------------------------------------------------------------- +// CLAPIAddressInfo::~CLAPIAddressInfo +// --------------------------------------------------------------------------- +// +CLAPIAddressInfo::~CLAPIAddressInfo() +{ + JELOG2(EJavaLocation); + iValues.ResetAndDestroy(); + iIds.Close(); +} + +// --------------------------------------------------------------------------- +// CLAPIAddressInfo::ValueCount +// --------------------------------------------------------------------------- +// +TInt CLAPIAddressInfo::ValueCount() const +{ + JELOG2(EJavaLocation); + return iIds.Count(); +} + +// --------------------------------------------------------------------------- +// CLAPIAddressInfo::SetValueL +// --------------------------------------------------------------------------- +// +void CLAPIAddressInfo::SetValueL(TInt aFieldId, const TDesC* aValue) +{ + JELOG2(EJavaLocation); + __ASSERT_DEBUG(aFieldId > 0 && aFieldId <= ELAPINumAddressInfos, + LAPIError::Panic(ELAPIPanicInvalidFieldId)); + + TInt error = KErrNone; + TInt index = iIds.Find(aFieldId); + HBufC* value = aValue ? aValue->AllocLC() : NULL; + // The information already exists in this info so replace the existing + // Remove the old value because the pointer array owns the object + if (index != KErrNotFound) + { + delete iValues[index]; + iValues.Remove(index); + iValues.InsertL(value, index); + // Do not leave yet since "value" may be in cleanup stack + error = iIds.Insert(aFieldId, index); + } + else // New information, append to the end + { + iValues.AppendL(value); + // Do not leave yet since "value" may be in cleanup stack + error = iIds.Append(aFieldId); + } + + // Pop the value if it was added to the cleanup stack + if (value) + { + CleanupStack::Pop(value); + } + + // Check the error and keep the arrays in sync with each other + if (error != KErrNone) + { + delete iValues[index]; + iValues.Remove(index); + User::Leave(error); + } +} + +// --------------------------------------------------------------------------- +// CLAPIAddressInfo::Value +// --------------------------------------------------------------------------- +// +const TDesC* CLAPIAddressInfo::Value(TInt aFieldId) const +{ + JELOG2(EJavaLocation); + TInt index = iIds.Find(aFieldId); + if (index != KErrNotFound) + { + return iValues[index]; + } + + return NULL; // Not found +} + +// --------------------------------------------------------------------------- +// CLAPIAddressInfo::CLAPIAddressInfo +// --------------------------------------------------------------------------- +// +CLAPIAddressInfo::CLAPIAddressInfo() +{ + JELOG2(EJavaLocation); +} + +// End of file