/* * Copyright (c) 1997-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 "cntvcardutils.h" // System Includes #include // User includes #include // Constants const TInt KCntVCardItemAndLabelGranularity = 7; /** * Panic the thread with CNTVCARD as the category * * @param aPanic Panic number */ GLDEF_C void Panic(TCntVCardPanic aPanic) { _LIT(KCntVCardPanicCategory,"CNTVCARD"); User::Panic(KCntVCardPanicCategory,aPanic); } /** * Array clean-up method */ GLDEF_C void CleanUpResetAndDestroy(TAny *aArray) { if (aArray) { CArrayPtr* array=(CArrayPtr*)aArray; array->ResetAndDestroy(); delete array; } } /** * Standard Epoc32 Dll Entry point */ /** * Constructor */ CVCardItemAndLabel::CVCardItemAndLabel() { } /** * Destructor */ CVCardItemAndLabel::~CVCardItemAndLabel() { delete iItems; delete iLabels; } /** * Second phase constructor */ void CVCardItemAndLabel::ConstructL() { iItems = new(ELeave) CDesCArrayFlat(KCntVCardItemAndLabelGranularity); iLabels = new(ELeave) CDesCArrayFlat(KCntVCardItemAndLabelGranularity); } /** * Static constructor * @return The constructed item and label */ CVCardItemAndLabel* CVCardItemAndLabel::NewLC() { CVCardItemAndLabel* self = new(ELeave) CVCardItemAndLabel(); CleanupStack::PushL(self); self->ConstructL(); return self; } /** * Add an item * @param aItem The item name */ void CVCardItemAndLabel::AddItemL(const TDesC& aItem) { iItems->AppendL(aItem); } /** * Add a label for an item * @param aLabel The item label */ void CVCardItemAndLabel::AddLabelL(const TDesC& aLabel) { iLabels->AppendL(aLabel); } /** * The number of items present * @return The number of items present */ TInt CVCardItemAndLabel::ItemCount() const { return iItems->Count(); } /** * The number of labels present * @return The number of labels present */ TInt CVCardItemAndLabel::LabelCount() const { return iLabels->Count(); } /** * Access an item by index * @return The item at the specified index */ TPtrC CVCardItemAndLabel::Item(TInt aIndex) const { return iItems->MdcaPoint(aIndex); } /** * Access a label by index * @return The label at the specified index */ TPtrC CVCardItemAndLabel::Label(TInt aIndex) const { return iLabels->MdcaPoint(aIndex); } /** * Locate the index of a specified label. * @param aName The label being searched for * @param aPosition A reference parameter which is updated with the position of the * item if it is located. * @return An error code indicating whether the item was found or otherwise */ TInt CVCardItemAndLabel::FindLabel(const TDesC& aName, TInt& aPosition) const { return iLabels->Find(aName, aPosition); } /** * Utility cleanup method * @param aArray An object of RPointerArray which must be cleaned up */ void CVCardItemAndLabel::CleanUpResetDestroyAndCloseArray(TAny* aArray) { RPointerArray* array = reinterpret_cast*>(aArray); if (array) { array->ResetAndDestroy(); array->Close(); } } /** * Constructor */ CVCardAddress::CVCardAddress(TUid aMapping) : iMapping(aMapping) { } /** * Static constructor */ CVCardAddress* CVCardAddress::NewLC(TUid aMapping) { CVCardAddress* self = new(ELeave) CVCardAddress(aMapping); CleanupStack::PushL(self); self->ConstructL(); return self; }