devicediagnosticsfw/diagframework/src/diagrootsuite.cpp
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:27:42 +0100
branchRCL_3
changeset 26 19bba8228ff0
parent 0 b497e44ab2fc
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* 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 CDiagRootSuite
*
*/


// CLASS DECLARATION
#include "diagrootsuite.h"

// SYSTEM INCLUDE FILES
#include <DiagSuiteExecParam.h>     // TDiagSuiteExecParam
#include <DiagSuiteObserver.h>      // MDiagSuiteObserver

// USER INCLUDE FILES
#include "diagframework.pan"        // panic codes.
#include "diagrootsuite.h"          // CDiagRootSuite

using namespace DiagFwInternal;

// ======== LOCAL FUNCTIONS ========
/**
* Compares two plug-ins by order.  Used for RArray  InsertInOrderAllowRepeats
* @param aFirst - first plug-in
* @param aSecond - second plug-in
* @return   positive if aFirst > aSecond
*           0 if same.
*           negative if aFirst < aSecond
*/
static TInt ComparePluginByOrder( const MDiagPlugin& aFirst,
                                   const MDiagPlugin& aSecond )
    {
    return aFirst.Order() - aSecond.Order();
    }


// ======== MEMBER FUNCTIONS ========

// ---------------------------------------------------------------------------
// CDiagRootSuite::ConstructL()
// ---------------------------------------------------------------------------
//
void CDiagRootSuite::ConstructL()
    {
    }


// ---------------------------------------------------------------------------
// CDiagRootSuite::NewL()
// ---------------------------------------------------------------------------
//
CDiagRootSuite* CDiagRootSuite::NewL()
    {
    CDiagRootSuite* self = CDiagRootSuite::NewLC();
    CleanupStack::Pop( self );
    return self;
    }


// ---------------------------------------------------------------------------
// CDiagRootSuite::NewLC()
// ---------------------------------------------------------------------------
//
CDiagRootSuite* CDiagRootSuite::NewLC()
    {
    CDiagRootSuite* self = new( ELeave )CDiagRootSuite();
    CleanupStack::PushL( self );
    self->ConstructL();
    return self;
    }

// ---------------------------------------------------------------------------
// CDiagRootSuite::CDiagRootSuite
// ---------------------------------------------------------------------------
//
CDiagRootSuite::CDiagRootSuite()
    :   iChildren()
    {
    }

// ---------------------------------------------------------------------------
// CDiagRootSuite::~CDiagRootSuite
// ---------------------------------------------------------------------------
//
CDiagRootSuite::~CDiagRootSuite()
    {
    iChildren.Close();
    }


// ---------------------------------------------------------------------------
// from MDiagPlugin
// CDiagRootSuite::GetPluginNameL
// ---------------------------------------------------------------------------
//
HBufC* CDiagRootSuite::GetPluginNameL( TNameLayoutType /* aLayoutType */) const
    {
    _LIT( KRootSuitePluginName, "*Root Suite" );
    return KRootSuitePluginName().AllocL();
    }

// ---------------------------------------------------------------------------
// from MDiagPlugin
// CDiagRootSuite::ServiceLogicalName
// ---------------------------------------------------------------------------
//
const TDesC& CDiagRootSuite::ServiceLogicalName() const
    {
    _LIT( KRootSuiteServiceName, "" );
    return KRootSuiteServiceName();
    }

// ---------------------------------------------------------------------------
// From MDiagPlugin
// CDiagRootSuite::GetLogicalDependenciesL
// ---------------------------------------------------------------------------
//
void CDiagRootSuite::GetLogicalDependenciesL( CPtrCArray& /* aArray */ ) const
    {
    }


// ---------------------------------------------------------------------------
// From MDiagPlugin
// CDiagRootSuite::Type
// ---------------------------------------------------------------------------
//
MDiagPlugin::TPluginType CDiagRootSuite::Type() const
    {
    return ETypeSuitePlugin;
    }

// ---------------------------------------------------------------------------
// From MDiagPlugin
// CDiagRootSuite::CreateIconL
// ---------------------------------------------------------------------------
//
CGulIcon* CDiagRootSuite::CreateIconL() const
    {
    return NULL;
    }


// ---------------------------------------------------------------------------
// From MDiagPlugin
// CDiagRootSuite::IsVisible
// ---------------------------------------------------------------------------
//
TBool CDiagRootSuite::IsVisible() const
    {
    return EFalse;
    }

// ---------------------------------------------------------------------------
// From MDiagPlugin
// CDiagRootSuite::IsSupported
// ---------------------------------------------------------------------------
//
TBool CDiagRootSuite::IsSupported() const
    {
    return ETrue;
    }

// ---------------------------------------------------------------------------
// From MDiagPlugin
// CDiagRootSuite::GetTitleL
// ---------------------------------------------------------------------------
//
HBufC* CDiagRootSuite::GetTitleL() const
    {
    // This should never be displayed to the end user.
    _LIT( KRootSuitePluginTitle, "*Root Suite Title" );
    return KRootSuitePluginTitle().AllocL();
    }

// ---------------------------------------------------------------------------
// From MDiagPlugin
// CDiagRootSuite::GetDescriptionL
// ---------------------------------------------------------------------------
//
HBufC* CDiagRootSuite::GetDescriptionL() const
    {
    // This should never be displayed to the end user.
    _LIT( KRootSuitePluginDesc, "*Root Suite Desc" );
    return KRootSuitePluginDesc().AllocL();
    }

