diff -r 13d7c31c74e0 -r b183ec05bd8c devicediagnosticsfw/diagpluginbase/src/diagsuitepluginbase.cpp --- a/devicediagnosticsfw/diagpluginbase/src/diagsuitepluginbase.cpp Thu Aug 19 10:44:50 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,460 +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: Class definition of CDiagSuitePluginBase -* -*/ - - -// CLASS DECLARATION -#include // CDiagSuitePluginBase - -// SYSTEM INCLUDE FILES -#include // REComSession -#include // CCoeEnv::Static() -#include // StringLoader -#include // CDiagPluginConstructionParam -#include // TDiagSuiteExecParam -#include // MDiagSuiteObserver -#include // LOGSTRING -#include // CDiagPluginWaitingDialogWrapper - -// USER INCLUDE FILES -#include "diagpluginbaseutils.h" // DiagPluginBaseUtils -#include "diagpluginbase.pan" // Panic Codes - - -// LOCAL TYPES -/** -* Internal private data class for CDiagSuitePluginBase -*/ -class CDiagSuitePluginBase::TPrivateData - { -public: - /** - * C++ Constructor - * All variables must be initialized here since this does not derive from - * CBase. - * Note that this class does not manage memory. Instead it is left to - * CDiagSuitePluginBase class to allocate/free memory. - */ - TPrivateData( CCoeEnv& aCoeEnv ) - : iDtorIdKey( TUid::Null() ), - iWaitingDialogWrapper( NULL ), - iChildren(), - iPluginResourceLoader( aCoeEnv ) - { - } - -public: // data - /** - * ECOM Destructor key. - */ - TUid iDtorIdKey; - - /** - * Wrapper class for displaying waiting dialogs. - * Ownership: Shared. Normally, dialog will dismiss itself. However, - * if plug-in is being deleted, it can be deleted by the plug-in as well. - */ - CDiagPluginWaitingDialogWrapper* iWaitingDialogWrapper; - - /** - * Array of children. - */ - RPointerArray iChildren; - - /** - * Resource loader for derived class resource. - */ - RConeResourceLoader iPluginResourceLoader; - }; - - -// ======== LOCAL FUNCTIONS ======== -// --------------------------------------------------------------------------- -// Compares two plug-ins by order number. -// --------------------------------------------------------------------------- -// -static TInt ComparePluginByOrder( const MDiagPlugin& aFirst, - const MDiagPlugin& aSecond ) - { - return aFirst.Order() - aSecond.Order(); - } - - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// CDiagSuitePluginBase::CDiagSuitePluginBase -// --------------------------------------------------------------------------- -// -EXPORT_C CDiagSuitePluginBase::CDiagSuitePluginBase( - CDiagPluginConstructionParam* aParam ) - : CActive( EPriorityStandard ), - iConstructionParam( aParam ), - iCoeEnv( *CCoeEnv::Static() ) - { - } - -// --------------------------------------------------------------------------- -// CDiagSuitePluginBase::BaseConstructL -// --------------------------------------------------------------------------- -// -EXPORT_C void CDiagSuitePluginBase::BaseConstructL( const TDesC& aResourceFileName ) - { - iData = new ( ELeave ) TPrivateData( CoeEnv() ); - - DiagPluginBaseUtils::OpenResourceFileL( - aResourceFileName, iData->iPluginResourceLoader, CoeEnv().FsSession() ); - } - - -// --------------------------------------------------------------------------- -// CDiagSuitePluginBase::~CDiagSuitePluginBase -// --------------------------------------------------------------------------- -// -EXPORT_C CDiagSuitePluginBase::~CDiagSuitePluginBase() - { - if ( iData ) - { - DismissWaitingDialog(); - iData->iChildren.Close(); - - if ( iData->iDtorIdKey != TUid::Null() ) - { - REComSession::DestroyedImplementation( iData->iDtorIdKey ); - } - - iData->iPluginResourceLoader.Close(); - - delete iData; - iData = NULL; - } - - delete iConstructionParam; - iConstructionParam = NULL; - } - -// --------------------------------------------------------------------------- -// from MDiagPlugin -// CDiagSuitePluginBase::ServiceLogicalName -// --------------------------------------------------------------------------- -// -EXPORT_C const TDesC& CDiagSuitePluginBase::ServiceLogicalName() const - { - return iConstructionParam->ServiceProvided(); - } - -// --------------------------------------------------------------------------- -// From MDiagPlugin -// CDiagSuitePluginBase::GetLogicalDependenciesL -// --------------------------------------------------------------------------- -// -EXPORT_C void CDiagSuitePluginBase::GetLogicalDependenciesL( - CPtrCArray& aArray ) const - { - aArray.CopyL( iConstructionParam->ServicesRequired() ); - } - - -// --------------------------------------------------------------------------- -// From MDiagPlugin -// CDiagSuitePluginBase::Type -// --------------------------------------------------------------------------- -// -EXPORT_C MDiagPlugin::TPluginType CDiagSuitePluginBase::Type() const - { - return ETypeSuitePlugin; - } - -// --------------------------------------------------------------------------- -// From MDiagPlugin -// CDiagSuitePluginBase::CreateIconL -// --------------------------------------------------------------------------- -// -EXPORT_C CGulIcon* CDiagSuitePluginBase::CreateIconL() const - { - // Currently, GetTitleL() is not supported. - User::Leave( KErrNotSupported ); - return NULL; - } - - -// --------------------------------------------------------------------------- -// From MDiagTestPlugin -// CDiagSuitePluginBase::IsSupported -// --------------------------------------------------------------------------- -// -EXPORT_C TBool CDiagSuitePluginBase::IsSupported() const - { - return ETrue; - } - -// --------------------------------------------------------------------------- -// From MDiagPlugin -// CDiagSuitePluginBase::ParentUid -// --------------------------------------------------------------------------- -// -EXPORT_C TUid CDiagSuitePluginBase::ParentUid() const - { - return iConstructionParam->ParentUid(); - } - - -// --------------------------------------------------------------------------- -// From MDiagPlugin -// CDiagSuitePluginBase::SetDtorIdKey -// --------------------------------------------------------------------------- -// -EXPORT_C void CDiagSuitePluginBase::SetDtorIdKey( TUid aDtorIdKey ) - { - LOGSTRING2( "CDiagTestPluginBase::SetDtorIdKey: New=0x%x", - aDtorIdKey.iUid ) - - __ASSERT_ALWAYS( iData, Panic( EDiagPluginBasePanicInvalidState ) ); - - iData->iDtorIdKey = aDtorIdKey; - } - -// --------------------------------------------------------------------------- -// From MDiagSuitePlugin -// CDiagSuitePluginBase::GetTitleL -// --------------------------------------------------------------------------- -// -EXPORT_C HBufC* CDiagSuitePluginBase::GetTitleL() const - { - // Currently, GetTitleL() is not supported. - User::Leave( KErrNotSupported ); - return NULL; - } - -// --------------------------------------------------------------------------- -// From MDiagSuitePlugin -// CDiagSuitePluginBase::GetDescriptionL -// --------------------------------------------------------------------------- -// -EXPORT_C HBufC* CDiagSuitePluginBase::GetDescriptionL() const - { - // Currently, GetDescriptionL() is not supported. - User::Leave( KErrNotSupported ); - return NULL; - } - -// --------------------------------------------------------------------------- -// From MDiagPlugin -// CDiagSuitePluginBase::CustomOperationL -// --------------------------------------------------------------------------- -// -EXPORT_C TAny* CDiagSuitePluginBase::CustomOperationL( TUid /*aUid*/, - TAny* /*aParam*/ ) - { - LOGSTRING( "CDiagTestPluginBase::CustomOperationL: KErrNotSupported" ) - User::Leave( KErrNotSupported ); - return NULL; - } - -// --------------------------------------------------------------------------- -// From MDiagPlugin -// CDiagSuitePluginBase::GetCustomL -// --------------------------------------------------------------------------- -// -EXPORT_C TAny* CDiagSuitePluginBase::GetCustomL( TUid /* aUid */, - TAny* /*aParam*/ ) - { - LOGSTRING( "CDiagTestPluginBase::CustomOperationL: KErrNotSupported" ) - User::Leave( KErrNotSupported ); - return NULL; - } - -// --------------------------------------------------------------------------- -// From MDiagPlugin -// CDiagSuitePluginBase::Order -// --------------------------------------------------------------------------- -// -EXPORT_C TUint CDiagSuitePluginBase::Order() const - { - return iConstructionParam->Order(); - } - - -// --------------------------------------------------------------------------- -// From MDiagSuitePlugin -// CDiagSuitePluginBase::GetChildrenL -// --------------------------------------------------------------------------- -// -EXPORT_C void CDiagSuitePluginBase::GetChildrenL( RPointerArray& aChildren, - TSortOrder aOrder ) const - { - __ASSERT_ALWAYS( iData, Panic( EDiagPluginBasePanicInvalidState ) ); - __ASSERT_ALWAYS( (aOrder == ENotSorted || aOrder == ESortByPosition), - Panic( EDiagPluginBasePanicBadArgument ) ); - - TInt count = iData->iChildren.Count(); - for ( TInt i = 0; i < count; i++ ) - { - aChildren.AppendL( iData->iChildren[i] ); - } - } - -// --------------------------------------------------------------------------- -// From MDiagSuitePlugin -// CDiagSuitePluginBase::AddChildL -// --------------------------------------------------------------------------- -// -EXPORT_C void CDiagSuitePluginBase::AddChildL( MDiagPlugin* aChild ) - { - __ASSERT_ALWAYS( iData, Panic( EDiagPluginBasePanicInvalidState ) ); - - TLinearOrder order( *ComparePluginByOrder ); - User::LeaveIfError( iData->iChildren.InsertInOrderAllowRepeats( aChild, order ) ); - } - -// --------------------------------------------------------------------------- -// From MDiagTestPlugin -// CDiagSuitePluginBase::TestSessionBeginL -// --------------------------------------------------------------------------- -// -EXPORT_C void CDiagSuitePluginBase::TestSessionBeginL( - MDiagEngineCommon& /* aEngine */, - TBool /* aSkipDependencyCheck */, - TAny* /* aCustomParams */ ) - { - } - -// --------------------------------------------------------------------------- -// From MDiagTestPlugin -// CDiagSuitePluginBase::TestSessionEndL -// --------------------------------------------------------------------------- -// -EXPORT_C void CDiagSuitePluginBase::TestSessionEndL( - MDiagEngineCommon& /* aEngine */, - TBool /* aSkipDependencyCheck */, - TAny* /* aCustomParams */ ) - { - } - -// --------------------------------------------------------------------------- -// From MDiagSuitePlugin -// CDiagSuitePluginBase::PrepareExecutionL -// --------------------------------------------------------------------------- -// -EXPORT_C void CDiagSuitePluginBase::PrepareChildrenExecutionL( - TDiagSuiteExecParam* aParam, - TBool /* aSkipDependencyCheck */, - TBool /* aDependencyExecution */) - { - CleanupStack::PushL( aParam ); - aParam->Observer().ContinueExecutionL( *this ); - CleanupStack::PopAndDestroy ( aParam ); - } - -// --------------------------------------------------------------------------- -// From MDiagSuitePlugin -// CDiagSuitePluginBase::FinalizeExecutionL -// --------------------------------------------------------------------------- -// -EXPORT_C void CDiagSuitePluginBase::FinalizeChildrenExecutionL( - TDiagSuiteExecParam* aParam, - TBool /* aSkipDependencyCheck */, - TBool /* aDependencyExecution */ ) - { - CleanupStack::PushL( aParam ); - aParam->Observer().ContinueExecutionL( *this ); - CleanupStack::PopAndDestroy ( aParam ); - } - - -// --------------------------------------------------------------------------- -// From MDiagSuitePlugin -// CDiagSuitePluginBase::GetChildrenUidsL -// --------------------------------------------------------------------------- -// -EXPORT_C void CDiagSuitePluginBase::GetChildrenUidsL( RArray& aUids, - TSortOrder aOrder ) const - { - __ASSERT_ALWAYS( iData, Panic( EDiagPluginBasePanicInvalidState ) ); - __ASSERT_ALWAYS( (aOrder == ENotSorted || aOrder == ESortByPosition), - Panic( EDiagPluginBasePanicBadArgument ) ); - - TInt count = iData->iChildren.Count(); - for ( TInt i = 0; i < count; i++ ) - { - aUids.AppendL( iData->iChildren[i]->Uid() ); - } - } - -// --------------------------------------------------------------------------- -// From MDiagSuitePlugin -// CDiagSuitePluginBase::ExecutionStopL -// --------------------------------------------------------------------------- -// -EXPORT_C void CDiagSuitePluginBase::ExecutionStopL( TStopReason /* aReason */ ) - { - // Currently, GetTitleL() is not supported. - User::Leave( KErrNotSupported ); - } - - -// --------------------------------------------------------------------------- -// CDiagSuitePluginBase::RunWaitingDialogLD -// --------------------------------------------------------------------------- -EXPORT_C TBool CDiagSuitePluginBase::RunWaitingDialogL( CAknDialog* aDialog, - TInt& aDialogResponse ) - { - __ASSERT_ALWAYS( iData, Panic( EDiagPluginBasePanicInvalidState ) ); - - // this function can display only one dialog at a time. - __ASSERT_ALWAYS( iData->iWaitingDialogWrapper == NULL, - Panic( EDiagPluginBasePanicDialogAlreadyUp ) ); - - iData->iWaitingDialogWrapper = CDiagPluginWaitingDialogWrapper::NewL( aDialog ); - - TBool isUserResonse = iData->iWaitingDialogWrapper->RunLD( aDialogResponse ); - - if ( isUserResonse ) - { - // local variable can be accessed only if it was returned due to - // user response. - iData->iWaitingDialogWrapper = NULL; - } - - return isUserResonse; - } - -// --------------------------------------------------------------------------- -// CDiagSuitePluginBase::DismissWaitingDialog -// --------------------------------------------------------------------------- -EXPORT_C void CDiagSuitePluginBase::DismissWaitingDialog() - { - __ASSERT_ALWAYS( iData, Panic( EDiagPluginBasePanicInvalidState ) ); - - if ( iData->iWaitingDialogWrapper ) - { - LOGSTRING( "CDiagTestPluginBase::DismissWaitingDialog() Dialog dismissed." ) - delete iData->iWaitingDialogWrapper; - iData->iWaitingDialogWrapper = NULL; - } - } - -// --------------------------------------------------------------------------- -// CDiagSuitePluginBase::CoeEnv -// --------------------------------------------------------------------------- -// -EXPORT_C CCoeEnv& CDiagSuitePluginBase::CoeEnv() - { - return iCoeEnv; - } - -// End of File -