uifw/AvKon/tsrc/bc/bctestlauncher/src/bctestlauncherview.cpp
branchRCL_3
changeset 56 d48ab3b357f1
parent 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AvKon/tsrc/bc/bctestlauncher/src/bctestlauncherview.cpp	Wed Sep 01 12:16:19 2010 +0100
@@ -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 <avkon.hrh>
+#include <aknviewappui.h>
+#include <akntabgrp.h>
+#include <aknnavide.h>
+#include <e32std.h>
+#include <e32base.h>
+#include <eiktxlbm.h>
+#include <akndef.h>
+#include <centralrepository.h>
+#include <aknlistquerydialog.h> 
+#include <bctestlauncher.rsg>
+
+#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<CBCTestApplication*>* 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<TInt>( ( *iSelectApps ).Count() ); 
+	CleanupStack::PushL( indexArray );
+
+	CAknListQueryDialog* dlg = 
+	    new( ELeave ) CAknListQueryDialog( indexArray );
+	dlg->PrepareLC(R_BCTESTLAUNCHER_MULTI_SELECTION_QUERY);
+
+	CDesCArray* items = static_cast<CDesCArray*>( static_cast<
+	    CTextListBoxModel*>( dlg->ListBox()->Model() )->ItemTextArray() );
+	items->Reset();
+	for( TInt i = 0; i < ( *iSelectApps ).Count(); ++i )
+	    {
+		TBuf<KNameLength> 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 ) );
+			}
+		}
+	}
+