devicediagnostics/devdiagapp/src/devdiagpluginview.cpp
changeset 18 7d11f9a6646f
parent 4 75a71fdb4c92
child 21 c707676bf59f
--- 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