diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook2/UIControls/src/CPbk2MemorySelectionSettingPage.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/UIControls/src/CPbk2MemorySelectionSettingPage.cpp Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,127 @@ +/* +* 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: +* Memory selection setting page for Phonebook 2. +* +*/ + + +#include "CPbk2MemorySelectionSettingPage.h" + +// system includes +#include + +namespace + { + #ifdef _DEBUG + enum TPanicCode + { + EPanic_InvalidIndex = 1 + }; + + void Panic( TPanicCode aCode ) + { + _LIT( KPanicCat, "CPbk2MemorySelectionSettingPage" ); + User::Panic( KPanicCat, aCode ); + } + #endif // _DEBUG + } + + +CPbk2MemorySelectionSettingPage::CPbk2MemorySelectionSettingPage( + TInt aResourceID, + CSelectionItemList* aItemArray ) : + CAknCheckBoxSettingPage( aResourceID, aItemArray ), + iItemsArray( aItemArray ) + { + } + +CPbk2MemorySelectionSettingPage::~CPbk2MemorySelectionSettingPage() + { + } + +void CPbk2MemorySelectionSettingPage::UpdateSettingL() + { + CAknCheckBoxSettingPage::UpdateSettingL(); + UpdateCbaL(); + } + +void CPbk2MemorySelectionSettingPage::UpdateCbaL() + { + TBool validLabels = EFalse; + if ( InvalidDataCbaResourceId() != DefaultCbaResourceId() ) + { + // Check that atleast one of the items is marked + const TInt count( iItemsArray->Count() ); + for ( TInt i(0); i < count; ++i ) + { + if ( iItemsArray->At( i )->SelectionStatus() ) + { + validLabels = ETrue; + break; + } + } + } + + TInt selectedItem( ListBoxControl()->CurrentItemIndex() ); + + __ASSERT_DEBUG( selectedItem > KErrNotFound + && selectedItem < iItemsArray->Count(), Panic( EPanic_InvalidIndex ) ); + + if ( iItemsArray->At( selectedItem )->SelectionStatus() ) + { + Cba()->SetCommandSetL( DefaultCbaResourceId() ); + } + else + { + if ( validLabels ) + { + Cba()->SetCommandSetL( R_AVKON_SOFTKEYS_OK_CANCEL__MARK ); + } + else + { + Cba()->SetCommandSetL( InvalidDataCbaResourceId() ); + } + } + Cba()->DrawDeferred(); + } + + +void CPbk2MemorySelectionSettingPage::HandleControlEventL( + CCoeControl* /*aControl*/, + TCoeEvent aEventType ) + { + if ( aEventType == EEventStateChanged ) + { + UpdateCbaL(); + } + } + +void CPbk2MemorySelectionSettingPage::ProcessCommandL( TInt aCommandId ) + { + switch( aCommandId ) + { + case EAknSoftkeyUnmark: // FALLTHROUGH + case EAknSoftkeyMark: + { + // Map these events to select event. + aCommandId = EAknSoftkeySelect; + break; + } + default:; + } + CAknCheckBoxSettingPage::ProcessCommandL( aCommandId ); + } + +// End of File