--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/UIControls/src/CPbk2NameOrderSettingItem.cpp Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,153 @@
+/*
+* Copyright (c) 2002-2007 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 "CPbk2NameOrderSettingItem.h" // This class
+
+#include <Pbk2UIControls.rsg>
+#include <CPbk2SortOrderManager.h>
+#include <StringLoader.h>
+
+/// Unnamed namespace for local definitions
+namespace {
+
+/// Append enumerated text items to array
+void AppendEnumeratedItemL( TInt aResourceId,
+ CPbk2SortOrderManager::TPbk2NameDisplayOrder 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 );
+ }
+}
+// ================= MEMBER FUNCTIONS =======================
+
+// CPbk2NameOrderSettingItem
+
+CPbk2NameOrderSettingItem::CPbk2NameOrderSettingItem(
+ CPbk2SortOrderManager& aSortOrderManager,
+ TInt aResourceId,
+ TInt& aValue) :
+ CAknEnumeratedTextPopupSettingItem(aResourceId, aValue),
+ iSortOrderManager(aSortOrderManager)
+ {
+ }
+
+TInt CPbk2NameOrderSettingItem::Value()
+ {
+ return ExternalValue();
+ }
+
+// ---------------------------------------------------------------------------
+// From class CAknEnumeratedTextPopupSettingItem
+// CPbk2NameOrderSettingItem::CompleteConstructionL
+// ---------------------------------------------------------------------------
+//
+void CPbk2NameOrderSettingItem::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 in the same order
+ // as enumerations in TPbk2NameDisplayOrder
+ AppendEnumeratedItemL(
+ R_QTN_PHOB_SET_NAMES_LAST_SPACE_FIRST,
+ CPbk2SortOrderManager::EPbk2NameDisplayOrderLastNameFirstName,
+ *enumeratedTexts );
+
+ HBufC* lastSeparatorFirst = StringLoader::LoadLC(
+ R_QTN_PHOB_SET_NAMES_LAST_SEPARATOR_FIRST,
+ Separator() );
+ CAknEnumeratedText* enumeratedText = new( ELeave ) CAknEnumeratedText(
+ CPbk2SortOrderManager::EPbk2NameDisplayOrderLastNameSeparatorFirstName,
+ lastSeparatorFirst );
+ CleanupStack::Pop( lastSeparatorFirst );
+ CleanupStack::PushL( enumeratedText );
+ enumeratedTexts->AppendL( enumeratedText );
+ CleanupStack::Pop( enumeratedText );
+
+ AppendEnumeratedItemL(
+ R_QTN_PHOB_SET_NAMES_FIRST_SPACE_LAST,
+ CPbk2SortOrderManager::EPbk2NameDisplayOrderFirstNameLastName,
+ *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 );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// From class CAknEnumeratedTextPopupSettingItem
+// CPbk2NameOrderSettingItem::StoreL
+// ---------------------------------------------------------------------------
+//
+void CPbk2NameOrderSettingItem::StoreL()
+ {
+ CAknEnumeratedTextPopupSettingItem::StoreL();
+
+ CPbk2SortOrderManager::TPbk2NameDisplayOrder selectedOrder(
+ static_cast<CPbk2SortOrderManager::TPbk2NameDisplayOrder>(
+ Value() ) );
+
+ if ( selectedOrder ==
+ CPbk2SortOrderManager::EPbk2NameDisplayOrderLastNameSeparatorFirstName )
+ {
+ iSortOrderManager.SetNameDisplayOrderL( selectedOrder, Separator() );
+ }
+ else
+ {
+ iSortOrderManager.SetNameDisplayOrderL( selectedOrder );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// From class CAknEnumeratedTextPopupSettingItem
+// CPbk2NameOrderSettingItem::IsSeparatorSpace
+// ---------------------------------------------------------------------------
+//
+TPtrC CPbk2NameOrderSettingItem::Separator()
+ {
+ // Retrieve current separator. If it's space then use the language
+ // specific default separator.
+ TPtrC separator( iSortOrderManager.CurrentSeparator() );
+ if ( separator.Length() > 0 && TChar(separator[0]).IsSpace() )
+ {
+ separator.Set( iSortOrderManager.DefaultSeparator() );
+ }
+ return separator;
+ }
+// End of File