diff -r 000000000000 -r 2f259fa3e83a psln/Src/PslnBaseContainer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/psln/Src/PslnBaseContainer.cpp Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,270 @@ +/* +* 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: Base class for Psln's view containers. +* +*/ + + +// INCLUDE FILES +// General services. +#include +#include +#include +#include + +// Psln framework. +#include + +// Psln specific. +#include "PslnModel.h" +#include "PslnBaseContainer.h" +#include "PslnUi.h" + +// MEMBER FUNCTIONS + +// --------------------------------------------------------------------------- +// C++ default constructor +// --------------------------------------------------------------------------- +// +CPslnBaseContainer::CPslnBaseContainer() + { + iModel = static_cast( ControlEnv()->AppUi() )->Model(); + } + +// --------------------------------------------------------------------------- +// CPslnBaseContainer::BaseConstructL +// --------------------------------------------------------------------------- +// +void CPslnBaseContainer::BaseConstructL( const TRect& aRect, TInt aResLbxId ) + { + CreateWindowL(); // Makes the control a window-owning control + iListBox->SetContainerWindowL( *this ); + + iListBox->ConstructL( this, EAknListBoxSelectionList ); + iItemArray = static_cast + ( iListBox->Model()->ItemTextArray() ); + + ConstructListBoxL( aResLbxId ); + iListBox->CreateScrollBarFrameL( ETrue ); + iListBox->ScrollBarFrame()->SetScrollBarVisibilityL( + CEikScrollBarFrame::EOff, + CEikScrollBarFrame::EAuto ); + SetRect( aRect ); + ActivateL(); + } + +// --------------------------------------------------------------------------- +// CPslnBaseContainer::BaseConstructL +// --------------------------------------------------------------------------- +// +void CPslnBaseContainer::BaseConstructL( + const TRect& aRect, TInt aResTitleId, TInt aResLbxId ) + { + // Set title + if ( aResTitleId ) + { + CEikStatusPane* sp = + iAvkonAppUi->StatusPane(); + if ( sp ) + { + CAknTitlePane* title = static_cast( + sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); + if ( title ) + { + TResourceReader rReader; + iCoeEnv->CreateResourceReaderLC( rReader, aResTitleId ); + title->SetFromResourceL( rReader ); + CleanupStack::PopAndDestroy(); //rReader + } + } + } + BaseConstructL( aRect, aResLbxId ); + } + +// --------------------------------------------------------------------------- +// Destructor +// --------------------------------------------------------------------------- +// +CPslnBaseContainer::~CPslnBaseContainer() + { + delete iListBox; + } + +// --------------------------------------------------------------------------- +// CPslnBaseContainer::SetListBoxObserver +// --------------------------------------------------------------------------- +// +void CPslnBaseContainer::SetListBoxObserver( MEikListBoxObserver* aObserver ) + { + iListBox->SetListBoxObserver( aObserver ); + } + +// --------------------------------------------------------------------------- +// CPslnBaseContainer::CurrentItemIndex +// --------------------------------------------------------------------------- +// +TInt CPslnBaseContainer::CurrentItemIndex() const + { + return iListBox->CurrentItemIndex(); + } + +// --------------------------------------------------------------------------- +// CPslnBaseContainer::SetCurrentItemIndexAndDraw +// --------------------------------------------------------------------------- +// +void CPslnBaseContainer::SetCurrentItemIndexAndDraw( TInt aNewIndex ) + { + if( ( aNewIndex >= 0 ) && + ( aNewIndex < iListBox->Model()->NumberOfItems() ) ) + { + iListBox->SetCurrentItemIndexAndDraw( aNewIndex ); + } + } + +// --------------------------------------------------------------------------- +// CPslnBaseContainer::SetCurrentItemIndex +// --------------------------------------------------------------------------- +// +void CPslnBaseContainer::SetCurrentItemIndex( TInt aNewIndex ) + { + if( ( aNewIndex >= 0 ) && + ( aNewIndex < iListBox->Model()->NumberOfItems() ) ) + { + iListBox->SetCurrentItemIndex( aNewIndex ); + } + } + +// --------------------------------------------------------------------------- +// CPslnBaseContainer::GetMiddleSoftkeyObserver +// --------------------------------------------------------------------------- +// +MPslnFWMSKObserver* CPslnBaseContainer::GetMiddleSoftkeyObserver() + { + return iMSKObserver; + } + +// --------------------------------------------------------------------------- +// Sets observer for MSK label updations. +// --------------------------------------------------------------------------- +// +void CPslnBaseContainer::SetMiddleSoftkeyObserver( MPslnFWMSKObserver* aObserver ) + { + if ( !iMSKObserver && aObserver ) + { + iMSKObserver = aObserver; + } + } + +// --------------------------------------------------------------------------- +// CPslnBaseContainer::UpdateListBoxL +// --------------------------------------------------------------------------- +// +void CPslnBaseContainer::UpdateListBoxL() + { + // Update items. + CreateListBoxItemsL(); + } + +// --------------------------------------------------------------------------- +// Called when a key is pressed. +// --------------------------------------------------------------------------- + +TKeyResponse CPslnBaseContainer::OfferKeyEventL( + const TKeyEvent& aKeyEvent, TEventCode aType ) + { + switch ( aKeyEvent.iCode ) + { + case EKeyUpArrow: + case EKeyDownArrow: + { + TKeyResponse listboxResp = + iListBox->OfferKeyEventL( aKeyEvent, aType ); + if ( iMSKObserver ) + { + iMSKObserver->CheckMiddleSoftkeyLabelL(); + } + return listboxResp; + } + case EKeyLeftArrow: + case EKeyRightArrow: + // Listbox takes all events even if it doesn't use them + return EKeyWasNotConsumed; + default: + break; + } + + return iListBox->OfferKeyEventL( aKeyEvent, aType ); + } + +// --------------------------------------------------------------------------- +// Called by framwork when the view size is changed. +// --------------------------------------------------------------------------- +// +void CPslnBaseContainer::SizeChanged() + { + if ( iListBox ) + { + iListBox->SetRect( Rect() ); + } + } + +// --------------------------------------------------------------------------- +// CPslnBaseContainer::CountComponentControls +// --------------------------------------------------------------------------- +// +TInt CPslnBaseContainer::CountComponentControls() const + { + return 1; //magic + } + +// --------------------------------------------------------------------------- +// CPslnBaseContainer::ComponentControl +// --------------------------------------------------------------------------- +// +CCoeControl* CPslnBaseContainer::ComponentControl( TInt /*aIndex*/ ) const + { + return iListBox; + } //lint !e1763 Member intentionally exposed through const method + +// --------------------------------------------------------------------------- +// CPslnBaseContainer::HandleResourceChange +// --------------------------------------------------------------------------- +// +void CPslnBaseContainer::HandleResourceChange( TInt aType ) + { + CCoeControl::HandleResourceChange( aType ); + if ( aType == KEikDynamicLayoutVariantSwitch ) + { + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect( + AknLayoutUtils::EMainPane, + mainPaneRect ); + SetRect( mainPaneRect ); + } + } + +// --------------------------------------------------------------------------- +// CPslnBaseContainer::FocusChanged +// --------------------------------------------------------------------------- +// +void CPslnBaseContainer::FocusChanged( TDrawNow aDrawNow ) + { + // Pass focus changed event to listbox. + if ( iListBox ) + { + iListBox->SetFocus( IsFocused(), aDrawNow ); + } + } + +// End of File