--- a/devicediagnostics/devdiagapp/src/devdiagpluginview.cpp Tue Feb 02 00:03:17 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,686 +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: Plug-in view
-*
-*/
-
-
-// INCLUDE FILES
-
-#include "devdiagapp.hrh"
-#include "devdiagplugincontainer.h"
-#include "devdiagengine.h"
-#include "devdiagpluginview.h"
-#include "devdiagdef.h"
-#include "devdiag.pan"
-#include "devdiagexecutionresults.h"
-
-#include <DiagPlugin.h>
-#include <devdiagapp.rsg> //resources
-#include <AknQueryDialog.h>
-#include <aknradiobuttonsettingpage.h>
-#include <aknViewAppUi.h>
-#include <featmgr.h>
-#include <StringLoader.h>
-#include <bautils.h>
-#include <coeaui.h>
-#include <eikfrlbd.h>
-#include <gulicon.h>
-#include <hlplch.h> // For HlpLauncher
-#include <akntitle.h>
-#include <aknmessagequerydialog.h>
-#include <aknnotewrappers.h>
-#include <DiagFrameworkDebug.h> // Debug Logger
-#include <DiagResultsDatabaseItem.h>
-
-// EXTERNAL DATA STRUCTURES
-
-// EXTERNAL FUNCTION PROTOTYPES
-
-// CONSTANTS
-
-// MACROS
-
-// LOCAL CONSTANTS AND MACROS
-_LIT(KLinefeed, "\n");
-_LIT(KTabfeed, "\t");
-const TInt KFailedTestsMaxLength(1024);
-
-// MODULE DATA STRUCTURES
-
-// LOCAL FUNCTION PROTOTYPES
-
-// FORWARD DECLARATIONS
-
-// ============================= LOCAL FUNCTIONS ==============================
-
-// ========================= MEMBER FUNCTIONS ================================
-
-// ----------------------------------------------------------------------------
-// CDevDiagPluginView::CDevDiagPluginView()
-//
-// Constructor
-// ----------------------------------------------------------------------------
-//
-CDevDiagPluginView::CDevDiagPluginView( CDevDiagEngine& aEngine, TUid aParentSuiteUid ):
- iContainer(NULL), iEngine(aEngine), iParentSuiteUid( aParentSuiteUid )
- {
- }
-
-
-// ---------------------------------------------------------------------------
-// CDevDiagPluginView::NewL()
-//
-// Symbian OS default constructor
-// ---------------------------------------------------------------------------
-CDevDiagPluginView* CDevDiagPluginView::NewL( CDevDiagEngine& aEngine,
- TUid aParentSuiteUid )
- {
- LOGSTRING("CDevDiagPluginView* CDevDiagPluginView::NewL");
- CDevDiagPluginView* self = new( ELeave )
- CDevDiagPluginView ( aEngine, aParentSuiteUid );
-
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop();
-
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CDevDiagPluginView::ConstructL()
-//
-// Symbian OS two-phased constructor
-// ---------------------------------------------------------------------------
-void CDevDiagPluginView::ConstructL()
- {
- if ( iParentSuiteUid == KDDHardwareSuiteUid )
- {
- BaseConstructL( R_DD_HW_PLUGIN_VIEW );
- ChangeTitleL( R_DIAG_TITLE_HARDWARE );
- }
- else if ( iParentSuiteUid == KDDConnectivitySuiteUid )
- {
- BaseConstructL( R_DD_CONNECTIVITY_PLUGIN_VIEW );
- ChangeTitleL( R_DIAG_TITLE_CONNECTIVITY );
- }
- else if ( iParentSuiteUid == KDDServicesSuiteUid )
- {
- BaseConstructL( R_DD_SERVICE_PLUGIN_VIEW );
- ChangeTitleL( R_DIAG_TITLE_SERVICE );
- }
- else if ( iParentSuiteUid == KDDCoverageSuiteUid)
- {
- BaseConstructL( R_DD_COVERAGE_PLUGIN_VIEW );
- ChangeTitleL( R_DIAG_TITLE_COVERAGE );
- }
- else
- {
- Panic( EDDApplicationUnknownSuite );
- }
-
- }
-
-
-// ----------------------------------------------------------------------------
-// CDevDiagPluginView::~CDevDiagPluginView
-//
-// Destructor
-// ----------------------------------------------------------------------------
-CDevDiagPluginView::~CDevDiagPluginView()
- {
-
- if ( iContainer )
- {
- delete iContainer;
- }
-
- }
-
-
-// ---------------------------------------------------------------------------
-// TUid CDevDiagPluginView::Id()
-//
-// Returns view's ID.
-// ---------------------------------------------------------------------------
-TUid CDevDiagPluginView::Id() const
- {
- return KDDPluginViewId;
- }
-
-
-// ---------------------------------------------------------------------------
-// Set context menu bar according to the suite.
-// ---------------------------------------------------------------------------
-void CDevDiagPluginView::SetContextMenu()
- {
- if ( iParentSuiteUid == KDDHardwareSuiteUid )
- {
-
- MenuBar()->SetContextMenuTitleResourceId( R_DD_HW_CONTEXT_MENUBAR );
- }
- else if ( iParentSuiteUid == KDDConnectivitySuiteUid )
- {
- MenuBar()->SetContextMenuTitleResourceId( R_DD_CONNECTIVITY_CONTEXT_MENUBAR );
- }
- else if ( iParentSuiteUid == KDDServicesSuiteUid )
- {
- MenuBar()->SetContextMenuTitleResourceId( R_DD_SERVICE_CONTEXT_MENUBAR );
- }
- else if ( iParentSuiteUid == KDDCoverageSuiteUid)
- {
- MenuBar()->SetContextMenuTitleResourceId( R_DD_COVERAGE_CONTEXT_MENUBAR );
- }
- else
- {
- Panic( EDDApplicationUnknownSuite );
- }
- }
-// ---------------------------------------------------------------------------
-// CDevDiagPluginView::HandleCommandL(TInt aCommand)
-//
-// Handles commands directed to this class.
-// ---------------------------------------------------------------------------
-void CDevDiagPluginView::HandleCommandL( TInt aCommand )
- {
- LOGSTRING("CDevDiagPluginView::HandleCommandL");
- switch ( aCommand )
- {
-
- case EDDCmdPerformSingle:
- {
- // State == EStateReady then run tests
- if (iEngine.GetState()== 2)
- {
- LOGSTRING("iState == EStateReady");
- iContainer->DisplayStartTestingL();
-
- MDiagPlugin* plugin = NULL;
- iContainer->SelectedPlugin(plugin);
-
- iEngine.ExecuteTestL( plugin->Uid(), *AppUi() );
- }
- else
- {
- LOGSTRING2("PluginView::iEngine::iState = %d ", iEngine.GetState());
- LOGSTRING ("Trying to Execute Plugin @ Invalid State");
- }
- break;
- }
-
- case EAknSoftkeyBack:
- {
- if (iEngine.GetState()== 2)
- {
- LOGSTRING("Before Activate Local View for Back");
-
- AppUi()->ActivateLocalViewL( KDDMainViewId );
-
- LOGSTRING("After Activate Local View for Back");
-
- }
-
- else
- {
- LOGSTRING2("PluginView::iEngine::iState = %d ", iEngine.GetState());
- LOGSTRING ("Trying to issue Back @ Invalid State");
- }
- break;
- }
-
- case EDDMenuCmdMainHelp:
- {
- MessageQueryDialogLaunchL(
- R_MESSAGE_QUERY_HELP_NOTE );
- break;
- }
-
- case EAknCmdHelp:
- {
-
-
- if( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
- {
- HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
- AppUi()->AppHelpContextL() );
- }
-
- break;
- }
-
- case EDDCmdPerformAllHwTests:
- {
- //ask confirmation from the user
- TBool ok = MessageQueryDialogLaunchL(
- R_MESSAGE_QUERY_PERFORM_ALL_HW_TESTS );
- if ( ok )
- {
- iContainer->ResetL();
- iContainer->DisplayStartTestingL();
- //Engine will populate the suite
- iEngine.ExecuteTestL( KDDHardwareSuiteUid, *AppUi() );
- }
-
- break;
- }
-
- case EDDCmdPerformAllCoverageTests:
- {
-
- //ask confirmation from the user
- TBool ok = MessageQueryDialogLaunchL(
- R_MESSAGE_QUERY_PERFORM_ALL_COVERAGE_TESTS );
- if ( ok )
- {
- //Engine will populate the suite
- iEngine.ExecuteTestL( KDDCoverageSuiteUid, *AppUi() );
- }
-
- break;
- }
-
- //These have only one test, so performing all is not needed yet
- case EDDCmdPerformAllServiceTests:
- {
- break;
- }
-
- case EDDCmdPerformAllConnTests:
- {
- 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;
- }
- }
-
-// ----------------------------------------------------------------------------
-// CDevDiagPluginView::DoActivateL
-//
-// First method called by the Avkon framwork to invoke a view.
-// ----------------------------------------------------------------------------
-//
-void CDevDiagPluginView::DoActivateL( const TVwsViewId& /*aPrevViewId*/,
- TUid /*aCustomMessageId*/ ,
- const TDesC8& /*aCustomMessage*/ )
- {
- if( iContainer )
- {
- AppUi()->RemoveFromStack( iContainer );
-
- delete iContainer;
- iContainer = NULL;
- }
-
- iContainer = CDevDiagPluginContainer::NewL( this, iEngine, ClientRect() );
- iContainer->SetMopParent( this );
- AppUi()->AddToStackL( iContainer );
-
- iEngine.SetObserver( this );
-
- //Construct the model
- iContainer->UpdateModelL( iParentSuiteUid );
-
- SetContextMenu();
-
- //Retrieve last test results. HandleEngineCommandL with
- //EDevDiagEngineCommandGetLastResults is called after this.
- iEngine.GetLastResultsL( iParentSuiteUid );
- }
-
-// ----------------------------------------------------------------------------
-// CDevDiagPluginView::DoDeactivate
-//
-// Called by the Avkon view framework when closing.
-// ----------------------------------------------------------------------------
-//
-void CDevDiagPluginView::DoDeactivate()
- {
- if ( iContainer )
- {
- AppUi()->RemoveFromStack( iContainer );
- delete iContainer;
- iContainer = NULL;
- }
- }
-
-
-// ----------------------------------------------------------------------------
-// Handle CDevDiagEngine events.
-//
-// EDevDiagEngineCommandTestExecutionDone is called when single or group
-// execution finishes.
-//
-// MDevDiagEngineObserver::EDevDiagEngineCommandResultsDataUpdated is called
-// when a plug-in is executed.
-//
-// EDevDiagEngineCommandGetLastResults is called after
-// iEngine.GetLastResultsL( iParentSuiteUid ) is called. It retrieves the
-// last results.
-// ----------------------------------------------------------------------------
-//
-void CDevDiagPluginView::HandleEngineCommandL( TAppEngineCommand aCommand,
- TInt aError,
- TAny* aCustom )
- {
- LOGSTRING("CDevDiagPluginView::HandleEngineCommandL");
- switch ( aCommand )
- {
- case MDevDiagEngineObserver::EDevDiagEngineCommandGroupExecutionDone:
- {
- if ( aError != KErrNone )
- {
- LOGSTRING2("MDevDiagEngineObserver::Exec Done Error: %d: ", aError);
- return;
- }
-
- iEngine.GetLastResultsL( iParentSuiteUid );
-
- if ( iEngine.HasExecutionResults() )
- {
- TInt failedCount = iEngine.ExecutionResults().FailedResultsCount();
-
- TInt passedCount = iEngine.ExecutionResults().PassedResultsCount();
-
- if ( failedCount == 0 && passedCount > 0)
- {
- DisplayConfirmationDialogL(R_DIAG_CONF_TEST_PASSED);
- }
- else if(failedCount > 0)
- {
- DisplayMessageQueryDialogFailedResultsL();
- }
- }
-
- break;
- }
-
- case MDevDiagEngineObserver::EDevDiagEngineCommandGroupExecutionProgress:
- {
- if ( aError != KErrNone )
- {
- LOGSTRING2("MDevDiagEngineObserver::ExecutionProgress Error: %d: ", aError);
- return;
- }
-
- iEngine.GetLastResultsL( iParentSuiteUid );
-
- iContainer->MoveStartTestingDownL();
-
- break;
- }
- case MDevDiagEngineObserver::EDevDiagEngineCommandGetLastResults:
- {
- if ( aError != KErrNone )
- {
- LOGSTRING2("MDevDiagEngineObserver::GetLastResults Error: %d: ", aError);
- return;
- }
-
- RPointerArray<CDiagResultsDatabaseItem>* array =
- static_cast<RPointerArray<CDiagResultsDatabaseItem>*> (aCustom);
- iContainer->DisplayChildrenWithResultsL( *array );
-
-
- if ( iEngine.HasExecutionResults() && !iEngine.ExecutionResults().LastTestFinishedL())
- {
- iContainer->MoveStartTestingDownL();
- }
-
-
- break;
- }
- case MDevDiagEngineObserver::EDevDiagEngineCommandSinglePluginExecutionDone:
- {
-
- if(!iEngine.GetPluginDependencyL())
- iEngine.GetLastResultsL( iParentSuiteUid );
-
- if ( aError != KErrNone )
- {
- LOGSTRING2("MDevDiagEngineObserver::SinglePluginExecutionDone Error: %d: ", aError);
- return;
- }
-
- //iEngine.GetLastResultsL( iParentSuiteUid ); // ADO & Platformization Changes
-
- // ADO & Platformization Changes
-
- ///@@@KSR: changes for Codescanner error val = High
- //if(iEngine.ExecutionResults().SinglePluginExecutionL() && !iEngine.GetPluginDependency())
- if(iEngine.ExecutionResults().SinglePluginExecutionL() && !iEngine.GetPluginDependencyL())
- {
-
- const CDiagResultsDatabaseItem* aResult;
- aResult = iEngine.ExecutionResults().GetSinglepluginExecutionResult();
-
-
- if(aResult->TestResult() == CDiagResultsDatabaseItem::ESuccess)
- {
- DisplayConfirmationDialogL(R_DIAG_CONF_TEST_PASSED_1);
- LOGSTRING("The test has passed");
- }
- else if(aResult->TestResult() == CDiagResultsDatabaseItem::EFailed)
- {
- DisplayConfirmationDialogL(R_DIAG_CONF_TEST_FAILED_1);
- LOGSTRING("The test has failed");
- }
- }
-
-
- // Changes ends
-
- break;
- }
-
- case MDevDiagEngineObserver::EDevDiagEngineCommandTestExecutionCancelled:
- {
- //Update container.
- iEngine.GetLastResultsL( iParentSuiteUid );
-
- if ( iEngine.HasExecutionResults() )
- {
- TInt failedCount = iEngine.ExecutionResults().FailedResultsCount();
-
- TInt passedCount = iEngine.ExecutionResults().PassedResultsCount();
-
- if ( failedCount == 0 && passedCount > 0)
- {
- DisplayConfirmationDialogL(R_DIAG_CONF_TEST_PASSED);
- }
- else if(failedCount > 0)
- {
- DisplayMessageQueryDialogFailedResultsL();
- }
- }
-
- break;
- }
- }
- }
-
-
-// ----------------------------------------------------------------------------
-// Change the title of the application.
-//
-// ----------------------------------------------------------------------------
-//
-void CDevDiagPluginView::ChangeTitleL(TInt aResourceId)
- {
- CAknTitlePane* titlePane =
- (CAknTitlePane*)(AppUi()->StatusPane())->ControlL(
- TUid::Uid( EEikStatusPaneUidTitle ) );
-
- HBufC* titleText = iEikonEnv->AllocReadResourceLC( aResourceId );
- titlePane->SetTextL( titleText->Des() );
- CleanupStack::PopAndDestroy(titleText);
- }
-
-
-// ----------------------------------------------------------------------------
-// Display a message query dialog.
-//
-// ----------------------------------------------------------------------------
-//
-TBool CDevDiagPluginView::MessageQueryDialogLaunchL( TInt aResourceId )
- {
- CAknMessageQueryDialog* dlg = new (ELeave) CAknMessageQueryDialog();
-
- dlg->PrepareLC( aResourceId );
-
- if (dlg->RunLD())
- {
- return ETrue;
- }
-
- return EFalse;
- }
-
-
-// ----------------------------------------------------------------------------
-// This is needed after performing a group of tests succesfully.
-// ----------------------------------------------------------------------------
-//
-void CDevDiagPluginView::DisplayConfirmationDialogL(TInt aResourceId)
- {
- CAknConfirmationNote* note =
- new (ELeave) CAknConfirmationNote( ETrue ); //Waiting
-
- HBufC* text = NULL;
-
- text = StringLoader::LoadLC( aResourceId );
-
- 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 CDevDiagPluginView::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* CDevDiagPluginView::CreateResultsTextsForFailedTestsLC(
- const CDevDiagExecResults& aExecResults )
- {
- 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