diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook/View/src/Cpbknameordersettingitem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook/View/src/Cpbknameordersettingitem.cpp Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,143 @@ +/* +* Copyright (c) 2002 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: +* Provides methods for Name Order settings item. +* +*/ + + +// INCLUDE FILES +#include "Cpbknameordersettingitem.h" // This class +#include +#include +#include + +#include +#include "PbkViewUtils.h" + +/// Unnamed namespace for local definitions +namespace { + +void AppendEnumeratedItemL( TInt aResourceId, + TInt aEnumeration, + CArrayPtr& aEnumeratedArray ) + { + HBufC* lastSpaceFirst = StringLoader::LoadLC( aResourceId ); + CAknEnumeratedText* enumeratedText = new( ELeave ) CAknEnumeratedText( + aEnumeration, + lastSpaceFirst ); + CleanupStack::Pop( lastSpaceFirst ); + CleanupStack::PushL( enumeratedText ); + aEnumeratedArray.AppendL( enumeratedText ); + CleanupStack::Pop( enumeratedText ); + } + +void AppendEnumeratedStringItemL( TInt aResourceId, + TInt aEnumeration, + const TDesC& aString, + CArrayPtr& aEnumeratedArray ) + { + HBufC* lastSpaceFirst = StringLoader::LoadLC( aResourceId, aString ); + CAknEnumeratedText* enumeratedText = new( ELeave ) CAknEnumeratedText( + aEnumeration, + lastSpaceFirst ); + CleanupStack::Pop( lastSpaceFirst ); + CleanupStack::PushL( enumeratedText ); + aEnumeratedArray.AppendL( enumeratedText ); + CleanupStack::Pop( enumeratedText ); + } +} + + +// ================= MEMBER FUNCTIONS ======================= + +// CPbkNameOrderSettingItem + +CPbkNameOrderSettingItem::CPbkNameOrderSettingItem + (TInt aResourceId, TInt& aValue, CPbkContactEngine& aEngine) + : CAknEnumeratedTextPopupSettingItem(aResourceId, aValue), + iEngine(aEngine) + { + } + +TInt CPbkNameOrderSettingItem::Value() + { + return ExternalValue(); + } + +void CPbkNameOrderSettingItem::ChangeValueL() + { + // First get the current value + LoadL(); + TInt value = InternalValue(); + + // Then change it... + if (value == CPbkContactEngine::EPbkNameOrderLastNameFirstName) + { + value = CPbkContactEngine::EPbkNameOrderFirstNameLastName; + } + else + { + value = CPbkContactEngine::EPbkNameOrderLastNameFirstName; + } + + // ...and set it + SetInternalValue(value); + StoreL(); + } + +void CPbkNameOrderSettingItem::CompleteConstructionL() + { + CAknEnumeratedTextPopupSettingItem::CompleteConstructionL(); + + // get reference from the base class to texts that are showed in + // settings item list + CArrayPtr* enumeratedTexts = EnumeratedTextArray(); + // get reference from the base class to texts that are showed in + // the pop up. In this case these are same as enumerated texts + CArrayPtr* poppedTexts = PoppedUpTextArray(); + + // Append items to enumerated array + + // Last name First name item + AppendEnumeratedItemL( + R_QTN_PHOB_SET_NAMES_LAST_SPACE_FIRST, + EPbkSettingNameOrderLastSpaceFirst, + *enumeratedTexts ); + + TBuf<1> sepChar; + sepChar.Append(PbkViewUtils::ResolveNameOrderSeparatorL(iEngine)); + AppendEnumeratedStringItemL( + R_QTN_PHOB_SET_NAMES_LAST_SEPARATOR_FIRST, + EPbkSettingNameOrderLastSeparatorFirst, + sepChar, + *enumeratedTexts ); + + AppendEnumeratedItemL( + R_QTN_PHOB_SET_NAMES_FIRST_SPACE_LAST, + EPbkSettingNameOrderFirstSpaceLast, + *enumeratedTexts ); + + // Append items to the poppedup array in the same order as in enumerated + // array + const TInt count = enumeratedTexts->Count(); + for ( TInt i = 0; i < count; ++i ) + { + HBufC* text = enumeratedTexts->At( i )->Value()->AllocLC(); + poppedTexts->AppendL( text ); + CleanupStack::Pop( text ); + } + } + +// End of File