diff -r 6b5204869ed5 -r 89c890c70182 psln/PslnFramework/src/PslnFWBaseView.cpp --- a/psln/PslnFramework/src/PslnFWBaseView.cpp Fri Jun 25 18:53:58 2010 +0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,423 +0,0 @@ -/* -* Copyright (c) 2005-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 view for all plugin views. -* -*/ - - -// INCLUDE FILES -#include "pslnfwbaseview.h" -#include "pslnfwbasecontainer.h" -#include "PslnConst.h" -#include "PslnDebug.h" - -// For Download and Help command handling -#include -#include - -// AVKON utilities -#include -#include -#include -#include - -// General Utilities -#include -#include -#include -#include - -// Static view locations. -const TInt KPslnFWGeneralThemeViewLocation = 0; - -// ========================= MEMBER FUNCTIONS ================================ -// --------------------------------------------------------------------------- -// C++ constructor -// --------------------------------------------------------------------------- -EXPORT_C CPslnFWBaseView::CPslnFWBaseView() : iResourceLoader( *iCoeEnv ), - iMyTabIndex ( KErrNotFound ) - { - } - -// --------------------------------------------------------------------------- -// Destructor -// --------------------------------------------------------------------------- -EXPORT_C CPslnFWBaseView::~CPslnFWBaseView() - { - iResourceLoader.Close(); - if ( iContainer ) - { - CAknViewAppUi* appUi = AppUi(); - if ( appUi ) - { - appUi->RemoveFromStack( iContainer ); - } - delete iContainer; - } - } - -// --------------------------------------------------------------------------- -// CPslnFWBaseView::Container -// --------------------------------------------------------------------------- -EXPORT_C CPslnFWBaseContainer* CPslnFWBaseView::Container() - { - return iContainer; - } - -// --------------------------------------------------------------------------- -// CPslnFWBaseView::SetCurrentItem -// --------------------------------------------------------------------------- -EXPORT_C void CPslnFWBaseView::SetCurrentItem( TInt aIndex ) - { - PSLN_TRACE_DEBUG("CPslnFWBaseView::SetCurrentItem"); - if ( aIndex > 0 ) - { - iCurrentItem = aIndex; - } - else - { - // If invalid index, set to first. - iCurrentItem = 0; - } - } - -// --------------------------------------------------------------------------- -// CPslnFWBaseView::HandleListBoxEventL -// --------------------------------------------------------------------------- -EXPORT_C void CPslnFWBaseView::HandleListBoxEventL( CEikListBox* /*aListBox*/, - TListBoxEvent aEventType ) - { - switch ( aEventType ) - { - case EEventItemClicked: - if ( iContainer && iContainer->iMSKObserver ) - { - iContainer->iMSKObserver->CheckMiddleSoftkeyLabelL(); - } - break; - case EEventEnterKeyPressed: - case EEventItemDoubleClicked: - case EEventItemSingleClicked: - HandleListBoxSelectionL(); - break; - default: - break; - } - } - -// --------------------------------------------------------------------------- -// Sets navi_pane. -// --------------------------------------------------------------------------- -// -EXPORT_C void CPslnFWBaseView::SetNaviPaneL() - { - PSLN_TRACE_DEBUG("CPslnFWBaseView::SetNaviPaneL BEGIN"); - if ( !iNaviControlContainer ) - { - CAknViewAppUi* appUi = AppUi(); - if ( appUi ) - { - CEikStatusPane* sp = appUi->StatusPane(); - iNaviControlContainer = static_cast - ( sp->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) ); - } - } - - _LIT( KPanicText, "CPslnFWBaseView" ); - __ASSERT_DEBUG( iNaviControlContainer, User::Panic( KPanicText, KErrGeneral ) ); - - if ( iNaviPaneContext ) - { - iNaviControlContainer->PushL( *iNaviPaneContext ); - } - else - { - iNaviControlContainer->PushDefaultL(); - } - PSLN_TRACE_DEBUG("CPslnFWBaseView::SetNaviPaneL END"); - } - -// --------------------------------------------------------------------------- -// CPslnFWBaseView::CreateNaviPaneContextL -// --------------------------------------------------------------------------- -// -EXPORT_C void CPslnFWBaseView::CreateNaviPaneContextL( TInt /*aResourceId*/ ) - { - // Deprecated. - } - -// --------------------------------------------------------------------------- -// Sets navi_pane decorator. -// --------------------------------------------------------------------------- -// -EXPORT_C void CPslnFWBaseView::SetNaviPaneDecorator( - CAknNavigationDecorator* aDecorator ) - { - PSLN_TRACE_DEBUG("CPslnFWBaseView::SetNaviPaneDecorator"); - iNaviPaneContext = aDecorator; - } - -// --------------------------------------------------------------------------- -// Sets navi_pane and activates a tab. -// --------------------------------------------------------------------------- -// -EXPORT_C void CPslnFWBaseView::SetNaviPaneL( const TInt aTabLocation ) - { - PSLN_TRACE_DEBUG("CPslnFWBaseView::SetNaviPaneL w/ param BEGIN"); - if ( !iNaviControlContainer ) - { - CAknViewAppUi* appUi = AppUi(); - if ( appUi ) - { - CEikStatusPane* sp = appUi->StatusPane(); - iNaviControlContainer = static_cast - ( sp->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) ); - } - } - if ( iNaviPaneContext && ( aTabLocation > 0 ) ) - { - CAknTabGroup* tabGrp = static_cast - ( iNaviPaneContext->DecoratedControl() ); - tabGrp->SetActiveTabByIndex( aTabLocation ); - iNaviControlContainer->PushL( *iNaviPaneContext ); - } - else - { - iNaviControlContainer->PushDefaultL(); - } - PSLN_TRACE_DEBUG("CPslnFWBaseView::SetNaviPaneL w/ param END"); - } - -// --------------------------------------------------------------------------- -// Activates the view. -// --------------------------------------------------------------------------- -// -EXPORT_C void CPslnFWBaseView::DoActivateL( const TVwsViewId& aPrevViewId, - TUid /*aCustomMessageId*/, - const TDesC8& /*aCustomMessage*/ ) - { - PSLN_TRACE_DEBUG("CPslnFWBaseView::DoActivateL END"); - iPrevViewId = aPrevViewId; - CAknViewAppUi* appUi = AppUi(); - if ( !iContainer ) - { - CreateContainerL(); - if ( appUi ) - { - AppUi()->AddToStackL( *this, iContainer ); - } - iContainer->iListBox->SetListBoxObserver( this ); - } - -#ifdef RD_CONTROL_PANEL - TInt titlePaneResID = KErrNotFound; - SetTitlePaneL( titlePaneResID ); - // Retrieve title pane and set it. - CEikStatusPane* sp = iAvkonAppUi->StatusPane(); - if ( sp ) - { - CAknTitlePane* titlePane = static_cast( - sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); - if ( ( titlePaneResID > KErrNone ) && titlePane ) - { - HBufC* titlePaneText = NULL; - titlePaneText = StringLoader::LoadLC( titlePaneResID ); - titlePane->SetTextL( titlePaneText->Des() ); - CleanupStack::PopAndDestroy( titlePaneText ); - } - } -#endif //RD_CONTROL_PANEL - - PSLN_TRACE_DEBUG("CPslnFWBaseView::DoActivateL END"); - } - -// --------------------------------------------------------------------------- -// Deactivates view. -// --------------------------------------------------------------------------- -// -EXPORT_C void CPslnFWBaseView::DoDeactivate() - { - PSLN_TRACE_DEBUG("CPslnFWBaseView::DoDeactivate BEGIN"); - if ( iContainer ) - { - CAknViewAppUi* appUi = AppUi(); - if ( appUi ) - { - appUi->RemoveFromStack( iContainer ); - } - delete iContainer; - iContainer = NULL; - } - PSLN_TRACE_DEBUG("CPslnFWBaseView::DoDeactivate END"); - } - -// --------------------------------------------------------------------------- -// Sets the real tab location of the view. -// --------------------------------------------------------------------------- -// -EXPORT_C void CPslnFWBaseView::SetTabIndex( TInt aMyTabIndex ) - { - if ( iNaviPaneContext && - IsValidLocation( aMyTabIndex ) ) - { - CAknTabGroup* tabGrp = static_cast - ( iNaviPaneContext->DecoratedControl() ); - if ( tabGrp && ( tabGrp->TabCount() > aMyTabIndex ) ) - { - iMyTabIndex = aMyTabIndex; - } - } - } - -// --------------------------------------------------------------------------- -// Gets the real tab location of the view. -// --------------------------------------------------------------------------- -// -EXPORT_C TInt CPslnFWBaseView::GetTabIndex() const - { - return iMyTabIndex; - } - -// --------------------------------------------------------------------------- -// Creates container. -// --------------------------------------------------------------------------- -// -EXPORT_C void CPslnFWBaseView::CreateContainerL() - { - PSLN_TRACE_DEBUG("CPslnFWBaseView::CreateContainerL BEGIN"); - NewContainerL(); - iContainer->SetMopParent( this ); - - CPslnFWBaseContainer* container = iContainer; - iContainer = NULL; - CleanupStack::PushL( container ); - container->ConstructL( ClientRect() ); - CleanupStack::Pop( container ); - iContainer = container; - PSLN_TRACE_DEBUG("CPslnFWBaseView::CreateContainerL END"); - } - -// --------------------------------------------------------------------------- -// Opens localized resource file from static path. -// --------------------------------------------------------------------------- -// -EXPORT_C void CPslnFWBaseView::OpenLocalizedResourceFileL( - const TDesC& aResourceFileName, - RConeResourceLoader& aResourceLoader ) - { - PSLN_TRACE_DEBUG("CPslnFWBaseView::OpenLocalizedResourceFileL BEGIN"); - // Find the resource file: - OpenLocalizedResourceFileL( - aResourceFileName, - aResourceLoader, - &KDC_RESOURCE_FILES_DIR ); - PSLN_TRACE_DEBUG("CPslnFWBaseView::OpenLocalizedResourceFileL END"); - } - -// --------------------------------------------------------------------------- -// Same as above, except this takes resource path from user. -// --------------------------------------------------------------------------- -// -EXPORT_C void CPslnFWBaseView::OpenLocalizedResourceFileL( - const TDesC& aResourceFileName, - RConeResourceLoader& aResourceLoader, - const TDesC* aPath ) - { - PSLN_TRACE_DEBUG("CPslnFWBaseView::OpenLocalizedResourceFileL 2 BEGIN"); - // Find the resource file: - TParse* parse = new (ELeave) TParse; - CleanupStack::PushL( parse ); - parse->Set( aResourceFileName, aPath, NULL ); - TFileName* fileName = new (ELeave) TFileName( parse->FullName() ); - CleanupStack::PushL( fileName ); - - // Open resource file: - aResourceLoader.OpenL( *fileName ); - - CleanupStack::PopAndDestroy( 2, parse ); // fileName, parse - PSLN_TRACE_DEBUG("CPslnFWBaseView::OpenLocalizedResourceFileL 2 END"); - } - -// --------------------------------------------------------------------------- -// Sets middle softkey label. -// --------------------------------------------------------------------------- -// -EXPORT_C void CPslnFWBaseView::SetMiddleSoftKeyLabelL( - const TInt aResourceId, const TInt aCommandId ) - { - PSLN_TRACE_DEBUG("CPslnFWBaseView::SetMiddleSoftKeyLabelL BEGIN"); - CEikButtonGroupContainer* cbaGroup = Cba(); - if ( cbaGroup ) - { - HBufC* middleSKText = StringLoader::LoadLC( aResourceId ); - TPtr mskPtr = middleSKText->Des(); - cbaGroup->AddCommandToStackL( - KPslnMSKControlID, - aCommandId, - mskPtr ); - CleanupStack::PopAndDestroy( middleSKText ); - } - PSLN_TRACE_DEBUG("CPslnFWBaseView::SetMiddleSoftKeyLabelL END"); - } - -// --------------------------------------------------------------------------- -// Handles Help command. -// --------------------------------------------------------------------------- -// -EXPORT_C void CPslnFWBaseView::HandleCommandL( TInt aCommand ) - { - CAknViewAppUi* appUi = AppUi(); - if ( !appUi ) - { - User::Leave( KErrNotFound ); - } - switch( aCommand ) - { - case EAknCmdHelp: - case EPslnCmdAppHelp: - // launch Help - HlpLauncher::LaunchHelpApplicationL( - iCoeEnv->WsSession(), appUi->AppHelpContextL()); - break; - default: - appUi->HandleCommandL( aCommand ); - break; - } - } - -// --------------------------------------------------------------------------- -// Set title pane to a view. -// --------------------------------------------------------------------------- -// -EXPORT_C void CPslnFWBaseView::SetTitlePaneL( TInt& /*aResourceId*/ ) - { - // Empty implementation to be overloaded. - } - -// ---------------------------------------------------------------------------- -// Checks that the location is valid. -// ---------------------------------------------------------------------------- -// -TBool CPslnFWBaseView::IsValidLocation( const TInt& aLoc ) const - { - TBool retVal = ETrue; - // First location is always forbidden. - if ( aLoc == KPslnFWGeneralThemeViewLocation ) - { - retVal = EFalse; - } - return retVal; - } - -//End of File