// ---------------------------------------------------------------------------
// From MDiagPlugin
// CDiagRootSuite::Uid
// ---------------------------------------------------------------------------
//
TUid CDiagRootSuite::Uid() const
    {
    return TUid::Uid( 0 );
    }



// ---------------------------------------------------------------------------
// From MDiagPlugin
// CDiagRootSuite::ParentUid
// ---------------------------------------------------------------------------
//
TUid CDiagRootSuite::ParentUid() const
    {
    return TUid::Uid( 0 );
    }


// ---------------------------------------------------------------------------
// From MDiagPlugin
// CDiagRootSuite::SetDtorIdKey
// ---------------------------------------------------------------------------
//
void CDiagRootSuite::SetDtorIdKey( TUid /* aDtorIdKey */ )
    {
    }


// ---------------------------------------------------------------------------
// From MDiagPlugin
// CDiagRootSuite::CustomOperationL
// ---------------------------------------------------------------------------
//
TAny* CDiagRootSuite::CustomOperationL( TUid /*aUid*/, TAny* /*aParam*/ )
    {
    User::Leave( KErrNotSupported );
    return NULL;
    }

// ---------------------------------------------------------------------------
// From MDiagPlugin
// CDiagRootSuite::GetCustomL
// ---------------------------------------------------------------------------
//
TAny* CDiagRootSuite::GetCustomL( TUid /* aUid */, TAny* /*aParam*/ )
    {
    User::Leave( KErrNotSupported );
    return NULL;
    }


// ---------------------------------------------------------------------------
// From MDiagTestPlugin
// CDiagRootSuite::TestSessionBeginL
// ---------------------------------------------------------------------------
//
void CDiagRootSuite::TestSessionBeginL( MDiagEngineCommon& /* aEngine */,
                                        TBool /* aSkipDependencyCheck */,
                                        TAny* /* aCustomParams */ )
    {
    // nothing to do
    }

// ---------------------------------------------------------------------------
// From MDiagTestPlugin
// CDiagRootSuite::CleanupL
// ---------------------------------------------------------------------------
//
void CDiagRootSuite::TestSessionEndL( MDiagEngineCommon& /* aEngine */,
                                      TBool /* aSkipDependencyCheck */,
                                      TAny* /* aCustomParams */ )
    {
    // nothing to do
    }



// ---------------------------------------------------------------------------
// From MDiagPlugin
// CDiagRootSuite::Order
// ---------------------------------------------------------------------------
//
TUint CDiagRootSuite::Order() const
    {
    return 0;
    }


// ---------------------------------------------------------------------------
// From MDiagSuitePlugin
// CDiagRootSuite::GetChildrenL
// ---------------------------------------------------------------------------
//
void CDiagRootSuite::GetChildrenL( RPointerArray<MDiagPlugin>& aChildren,
                                   TSortOrder aOrder ) const
    {
    if ( aOrder != ENotSorted && aOrder != ESortByPosition )
        User::Leave( KErrArgument );

    for ( TInt i = 0; i < iChildren.Count(); i++ )
        {
        aChildren.AppendL( iChildren[i] );
        }
    }

// ---------------------------------------------------------------------------
// From MDiagSuitePlugin
// CDiagRootSuite::AddChildL
// ---------------------------------------------------------------------------
//
void CDiagRootSuite::AddChildL( MDiagPlugin* aChild )
    {
    TLinearOrder<MDiagPlugin> order( *ComparePluginByOrder );
    User::LeaveIfError( iChildren.InsertInOrderAllowRepeats( aChild, order ) );
    }

// ---------------------------------------------------------------------------
// From MDiagSuitePlugin
// CDiagRootSuite::PrepareChildrenExecutionL
// ---------------------------------------------------------------------------
//
void CDiagRootSuite::PrepareChildrenExecutionL( TDiagSuiteExecParam* aParam,
                                                TBool /* aSkipDependencyCheck */,
                                                TBool /* aDependencyExecution */ )
    {
    aParam->Observer().ContinueExecutionL( *this );
    delete aParam;
    }

// ---------------------------------------------------------------------------
// From MDiagSuitePlugin
// CDiagRootSuite::FinalizeExecutionL
// ---------------------------------------------------------------------------
//
void CDiagRootSuite::FinalizeChildrenExecutionL( TDiagSuiteExecParam* aParam,
                                                 TBool /* aSkipDependencyCheck */,
                                                 TBool /* aDependencyExecution */ )
    {
    aParam->Observer().ContinueExecutionL( *this );
    delete aParam;
    }


// ---------------------------------------------------------------------------
// From MDiagSuitePlugin
// CDiagRootSuite::GetChildrenUidsL
// ---------------------------------------------------------------------------
//
void CDiagRootSuite::GetChildrenUidsL( RArray<TUid>& aUids,
                                        TSortOrder aOrder ) const
    {
    if ( aOrder != ENotSorted && aOrder != ESortByPosition )
        User::Leave( KErrArgument );

    for ( TInt i = 0; i < iChildren.Count(); i++ )
        {
        aUids.AppendL( iChildren[i]->Uid() );
        }
    }

// ---------------------------------------------------------------------------
// From MDiagSuitePlugin
// CDiagRootSuite::ExecutionStopL
// ---------------------------------------------------------------------------
//
void CDiagRootSuite::ExecutionStopL( TStopReason /* aReason */ )
    {
    }

// End of File