devicediagnostics/diagplugins/diagheadsetcableplugin/src/diagheadsetcableengine.cpp
--- a/devicediagnostics/diagplugins/diagheadsetcableplugin/src/diagheadsetcableengine.cpp Tue Feb 02 00:03:17 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,416 +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: This is the class module for the Diag Headset Cable Test Engine
-*
-*/
-
-
-// INCLUDE FILES
-
-// Class Declaration
-#include "diagheadsetcableengine.h"
-
-#include <StringLoader.h> // StringLoader
-#include <HeadsetStatus.h> // CHeadsetStatus
-#include <aknmessagequerydialog.h> // CAknMessageQueryDialog
-#include <DiagFrameworkDebug.h> // debug macros
-#include <devdiagheadsetcabletestpluginrsc.rsg> // resources
-#include <DiagPluginWaitingDialogWrapper.h> // CDiagPluginWaitingDialogWrapper
-
-#include "diagheadsetcabletestplugin.hrh" // command ids
-
-// EXTERNAL DATA STRUCTURES
-
-// EXTERNAL FUNCTION PROTOTYPES
-
-// CONSTANTS
-
-// MACROS
-
-// LOCAL CONSTANTS AND MACROS
-
-// MODULE DATA STRUCTURES
-
-// LOCAL FUNCTION PROTOTYPES
-
-// FORWARD DECLARATIONS
-
-// ============================= LOCAL FUNCTIONS ==============================
-
-// ========================= MEMBER FUNCTIONS ================================
-
-// ---------------------------------------------------------------------------
-// Symbian OS default constructor
-// ---------------------------------------------------------------------------
-//
-CDiagHeadsetCableTestEngine* CDiagHeadsetCableTestEngine::NewL(
- MDiagHeadsetTestCallBackInterface& aInterface,
- TBool aIsSinglePluginExecution)
- {
- LOGSTRING( "CDiagHeadsetCableTestEngine instance created" )
- CDiagHeadsetCableTestEngine* self = new (ELeave)
- CDiagHeadsetCableTestEngine(aInterface, aIsSinglePluginExecution);
-
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-
-// ----------------------------------------------------------------------------
-// Constructor
-// ----------------------------------------------------------------------------
-//
-CDiagHeadsetCableTestEngine::CDiagHeadsetCableTestEngine(
- MDiagHeadsetTestCallBackInterface& aInterface,
- TBool aIsSinglePluginExecution)
- : CActive( EPriorityStandard ),
- iInterface(aInterface),
- iWaitingDialogWrapper( NULL ),
- iIsSinglePluginExecution(aIsSinglePluginExecution)
- {
- CActiveScheduler::Add( this );
- }
-
-// ----------------------------------------------------------------------------
-// Destructor
-// ----------------------------------------------------------------------------
-//
-CDiagHeadsetCableTestEngine::~CDiagHeadsetCableTestEngine()
- {
- LOGSTRING( "CDiagHeadsetCableTestEngine instance destroyed" )
- Cancel();
-
- delete iWaitingDialogWrapper; // deleting will dismiss active dialog
- iWaitingDialogWrapper = NULL;
- }
-
-// ---------------------------------------------------------------------------
-// Symbian OS second phase constructor
-// ---------------------------------------------------------------------------
-void CDiagHeadsetCableTestEngine::ConstructL()
- {
- // nothting needed here
- }
-
-// ----------------------------------------------------------------------------
-// This function starts the Headset cable test
-// ----------------------------------------------------------------------------
-void CDiagHeadsetCableTestEngine::RunHeadsetCableTestL()
- {
- TInt userResponse;
- if ( !ConnectAndPressOkL( userResponse ) )
- {
- // "Connect Headset and Press OK" dialog was dismisses internally by framework
- // return immediately
- LOGSTRING( "CDiagHeadsetCableTestEngine : Connect Headset and press ok dialog dismissed internally" )
- return;
- }
-
- switch( userResponse )
- {
- // User select OK for "Connect Headset and Press OK" dialog
- case EAknSoftkeyOk:
- {
- //TInt keySelect;
- // check if headset cable is connected
- if( CheckIfHeadsetDetectedL() )
- {
- // Headset cable is detected.
- LOGSTRING( "CDiagHeadsetCableTestEngine : Headset detected" )
- // if ( !RemoveAllCablesL( keySelect ) )
- // {
- // LOGSTRING( "CDiagHeadsetCableTestEngine : Remove All Cable dialog was dismissed internally pressed" )
- // return;
- // }
-
- // if ( keySelect != EAknSoftkeyOk )
- // {
- // LOGSTRING( "CDiagHeadsetCableTestEngine : EndKey has pressed" )
- // return;
- // }
- LOGSTRING( "CDiagHeadsetCableTestEngine : Report result Success" )
- ReportResultToPluginL(CDiagResultsDatabaseItem::ESuccess);
- }
- else
- {
- // Headset cable is not detected
- if ( !AskIfRetryL( userResponse ) )
- {
- // Retry Back dialog was dismissed internally by framework internally
- LOGSTRING( "CDiagHeadsetCableTestEngine : Ask for retry dialog dismissed internally" )
- return;
- }
-
- //if( userResponse == EAknSoftkeyOk ) // ADO & Platformization Changes
- if( userResponse == EHeadsetTestConnectHeadsetNo )
- {
- // User selects Ok to confirm, Test fails
- ReportResultToPluginL(CDiagResultsDatabaseItem::EFailed);
- }
- // else if( userResponse == EHeadsetTestConnectHeadsetBack ) // ADO & Platformization Changes
- else if( userResponse == EHeadsetTestConnectHeadsetYes )
- {
- // User selectes Back to retry the test
- TRequestStatus* status = &iStatus;
- SetActive();
- User::RequestComplete( status, KErrNone );
- }
- else
- {
- // User cancels the test using Canceld end key, return immediately
- return;
- }
- }
- }
- break;
- // User select CANCEL softkey for "Connect Headset and Press OK" dialog
- case EHeadsetTestConnectHeadsetSkip:
- case EHeadsetTestConnectHeadsetCancel:
- {
- if(!iIsSinglePluginExecution)
- {
- if( iInterface.AskCancelExecutionL(userResponse) )
- {
- switch(userResponse)
- {
- case EAknSoftkeyOk:
- {
- //CompleteTestL( CDiagResultsDatabaseItem::ECancelled );
- LOGSTRING( "CDiagHeadsetCableTestEngine User cancelled the test" )
- return;
- }
-
- default:
- {
- // currently no way distinguish between Cancel and No key
-
- // user selected "No" to cancel
- // do a self-trigger to start again
- TRequestStatus* status = &iStatus;
- SetActive();
- User::RequestComplete( status, KErrNone );
-
- // this trigger for Cancel key is cancelled by CActive::Cancel() in destructor
- }
- break;
- }
- }
- else
- {
- // though cancel dialog should not be dismissed internally by the framework
- // this is just a safeguard to make sure we dont do anything
- LOGSTRING( "CDiagHeadsetCableTestEngine Cancel dialog was dismissed internally" )
- return;
- }
- }
- else
- {
- ReportResultToPluginL( CDiagResultsDatabaseItem::ESkipped );
- return;
- }
- }
- break;
-
- // User select CANCEL (RED End KEY) for "Connect Headset and Press OK" dialog
- default:
- {
- LOGSTRING( "CDiagHeadsetCableTestEngine Connect Headset and press OK dialog was cancelled by end key." )
- }
- break;
- };
-
- }
-
-// ----------------------------------------------------------------------------
-// CDiagHeadsetCableTestEngine::CheckIfHeadsetDetectedL
-//
-// This function reports the result to plugin
-// ----------------------------------------------------------------------------
-TBool CDiagHeadsetCableTestEngine::CheckIfHeadsetDetectedL()
- {
- TBool retval = EFalse;
- TBool isConnected = EFalse;
- CHeadsetStatus* aHeadsetStatus = CHeadsetStatus::NewL();
-
- CleanupStack::PushL( aHeadsetStatus );
- TInt err( aHeadsetStatus->HeadsetConnectedL( isConnected ) );
- CleanupStack::PopAndDestroy( aHeadsetStatus );
-
- if(err == KErrNone)
- {
- if( isConnected )
- {
- LOGSTRING( "CDiagHeadsetCableTestEngine Headset cable is connected" )
- retval = ETrue; // headset is connected
- }
- else
- {
- LOGSTRING( "CDiagHeadsetCableTestEngine Headset cable is not connected" )
- retval = EFalse; // headset is not connected
- }
- }
- else
- {
- LOGSTRING( "CDiagHeadsetCableTestEngine some error occurred in detecting Headset cable" )
- retval = EFalse; // some error occurred
- }
-
- return retval;
- }
-
-
-
-// ----------------------------------------------------------------------------
-// CDiagHeadsetCableTestEngine::ReportResultToPluginL
-//
-// This function reports the result to plugin
-// ----------------------------------------------------------------------------
-void CDiagHeadsetCableTestEngine::ReportResultToPluginL(CDiagResultsDatabaseItem::TResult aResult)
- {
- iInterface.ReportTestResultL( aResult );
- }
-
-// ---------------------------------------------------------------------------------------
-// CDiagHeadsetCableTestEngine::ConnectAndPressOkL
-// This function shows the query dialog "Connect your Headset charger. Press OK when ready."
-// ---------------------------------------------------------------------------------------
-TBool CDiagHeadsetCableTestEngine::ConnectAndPressOkL( TInt& aUserResponse )
- {
- ASSERT( iWaitingDialogWrapper == NULL );
-
- CAknQueryDialog* dialog = CAknQueryDialog::NewL( CAknQueryDialog::ENoTone );
- CleanupStack::PushL( dialog );
- dialog->PrepareLC( R_DIAG_HEADSET_CABLE_TEST_CONNECT_AND_PRESS_OK );
- if( iIsSinglePluginExecution )
- {
- CEikButtonGroupContainer& cba = dialog->ButtonGroupContainer();
- cba.SetCommandSetL( R_CBA_CONNECT_AND_PRESS_OK_SINGLE_EXECUTION );
- }
- CleanupStack::Pop( dialog );
-
- // dialog ownership to bepassed to iWaitingDialogWrapper
- // CDiagPluginWaitingDialogWrapper::NewL will push dialog into clean up stack
- iWaitingDialogWrapper = CDiagPluginWaitingDialogWrapper::NewL( dialog );
- dialog = NULL;
-
- TBool isDialogDismissedByUser = iWaitingDialogWrapper->RunLD( aUserResponse );
- if ( isDialogDismissedByUser )
- {
- // local variable can be accessed only if it was returned due to
- // user response. iWaitingDialogWrapper self destructs.
- iWaitingDialogWrapper = NULL;
- }
-
- return isDialogDismissedByUser;
- }
-
-// ---------------------------------------------------------------------------------------
-// CDiagHeadsetCableTestEngine::RemoveAllCables
-// This function shows the query dialog : Please remove all cables
-// ---------------------------------------------------------------------------------------
-TBool CDiagHeadsetCableTestEngine::RemoveAllCablesL( TInt& aUserResponse )
- {
- ASSERT( iWaitingDialogWrapper == NULL );
-
- CAknQueryDialog* dialog = CAknQueryDialog::NewL( CAknQueryDialog::ENoTone );
-
- dialog->PrepareLC( R_DIAG_CABLE_TEST_REMOVE_ALL_CABLES );
-
- // dialog ownership to bepassed to iWaitingDialogWrapper
- // CDiagPluginWaitingDialogWrapper::NewL will push dialog into clean up stack
- iWaitingDialogWrapper = CDiagPluginWaitingDialogWrapper::NewL( dialog );
- dialog = NULL;
-
- TBool isDialogDismissedByUser = iWaitingDialogWrapper->RunLD( aUserResponse );
- if ( isDialogDismissedByUser )
- {
- // local variable can be accessed only if it was returned due to
- // user response. iWaitingDialogWrapper self destructs.
- iWaitingDialogWrapper = NULL;
- }
-
- return isDialogDismissedByUser;
- }
-
-// ----------------------------------------------------------------------------
-// CDiagHeadsetCableTestEngine::AskIfRetryL
-// This function shows the query dialog "No cable detected. Press OK to continue
-// tests or press Back to retry this test."
-// ----------------------------------------------------------------------------
-TBool CDiagHeadsetCableTestEngine::AskIfRetryL( TInt& aUserResponse )
- {
- return DisplayQueryDialogWithHeaderL( R_DIAG_HEADSET_CABLE_TEST_NO_CABLE_DETECTED,
- aUserResponse );
- }
-
-// ---------------------------------------------------------------------------------------
-// CDiagHeadsetCableTestEngine::DisplayQueryDialogWithHeaderL
-// This function shows the query dialog with header. It returns ETrue,
-// if the dialog is dismissed by user. If the dialog was dismissed because of time-out,
-// it returns EFalse. The user response (softkey) is returned in the reference
-// argument aUserResponse
-// ---------------------------------------------------------------------------------------
-TBool CDiagHeadsetCableTestEngine::DisplayQueryDialogWithHeaderL(
- TInt aDialogResourceId,
- TInt& aUserResponse )
- {
- ASSERT( iWaitingDialogWrapper == NULL );
-
- CAknMessageQueryDialog * dialog = new ( ELeave )
- CAknMessageQueryDialog ( CAknQueryDialog::ENoTone );
- CleanupStack::PushL( dialog );
- dialog->PrepareLC( aDialogResourceId );
- CleanupStack::Pop( dialog );
-
- // dialog ownership to bepassed to iWaitingDialogWrapper
- // CDiagPluginWaitingDialogWrapper::NewL will push dialog into clean up stack
- iWaitingDialogWrapper = CDiagPluginWaitingDialogWrapper::NewL( dialog );
- dialog = NULL;
-
- TBool isDialogDismissedByUser = iWaitingDialogWrapper->RunLD( aUserResponse );
- if ( isDialogDismissedByUser )
- {
- // local variable can be accessed only if it was returned due to
- // user response. iWaitingDialogWrapper self destructs.
- iWaitingDialogWrapper = NULL;
- }
-
- return isDialogDismissedByUser;
- }
-
-
-// ---------------------------------------------------------------------------------------
-// CDiagHeadsetCableTestEngine::RunL
-// RunL() function is used in this plug-in to handle internal trigger
-// ---------------------------------------------------------------------------------------
-void CDiagHeadsetCableTestEngine::RunL()
- {
- if(iStatus == KErrNone)
- {
- RunHeadsetCableTestL();
- }
- }
-
-// ---------------------------------------------------------------------------------------
-// CDiagHeadsetCableTestEngine::DoCancel
-// Handles cancel request
-// ---------------------------------------------------------------------------------------
-void CDiagHeadsetCableTestEngine::DoCancel()
- {
- // no implementation needed
- }
-
-// End of File