vtengines/videoteleng/Src/Commands/cvtenginternaloperation.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 23 Nov 2009 14:47:47 +0200
changeset 0 ed9695c8bcbe
permissions -rw-r--r--
Revision: 200948

/*
* Copyright (c) 2008 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:  Internal operation class implementation
*
*/


// INCLUDE FILES
#include "cvtenginternaloperation.h"
#include "mvtengoperationobserver.h"
#include "CVtEngStateManager.h"
#include "TVtEngOperationUtils.h"
#include "VtEngUtils.h"
#include "cvtlogger.h"

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

// -----------------------------------------------------------------------------
// CVtEngOperation::NewL
// Symbian two-phase constructor
//
// -----------------------------------------------------------------------------
//
CVtEngInternalOperation* CVtEngInternalOperation::NewL(
    TVtEngCommandId aCommandId,
    CVtEngHandlerContainer& aHandlers,
    MVtEngOperationObserver& aObserver,
    TBool aDelete )
    {
    __VTPRINTENTER( "CVtEngInternalOperation.NewL<" )
    CVtEngInternalOperation* self = new ( ELeave )
        CVtEngInternalOperation( aCommandId, aHandlers, aObserver, aDelete );
    __VTPRINTEXIT( "CVtEngInternalOperation.NewL>" )
    return self;
    }

// -----------------------------------------------------------------------------
// CVtEngInternalOperation::CVtEngInternalOperation
// C++ constructor can NOT contain any code, that
// might leave.
// -----------------------------------------------------------------------------
//
CVtEngInternalOperation::CVtEngInternalOperation(
    TVtEngCommandId aCommandId,
    CVtEngHandlerContainer& aHandlers,
    MVtEngOperationObserver& aObserver,
    TBool aDelete ) : CVtEngOperation( aCommandId, aHandlers, aObserver,
        aDelete )
    {
    __VTPRINTENTER( "CVtEngInternalOperation.CVtEngInternalOperation" )
    __VTPRINTEXIT( "CVtEngInternalOperation.CVtEngInternalOperation" )
    }

// -----------------------------------------------------------------------------
// CVtEngInternalOperation::~CVtEngInternalOperation
// Destructor
//
// -----------------------------------------------------------------------------
//
CVtEngInternalOperation::~CVtEngInternalOperation()
    {
    __VTPRINTENTER( "CVtEngInternalOperation.~" )
    __VTPRINTEXIT( "CVtEngInternalOperation.~" )
    }

// -----------------------------------------------------------------------------
// CVtEngInternalOperation::HandleOpCompleteL
// Destructor
//
// -----------------------------------------------------------------------------
//
void CVtEngInternalOperation::HandleOpComplete( const TInt aResult )
    {
    __VTPRINTENTER( "CVtEngInternalOperation.HandleOpComplete" )
    #ifdef VTDEBUG
    TRAPD( err, iObserver.CommandCompleteL( iCommand, aResult ) );
    __VTPRINT2( DEBUG_GEN, "EngOp.Complete err=", err )
#else
    TRAP_IGNORE( iObserver.CommandCompleteL( iCommand, aResult ) );
#endif // VTDEBUG
    if ( iDelete )
        {
        delete this;
        }
    __VTPRINTEXITR( "CVtEngInternalOperation.HandleOpComplete %d>", aResult )
    }

// -----------------------------------------------------------------------------
// 
// -----------------------------------------------------------------------------
// CVtEngInternalOperation::ExecuteL
// Destructor
//
// -----------------------------------------------------------------------------
//
TBool CVtEngInternalOperation::ExecuteL()
    {
    __VTPRINTENTER( "CVtEngInternalOperation.ExecuteL" )
    const CVtEngStateManager* states = CVtEngUtility::StateManager();
    TInt err( KErrNotReady );
    if ( states->IsCommandPossible( iCommand ) )
        {
        err = KErrNone;
        switch ( iCommand )
            {
            case KVtEngTerminateSession:
                TVtEngEngineInitUtil::HandleL( *this, iHandlers );
                break;
            case KVtEngMuteOutgoingAudio:
            case KVtEngUnmuteOutgoingAudio:
                TVtEngAudioPlaybackUtil::HandleL( *this, iHandlers );
                break;            
            default:
                __VTPRINT( DEBUG_GEN, "EngOp.ExecuteL not handled" )
                err = KErrNotSupported;
                break;
            }        
        }
    User::LeaveIfError( err );
    __VTPRINTEXIT( "CVtEngInternalOperation.ExecuteL" )
    return EFalse;
    }

//  End of File