diff -r 6b5204869ed5 -r 89c890c70182 psln/Src/PslnMainView.cpp --- a/psln/Src/PslnMainView.cpp Fri Jun 25 18:53:58 2010 +0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,361 +0,0 @@ -/* -* Copyright (c) 2005-2006 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: Main state view for Psln application. -* -*/ - - - -// INCLUDE FILES -#include - -#include -#include - -#include "PslnMainView.h" -#include "PslnMainViewContainer.h" -#include "PslnUi.h" - -// Framework -#include -#include "PslnPluginHandler.h" - -// CONSTANTS -// Main view indexes of default plugins. -const TInt KPslnASPluginLoc = 1; -const TInt KPslnAIPluginLoc = 2; - -// ============================ MEMBER FUNCTIONS =============================== -// --------------------------------------------------------------------------- -// Two-phased constructor. -// --------------------------------------------------------------------------- -// -CPslnMainView* CPslnMainView::NewLC() - { - CPslnMainView* self = new (ELeave) CPslnMainView(); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -// --------------------------------------------------------------------------- -// Symbian 2nd phase constructor can leave. -// --------------------------------------------------------------------------- -// -void CPslnMainView::ConstructL() - { - BaseConstructL( R_PSLN_MAIN_VIEW ); - - ConstructViewArrayL(); - // Start background operation and create tabgroup. - iPslnUi->LoadViewsWhenIdleL(); - iPslnUi->ConstructTabGroupL(); - } - -// --------------------------------------------------------------------------- -// C++ default constructor can NOT contain any code, that might leave. -// --------------------------------------------------------------------------- -// -CPslnMainView::CPslnMainView() - { - } - -// --------------------------------------------------------------------------- -// Destructor. -// --------------------------------------------------------------------------- -// -CPslnMainView::~CPslnMainView() - { - iViewIds.Close(); - } - -// --------------------------------------------------------------------------- -// TUid CPslnMainView::Id() -// --------------------------------------------------------------------------- -// -TUid CPslnMainView::Id() const - { - return KPslnMainView2; - } - -// --------------------------------------------------------------------------- -// CPslnMainView::HandleCommandL -// --------------------------------------------------------------------------- -// -void CPslnMainView::HandleCommandL( TInt aCommand ) - { - switch ( aCommand ) - { - case EPslnCmdAppOpen: - DoActivateLocalViewL(); - break; - // If view was launched externally, handle back as exit. - case EAknSoftkeyBack: - case EAknSoftkeyExit: - aCommand = EAknCmdExit; - //lint -fallthrough - default: - iPslnUi->HandleCommandL( aCommand ); - break; - } - } - -// --------------------------------------------------------------------------- -// CPslnMainView::ActiveView -// --------------------------------------------------------------------------- -// -TInt CPslnMainView::ActiveView() const - { - return iCurrentItem; - } - -// --------------------------------------------------------------------------- -// CPslnMainView::SetActiveFolder -// --------------------------------------------------------------------------- -// -void CPslnMainView::SetActiveFolder( TInt aIndex ) - { - iCurrentItem = aIndex; - } - -// --------------------------------------------------------------------------- -// CPslnMainView::ActiveFolderUid -// --------------------------------------------------------------------------- -// -TInt CPslnMainView::ActiveFolderUid() - { - if ( ( iCurrentItem > iViewIds.Count() )|| - ( iCurrentItem < 0 ) ) - { - // If index is out-of-bounds, set first item active. - iCurrentItem = 0; - return 0; - } - return iViewIds[ iCurrentItem ].iUid; - } - -// --------------------------------------------------------------------------- -// CPslnMainView::SetActiveFolder -// --------------------------------------------------------------------------- -// -void CPslnMainView::SetActiveFolder( TUid aUid ) - { - for ( TInt idx = 0; idx < iViewIds.Count(); idx++ ) - { - if ( iViewIds[ idx ].iUid == aUid.iUid ) - { - iCurrentItem = idx; - } - } - } - -// --------------------------------------------------------------------------- -// CPslnMainView::DoActivateL -// --------------------------------------------------------------------------- -void CPslnMainView::DoActivateL( - const TVwsViewId& aPrevViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage ) - { - // If application is launched through NULL thread, it means that it is - // launched as embedded application - if ( aPrevViewId.iAppUid.iUid == KUidPsln.iUid && - aPrevViewId.iViewUid.iUid == KPslnGeneralView.iUid ) - { - MAknsSkinInstance* si = AknsUtils::SkinInstance(); - si->SetChangeEventsEnabled( EFalse ); - si->RemoveLocalItemDefs(); - si->SetChangeEventsEnabled( ETrue ); - } - - CPslnBaseView::DoActivateL( - aPrevViewId, - aCustomMessageId, - aCustomMessage ); - - // Set middle softkey label. - CPslnBaseView::SetMiddleSoftKeyLabelL( - R_PSLN_MSK_OPEN, - EPslnCmdAppOpen ); - - //set highlight ,if returning from other view - if(iContainer && aPrevViewId.iAppUid.iUid == KUidPsln.iUid) - { - //search which item should be highlighted - TInt activateItem = GetListboxItemIndexByViewId(aPrevViewId); - if(activateItem != KErrNotFound) - { - iContainer->SetCurrentItemIndex( activateItem ); - } - else - { - iContainer->SetCurrentItemIndex( iCurrentItem ); - } - } - } - -// --------------------------------------------------------------------------- -// CPslnMainView::DynInitMenuPaneL -// --------------------------------------------------------------------------- -// -void CPslnMainView::DynInitMenuPaneL( - TInt aResourceId, CEikMenuPane* aMenuPane ) - { - CPslnBaseView::DynInitMenuPaneL( aResourceId, aMenuPane ); - } - -// --------------------------------------------------------------------------- -// CPslnMainView::HandleListBoxSelectionL -// --------------------------------------------------------------------------- -// -void CPslnMainView::HandleListBoxSelectionL() - { - HandleCommandL( EPslnCmdAppOpen ); - } - -// ----------------------------------------------------------------------------- -// CPslnMainView::HandleListBoxItemHighlightL -// ----------------------------------------------------------------------------- -// -void CPslnMainView::HandleListBoxItemHighlightL() - { - } - -// --------------------------------------------------------------------------- -// CPslnMainView::NewContainerL -// --------------------------------------------------------------------------- -// -void CPslnMainView::NewContainerL() - { - iContainer = new(ELeave) CPslnMainViewContainer( iPslnUi ); - } - -// --------------------------------------------------------------------------- -// CPslnMainView::ConstructViewArrayL -// --------------------------------------------------------------------------- -// -void CPslnMainView::ConstructViewArrayL() - { - // First add static views. - iViewIds.AppendL( KPslnGeneralView ); - - TBitFlags views = iPslnUi->ViewSupport(); - if ( views.IsSet( CPslnUi::EPslnWallpaperView ) ) - { - iViewIds.AppendL( KPslnWallpaperView ); - } - - if ( views.IsSet ( CPslnUi::EPslnScreensaverView ) ) - { - iViewIds.AppendL( KPslnScreenSaverView ); - } - - // Then start looking for plugins. - CArrayPtrFlat* array = - iPslnUi->PluginHandler()->GetPluginArray(); - CleanupStack::PushL ( array ); - if ( array ) - { - TBool appShellPluginInserted = EFalse; - for ( TInt i = 0; i < array->Count(); i++ ) - { - CAknView* view = array->At( i ); - - // If plugin is either AS or AI, insert between static views. - if ( view->Id().iUid == KPslnASPluginUid.iUid ) - { - iViewIds.InsertL( view->Id(), KPslnASPluginLoc ); - appShellPluginInserted = ETrue; - } - else if ( view->Id().iUid == KPslnAIPluginUid.iUid ) - { - if ( appShellPluginInserted ) - { - iViewIds.InsertL( view->Id(), KPslnAIPluginLoc ); - } - else - { - // If there is ASplugin - claim it's place. - // note that ASplugin maybe later inserted to this place. - iViewIds.InsertL( view->Id(), KPslnASPluginLoc ); - } - } - // Other plugins are just appended in order from plugin array. - // Plugins are already ordered in PluginHandler. - else - { - iViewIds.AppendL( view->Id() ); - } - } - } - CleanupStack::Pop( array ); - } - -// --------------------------------------------------------------------------- -// CPslnMainView::CbaExitEnabled -// --------------------------------------------------------------------------- -// -TInt CPslnMainView::CbaResourceId( const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/ ) - { - TBool value = iEikonEnv->StartedAsServerApp(); - return value ? R_AVKON_SOFTKEYS_OPTIONS_BACK - : R_AVKON_SOFTKEYS_OPTIONS_EXIT; - } - -// --------------------------------------------------------------------------- -// Tries to activate local view from UI class. If class is not yet -// created, instructs UI class to create the view first. -// --------------------------------------------------------------------------- -// -void CPslnMainView::DoActivateLocalViewL() - { - if ( iContainer ) - { - iCurrentItem = iContainer->CurrentItemIndex(); - } - if ( iCurrentItem > iViewIds.Count() ) - { - User::Leave( KErrOverflow ); - } - // These views are possibly done dynamically. It is possible that due to - // idle time, they have already been created. - if ( iCurrentItem == KPslnGeneralView.iUid || - iCurrentItem == KPslnWallpaperView.iUid || - iCurrentItem == KPslnScreenSaverView.iUid ) - { - iPslnUi->CreateViewL( iViewIds[ iCurrentItem ] ); - } - iPslnUi->ActivateLocalViewL( iViewIds[ iCurrentItem ] ); - } - -// --------------------------------------------------------------------------- -// Return given view's index by searching the view id -// --------------------------------------------------------------------------- -// -TInt CPslnMainView::GetListboxItemIndexByViewId(const TVwsViewId& aViewId) const - { - TInt listBoxItemIndex = KErrNotFound; - - for( int i=0; i