diff -r 000000000000 -r 2f259fa3e83a uifw/AvKon/tsrc/bc/bctestlauncher/src/bctestlauncherview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uifw/AvKon/tsrc/bc/bctestlauncher/src/bctestlauncherview.cpp Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,239 @@ +/* +* Copyright (c) 2006-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: Implementation of application view class. +* +*/ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "bctestlauncherview.h" +#include "bctestlaunchercontainer.h" +#include "bctestrunner.h" +#include "bctestapplication.h" +#include "streamlogger.h" + +// ============================ LOCAL FUNCTIONS ============================== +namespace BCTest + { + inline static CEikMenuPaneItem::SData& BuildItem( + const TDesC& aName, const TInt aID ) + { + static CEikMenuPaneItem::SData item; + item.iCommandId = aID; + item.iText = aName; + item.iFlags= EEikMenuItemSymbolOn; + item.iCascadeId = 0; + return item; + } + } + +// ============================ MEMBER FUNCTIONS ============================= + +// --------------------------------------------------------------------------- +// CBCTestLauncherView::CBCTestLauncherView() +// C++ default constructor can NOT contain any code, that +// might leave. +// --------------------------------------------------------------------------- +// +CBCTestLauncherView::CBCTestLauncherView( RArray* aList ) + : iContainer( NULL ), iSelectApps( aList ) + { + } + +// --------------------------------------------------------------------------- +// CBCTestLauncherView::ConstructL +// Symbian 2nd phase constructor can leave. +// --------------------------------------------------------------------------- +// +void CBCTestLauncherView::ConstructL() + { + BaseConstructL( R_BCTESTLAUNCHER_VIEW ); + + //construct the app list menu + } + +// --------------------------------------------------------------------------- +// CBCTestLauncherView::~CBCTestLauncherView +// Destructor. +// --------------------------------------------------------------------------- +// +CBCTestLauncherView::~CBCTestLauncherView() + { + if ( iContainer ) + { + AppUi()->RemoveFromStack( iContainer ); + } + + delete iContainer; + } + +// --------------------------------------------------------------------------- +// TUid CAknAtPbarView::Id() +// returns view Id. +// --------------------------------------------------------------------------- +// +TUid CBCTestLauncherView::Id() const + { + return KViewId; + } + +// --------------------------------------------------------------------------- +// CAknAtPbarView::HandleCommandL( TInt aCommand ) +// handles commands. +// --------------------------------------------------------------------------- +// +void CBCTestLauncherView::HandleCommandL( TInt aCommand ) + { + switch ( aCommand ) + { + case EAknCmdExit: + case EAknSoftkeyBack: + case EEikCmdExit: + AppUi()->HandleCommandL( EEikCmdExit ); + return; // this can never be reached + case ESdkVersion: + iContainer->SetSdkVersion(); + return; // this can never be reached + } + + TInt number = aCommand - EBCTestLauncherStart; + if( number >= 0 && number < ( *iSelectApps ).Count() ) + { + Reset(); + ( *iSelectApps )[number]->Select(); + } + + AppUi()->HandleCommandL( aCommand ); + } + +// --------------------------------------------------------------------------- +// CAknAtPbarView::HandleClientRectChange() +// +// --------------------------------------------------------------------------- +void CBCTestLauncherView::HandleClientRectChange() + { + if ( iContainer ) + { + iContainer->SetRect( ClientRect() ); + } + } + +// --------------------------------------------------------------------------- +// CBCTestLauncherView::DoActivateL(...) +// +// --------------------------------------------------------------------------- +void CBCTestLauncherView::DoActivateL( + const TVwsViewId& /*aPrevViewId*/, TUid /*aCustomMessageId*/, + const TDesC8& /*aCustomMessage*/ ) + { + iContainer = new( ELeave ) CBCTestLauncherContainer; + iContainer->SetMopParent( this ); + iContainer->ConstructL( ClientRect() ); + AppUi()->AddToStackL( *this, iContainer, ECoeStackPriorityDefault ); + } + +// --------------------------------------------------------------------------- +// CBCTestLauncherView::DoDeactivate() +// +// --------------------------------------------------------------------------- +void CBCTestLauncherView::DoDeactivate() + { + if ( iContainer ) + { + AppUi()->RemoveFromStack( iContainer ); + } + + delete iContainer; + iContainer = NULL; + } + +// --------------------------------------------------------------------------- +// CBCTestLauncherView::RunSelectionL() +// +// --------------------------------------------------------------------------- +TBool CBCTestLauncherView::SelectL() + { + _LIT( KPrefix, "1\t" ); + + CListBoxView::CSelectionIndexArray* indexArray = + new( ELeave )CArrayFixFlat( ( *iSelectApps ).Count() ); + CleanupStack::PushL( indexArray ); + + CAknListQueryDialog* dlg = + new( ELeave ) CAknListQueryDialog( indexArray ); + dlg->PrepareLC(R_BCTESTLAUNCHER_MULTI_SELECTION_QUERY); + + CDesCArray* items = static_cast( static_cast< + CTextListBoxModel*>( dlg->ListBox()->Model() )->ItemTextArray() ); + items->Reset(); + for( TInt i = 0; i < ( *iSelectApps ).Count(); ++i ) + { + TBuf text( KPrefix ); + text += ( *iSelectApps )[i]->Name(); + items->AppendL( text ); + } + + TBool res = EFalse; + if ( dlg->RunLD() ) + { + Reset(); + for (TInt i = 0; i < indexArray->Count(); ++i) + { + ( *iSelectApps )[ indexArray->At( i ) ]->Select(); + } + res = ETrue; + } + + CleanupStack::PopAndDestroy(); // indexArray + return res; + } + +void CBCTestLauncherView::Reset() + { + for( TInt i = 0; i < ( *iSelectApps ).Count(); ++i ) + { + ( *iSelectApps )[i]->Select( EFalse ); + } + } + +// --------------------------------------------------------------------------- +// CBCTestLauncherView::DynInitMenuPaneL() +// +// --------------------------------------------------------------------------- +// +void CBCTestLauncherView::DynInitMenuPaneL( + TInt aResourceId, CEikMenuPane* aMenuPane ) + { + if( R_BCTESTLAUNCHER_SEPARATE_TESTS == aResourceId ) + { + for( TInt i = 0; i < ( *iSelectApps ).Count(); ++i ) + { + aMenuPane->AddMenuItemL( + BCTest::BuildItem( ( *iSelectApps )[i]->Name(), + EBCTestLauncherStart + i ) ); + } + } + } +