--- a/devicediagnostics/devdiagapp/src/devdiagsuiteview.cpp Tue Feb 02 00:03:17 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,656 +0,0 @@
-/*
-* Copyright (c) 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: Main view implementation.
-*
-*/
-
-
-
-#include "devdiagsuitecontainer.h"
-#include "devdiagengine.h"
-#include "devdiagdef.h"
-#include "devdiagpluginview.h"
-#include "devdiagexecutionresults.h"
-#include "devdiag.pan"
-
-#include <DiagPlugin.h>
-#include <akntitle.h>
-#include <coemain.h>
-#include <devdiagapp.rsg>
-#include <aknViewAppUi.h>
-#include <eikbtgpc.h> //Button group container
-#include <aknmessagequerydialog.h>
-#include <DiagFrameworkDebug.h> // Debug Logger
-#include <aknnotewrappers.h>
-#include <StringLoader.h>
-#include <AknWaitDialog.h> // CAknWaitDialog
-#include <DiagPluginPool.h>
-
-#include <DiagPlugin.h>
-#include <AknQueryDialog.h>
-#include <aknViewAppUi.h>
-#include <featmgr.h>
-#include <StringLoader.h>
-#include <bautils.h>
-#include <coeaui.h>
-#include <akntitle.h>
-#include <aknmessagequerydialog.h>
-#include <aknnotewrappers.h>
-#include <DiagResultsDatabaseItem.h>
-
-#ifdef __SERIES60_HELP
-#include <hlplch.h>
-#endif
-
-#include "devdiagsuiteview.h"
-
-const TInt KRootSuite = 0x2000E540; //top level suite
-
-_LIT(KLinefeed, "\n");
-_LIT(KTabfeed, "\t");
-const TInt KFailedTestsMaxLength(1024);
-
-// ----------------------------------------------------------------------------
-// Standard symbian c++ constructor
-// ----------------------------------------------------------------------------
-CDevDiagSuiteView* CDevDiagSuiteView::NewL( CDevDiagEngine& aEngine )
- {
- //LOGSTRING("CDevDiagSuiteView* CDevDiagSuiteView::NewL");
- CDevDiagSuiteView* self = CDevDiagSuiteView::NewLC( aEngine );
- CleanupStack::Pop(self);
- return self;
- }
-
-// ----------------------------------------------------------------------------
-// Standard symbian c++ constructor
-// ----------------------------------------------------------------------------
-//
-CDevDiagSuiteView* CDevDiagSuiteView::NewLC( CDevDiagEngine& aEngine )
- {
- //LOGSTRING("CDevDiagSuiteView* CDevDiagSuiteView::NewLC");
- CDevDiagSuiteView* self = new (ELeave) CDevDiagSuiteView(aEngine);
- CleanupStack::PushL(self);
- self->ConstructL();
- return self;
- }
-
-// ----------------------------------------------------------------------------
-// ConstructL.
-// ----------------------------------------------------------------------------
-//
-void CDevDiagSuiteView::ConstructL()
- {
- BaseConstructL( R_GS_DD_VIEW );
- ChangeTitleL ( R_GS_DIAGNOSTICS_VIEW_CAPTION );
- }
-
-// ----------------------------------------------------------------------------
-// Constructor.
-// ----------------------------------------------------------------------------
-//
-CDevDiagSuiteView::CDevDiagSuiteView(CDevDiagEngine& aEngine):
- iContainer ( NULL ),
- iEngine ( aEngine ),
- iParentPlugin( TUid::Uid( KRootSuite ))
- {
- aEngine.SetObserver(this);
- }
-
-// ----------------------------------------------------------------------------
-// Destructor.
-// ----------------------------------------------------------------------------
-//
-CDevDiagSuiteView::~CDevDiagSuiteView()
- {
- if ( iContainer )
- {
- AppUi()->RemoveFromStack( iContainer );
- delete iContainer;
- iContainer = NULL;
- }
- }
-
-// ----------------------------------------------------------------------------
-// Engine observer.
-// ----------------------------------------------------------------------------
-//
-void CDevDiagSuiteView::HandleEngineCommandL( TAppEngineCommand aCommand,
- TInt aError,
- TAny* aCustom )
- {
- switch ( aCommand )
- {
- case MDevDiagEngineObserver::EDevDiagEngineCommandPluginLoadComplete:
- {
-
- if ( iWaitDialog )
- {
- DismissWaitDialogPreparingL();
- }
-
- CheckCrashedTestL();
-
- break;
- }
- case MDevDiagEngineObserver::EDevDiagEngineCommandPluginLoadProgress:
- {
- MDiagPlugin* plugin = static_cast<MDiagPlugin*>(aCustom);
-
- if ( SuiteUid( plugin->Uid() ))
- {
- iContainer->DisplayPluginL( plugin );
- }
-
- break;
- }
-
- case MDevDiagEngineObserver::EDevDiagEngineCommandGroupExecutionDone:
- {
- if ( aError != KErrNone )
- {
- LOGSTRING2("MDevDiagEngineObserver::Exec Done Error: %d: ", aError);
- return;
- }
-
- if ( iEngine.HasExecutionResults() )
- {
- TInt failedCount = iEngine.ExecutionResults().FailedResultsCount();
-
- if ( failedCount == 0 )
- {
- DisplayConfirmationDialogL();
- }
- else
- {
- DisplayMessageQueryDialogFailedResultsL();
- }
- }
-
- break;
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// Application ID.
-// ----------------------------------------------------------------------------
-//
-TUid CDevDiagSuiteView::Id() const
- {
- return KDDMainViewId;
- }
-
-
-// ----------------------------------------------------------------------------
-// Change the title of the application.
-// ----------------------------------------------------------------------------
-//
-void CDevDiagSuiteView::ChangeTitleL(TInt aResourceId)
- {
- CAknTitlePane* titlePane =
- (CAknTitlePane*)(AppUi()->StatusPane())->ControlL(
- TUid::Uid( EEikStatusPaneUidTitle ) );
-
- HBufC* titleText = iEikonEnv->AllocReadResourceLC( aResourceId );
- titlePane->SetTextL( titleText->Des() );
- CleanupStack::PopAndDestroy(titleText);
- }
-
-// ----------------------------------------------------------------------------
-// Handle commands.
-// ----------------------------------------------------------------------------
-//
-void CDevDiagSuiteView::HandleCommandL( TInt aCommand )
- {
- LOGSTRING2("CDevDiagSuiteView::HandleCommandL %d",aCommand);
- switch ( aCommand )
- {
- case EDDCmdOpen:
- {
- //Selected suite plug-in
- MDiagPlugin* plugin;
-
- iContainer->SelectedPlugin( plugin );
-
- if ( iPluginView )
- {
- AppUi()->RemoveView( KDDPluginViewId );
- }
-
- iPluginView = CDevDiagPluginView::NewL( iEngine, plugin->Uid() );
-
- AppUi()->AddViewL( iPluginView );
-
- AppUi()->ActivateLocalViewL( KDDPluginViewId );
-
- }
-
- break;
-
- case EDDCmdPerformAllTests:
- {
-
-
- TBool ok = MessageQueryDialogLaunchL( R_MESSAGE_QUERY_PERFORM_ALL_TESTS );
-
- if ( ok )
- {
- //Engine will populate the suite.
- //because the plug-in is root suite, all tests will be executed.
- iEngine.ExecuteTestL( iParentPlugin, *AppUi() );
- }
-
- break;
- }
-
- case EDDMenuCmdMainHelp:
- {
- /* MessageQueryDialogLaunchL(
- R_MESSAGE_QUERY_HELP_NOTE );*/
-
- HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
- AppUi()->AppHelpContextL() );
- break;
- }
-
- case EAknCmdHelp:
- {
- break;
- }
- case EAknCmdTaskSwapper:
- {
- /*
- * MSK: Active Applications
- * This command is actually handled by Avkon FW
- * Applications should not handle this
- */
- break;
- }
- default:
- AppUi()->HandleCommandL( aCommand );
- break;
- }
- }
-
-
-// ----------------------------------------------------------------------------
-// Identify is it a suite or not.
-// ----------------------------------------------------------------------------
-//
-TBool CDevDiagSuiteView::SuiteUid( TUid aUid )
- {
-
- if ( aUid == KDDHardwareSuiteUid )
- {
- return ETrue;
- }
- else if ( aUid == KDDConnectivitySuiteUid )
- {
- return ETrue;
- }
- else if ( aUid == KDDServicesSuiteUid )
- {
- return ETrue;
- }
- else if ( aUid == KDDCoverageSuiteUid )
- {
- return ETrue;
- }
- else
- {
- return EFalse;
- }
- }
-
-// ----------------------------------------------------------------------------
-// First method called by the Avkon framwork to invoke a view.
-// ----------------------------------------------------------------------------
-//
-void CDevDiagSuiteView::DoActivateL( const TVwsViewId& aPrevViewId,
- TUid /*aCustomMessageId*/,
- const TDesC8& /*aCustomMessage*/ )
- {
- LOGSTRING( "CDevDiagSuiteView::DoActivateL");
- ChangeTitleL ( R_GS_DIAGNOSTICS_VIEW_CAPTION );
-
- iPrevViewId = aPrevViewId;
-
- if( iContainer )
- {
- AppUi()->RemoveFromStack( iContainer );
-
- delete iContainer;
- iContainer = NULL;
- }
-
- iContainer = CDevDiagSuiteContainer::NewL( this, iEngine, ClientRect() );
- iContainer->SetMopParent( this );
- AppUi()->AddToStackL( iContainer );
-
- iEngine.SetObserver(this);
-
- if ( !iEngine.ArePluginsLoaded() )
- {
- DisplayWaitDialogPreparingL();
- }
- else
- {
- //display children of the top level suite.
- iContainer->DisplayChildrenL( iParentPlugin );
- }
-
- if ( iEikonEnv->StartedAsServerApp() )
- {
- //UpdateCbaL( R_PROFILE_MAIN_VIEW_CBA_2 );
- }
-
- LOGSTRING( "CDevDiagSuiteView::DoActivateL end");
- }
-
-// ----------------------------------------------------------------------------
-// Update command buttons
-// ----------------------------------------------------------------------------
-//
-void CDevDiagSuiteView::UpdateCbaL(TInt aResourceId)
- {
- CEikButtonGroupContainer* cba = Cba();
- cba->SetCommandSetL(aResourceId);
- cba->DrawDeferred();
- }
-
-// ----------------------------------------------------------------------------
-// Called by the Avkon view framework when closing.
-// ----------------------------------------------------------------------------
-//
-void CDevDiagSuiteView::DoDeactivate()
- {
- if ( iContainer )
- {
- AppUi()->RemoveFromStack( iContainer );
- delete iContainer;
- iContainer = NULL;
- }
-
- }
-
-// ----------------------------------------------------------------------------
-// Display message query dialog.
-//
-// ----------------------------------------------------------------------------
-//
-TBool CDevDiagSuiteView::MessageQueryDialogLaunchL( TInt aResourceId )
- {
- CAknMessageQueryDialog* dlg = new (ELeave) CAknMessageQueryDialog();
-
- dlg->PrepareLC( aResourceId );
-
- if (dlg->RunLD())
- {
- return ETrue;
- }
-
- return EFalse;
- }
-
-
-// ----------------------------------------------------------------------------
-// Display a confirmation dialog.
-//
-// ----------------------------------------------------------------------------
-//
-void CDevDiagSuiteView::DisplayConfirmationDialogL( TBool aPassed )
- {
- CAknConfirmationNote* note =
- new (ELeave) CAknConfirmationNote( ETrue ); //Waiting
-
- HBufC* text = NULL;
-
- if ( aPassed )
- {
- text = StringLoader::LoadL( R_DIAG_CONF_TEST_PASSED );
- }
- else
- {
- text = StringLoader::LoadL( R_DIAG_CONF_TEST_FAILED );
- }
-
- CleanupStack::PushL( text );
-
- note->ExecuteLD( *text ); //Blocks until note dismissed
-
- CleanupStack::PopAndDestroy();
- }
-
-
-// ---------------------------------------------------------------------------
-// Display a wait dialog to inform the user we are preparing for execution.
-// ---------------------------------------------------------------------------
-//
-void CDevDiagSuiteView::DisplayWaitDialogPreparingL()
- {
- LOGSTRING( "CDevDiagSuiteView::DisplayWaitDialogPreparingL()" );
-
- __ASSERT_DEBUG( !iWaitDialog, Panic( EDevDiagApplicationGeneral ) );
-
- // Create the wait dialog and run it. The dialog will only display if
- // checking runtime requirements takes more than 1.5 seconds.
- iWaitDialog = new (ELeave) CAknWaitDialog(
- reinterpret_cast< CEikDialog** >( &iWaitDialog ),
- EFalse );
- iWaitDialog->ExecuteLD( R_DEV_DIAG_PREPARING_WAIT_NOTE );
-
- }
-
-// ---------------------------------------------------------------------------
-// Display a confirmation dialog to inform the user there are no logged
-// results available.
-// ---------------------------------------------------------------------------
-//
-void CDevDiagSuiteView::DismissWaitDialogPreparingL()
- {
- LOGSTRING( "CDevDiagSuiteView::DismissWaitDialogPreparingL()" )
-
- __ASSERT_DEBUG( iWaitDialog, Panic( EDevDiagApplicationGeneral ) );
-
- // Stop the wait dialog.
- iWaitDialog->ProcessFinishedL();
- iWaitDialog = NULL;
-
- }
-
-// ---------------------------------------------------------------------------
-// Check and display a dialog if there is a crashed test record. Only the last
-// crashed test record is counted.
-// ---------------------------------------------------------------------------
-//
-void CDevDiagSuiteView::CheckCrashedTestL()
- {
- LOGSTRING("CDevDiagSuiteView::CheckCrashedTestL");
- TUid pluginUid;
- TBool found = EFalse;
- TInt error = KErrNone;
- found = iEngine.CrashedPluginL( pluginUid );
- LOGSTRING2("CrashedPlugin Found = %d", found);
- if ( found )
- {
- //Complete the record.
- ///@@@KSR: changes for Codescanner error val = High
- //error = iEngine.CompleteCrashedTestRecord();
- error = iEngine.CompleteCrashedTestRecordL();
-
- if ( error != KErrNone )
- {
- LOGSTRING2( "CDevDiagSuiteView::CheckCrashedTestL 1() error: %d", error );
- Panic( EDevDiagCheckCrashedTest );
- }
-
- MDiagPlugin* plugin = NULL;
- error = iEngine.PluginPool().FindPlugin( pluginUid, plugin );
-
- HBufC* name = plugin->GetPluginNameL( MDiagPlugin::ENameLayoutPopupInfoPane );
- CleanupStack::PushL( name );
-
- HBufC* text = StringLoader::LoadLC( R_DIAG_CONF_QUERY_AFTER_CRASH, *name );
-
- CAknMessageQueryDialog* dlg = new (ELeave) CAknMessageQueryDialog;
-
- dlg->PrepareLC( R_DEVDIAG_EXECUTE_CRASHED_TEST_MESSAGEQUERY_DIALOG );
-
- dlg->SetMessageTextL( *text );
-
- HBufC* headerText = plugin->GetPluginNameL( MDiagPlugin::ENameLayoutHeadingPane );
- CleanupStack::PushL( headerText );
-
- dlg->SetHeaderTextL( *headerText );
-
- CleanupStack::PopAndDestroy();
-
- if (dlg->RunLD())
- {
- //Create a new test run.
- iEngine.ExecuteTestL( pluginUid, *AppUi() );
- }
-
- CleanupStack::PopAndDestroy();
- CleanupStack::PopAndDestroy();
- }
- }
-
-
-// ----------------------------------------------------------------------------
-// This is needed after performing a group of tests succesfully.
-// ----------------------------------------------------------------------------
-//
-void CDevDiagSuiteView::DisplayConfirmationDialogL( )
- {
- CAknConfirmationNote* note =
- new (ELeave) CAknConfirmationNote( ETrue ); //Waiting
-
- HBufC* text = NULL;
-
- text = StringLoader::LoadLC( R_DIAG_CONF_TEST_PASSED );
-
- note->ExecuteLD( *text ); //Blocks until note dismissed
-
- CleanupStack::PopAndDestroy();
- }
-
-
-// ----------------------------------------------------------------------------
-// This is needed after performing a group of tests
-//
-// Display dialog text according to the test result.
-//
-// Message query dialog will display a list of failed test cases.
-// ----------------------------------------------------------------------------
-//
-void CDevDiagSuiteView::DisplayMessageQueryDialogFailedResultsL()
- {
- CAknMessageQueryDialog* dlg = new (ELeave) CAknMessageQueryDialog();
-
- dlg->PrepareLC( R_DEVDIAG_FAILED_TESTS_MESSAGEQUERY_DIALOG );
-
- HBufC* failText = StringLoader::LoadL( R_DIAG_CONF_TEST_FAILED );
- CleanupStack::PushL( failText );
-
- HBufC* failedTests = CreateResultsTextsForFailedTestsLC( iEngine.ExecutionResults() );
-
- TInt newBufLength = failText->Length() + failedTests->Length();
-
- HBufC* text = HBufC::NewLC( newBufLength );
-
- text->Des().Append( *failText );
- text->Des().Append( *failedTests );
-
- dlg->SetMessageTextL( *text );
-
- CleanupStack::PopAndDestroy();
- CleanupStack::PopAndDestroy();
- CleanupStack::PopAndDestroy();
-
- if (dlg->RunLD())
- {
-
- }
- }
-
-
-// ----------------------------------------------------------------------------
-// Loads names of the tests that failed.
-// ----------------------------------------------------------------------------
-//
-HBufC* CDevDiagSuiteView::CreateResultsTextsForFailedTestsLC(
- const CDevDiagExecResults& aExecResults )
- {
- LOGSTRING("CDevDiagSuiteView::CreateResultsTextsForFailedTestsLC");
- RBuf resultText;
- CleanupClosePushL( resultText );
-
- resultText.CreateL( KFailedTestsMaxLength );
-
- TBool firstLineFeed = ETrue;
-
- for ( TInt i = 0; i < aExecResults.Count(); ++i )
- {
- const CDevDiagExecResults::CResult& result = aExecResults[i];
-
- //if item == NULL it is a test suite
- const CDiagResultsDatabaseItem* item = result.Result();
-
- if (item && !item->WasDependency())
- {
-
- //List failed test cases
- if ( item && item->TestResult() == CDiagResultsDatabaseItem::EFailed )
- {
- const MDiagPlugin& plugin = result.Plugin();
-
- //Note the correct layout. Name is used in the pop-up info pane.
- HBufC* name = plugin.GetPluginNameL( MDiagPlugin::ENameLayoutPopupInfoPane );
- CleanupStack::PushL( name );
-
- if ( resultText.MaxLength() < resultText.Length() + name->Length() )
- {
- HBufC* temp = resultText.AllocLC();
- resultText.ReAlloc( resultText.Length() + KFailedTestsMaxLength );
- resultText.Append( *temp );
- CleanupStack::PopAndDestroy();
- }
-
- if ( !firstLineFeed )
- {
- resultText.Append( KLinefeed );
- }
- else
- {
- firstLineFeed = EFalse;
- }
-
- resultText.Append( *name );
- resultText.Append(KTabfeed);
-
- CleanupStack::PopAndDestroy();
- }
- }
- }
-
- //contains combined result texts
- HBufC* result = resultText.AllocL();
-
- CleanupStack::PopAndDestroy();
-
- CleanupStack::PushL( result );
- return result;
- }
-//End of file