--- /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 <CPbkContactEngine.h>
+#include <StringLoader.h>
+#include <PbkView.rsg>
+
+#include <PbkView.hrh>
+#include "PbkViewUtils.h"
+
+/// Unnamed namespace for local definitions
+namespace {
+
+void AppendEnumeratedItemL( TInt aResourceId,
+ TInt aEnumeration,
+ CArrayPtr<CAknEnumeratedText>& 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<CAknEnumeratedText>& 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<CAknEnumeratedText>* 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<HBufC>* 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