vtengines/videoteleng/Src/Commands/CVtEngCommandHandler.cpp
changeset 18 d9b6a8729acd
parent 4 6dc066157ed4
child 23 c378a0498b84
child 27 dcbddbbaf8fd
--- a/vtengines/videoteleng/Src/Commands/CVtEngCommandHandler.cpp	Tue Jan 26 12:01:21 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,549 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Handles commands from user interface.
-*
-*/
-
-
-
-// INCLUDE FILES
-
-#include    <e32std.h>
-#include    "CVtEngCommandHandler.h"
-#include    "CVtEngHandlerContainer.h"
-#include    "MVtEngCommandObserver.h"
-#include    "CVtEngOperation.h"
-#include    <cvtlogger.h>
-#include    "CVtEngStateManager.h"
-#include    <videotelephonyvariant.hrh>
-#include    "VtEngUtils.h"
-
-#include    "CVtEngStateIdle.h"
-#include    "CVtEngStateInitializing.h"
-#include    "CVtEngStateConnected.h"
-#include    "CVtEngStateRinging.h"
-#include    "CVtEngStateOpen.h"
-#include    "CVtEngStateNegotiating.h"
-#include    "CVtEngStateClearing.h"
-#include    "CVtEngStateAlerting.h"
-
-// CONSTANTS
-const TInt KVtEngCommandPoolCommands = 1;
-
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::CVtEngCommandHandler
-// C++ constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CVtEngCommandHandler::CVtEngCommandHandler(
-    CVtEngHandlerContainer& aHandlers ) :
-    iObservers( 1 ),
-    iHandlers( aHandlers )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CVtEngCommandHandler::ConstructL()
-    {
-    __VTPRINTENTER( "CmdHlr.ConstructL" )
-    iCommandPool = new ( ELeave ) CVtEngCmdPool( KVtEngCommandPoolCommands );
-
-    // session termination
-    AddToPoolL( KVtEngInitializeEngine );
-    AddToPoolL( KVtEngInitializeEngineDiag );
-    AddToPoolL( KVtEngInitializeEngineTest );
-    AddToPoolL( KVtEngPrepareViewFinder );
-    AddToPoolL( KVtEngPrepareRemoteRenderDSA );
-    AddToPoolL( KVtEngPrepareRemoteRenderDP );
-    AddToPoolL( KVtEngPrepareRemoteRenderNGA );
-    AddToPoolL( KVtEngResetEngine );
-    __VTPRINTEXIT( "CmdHlr.ConstructL" )
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CVtEngCommandHandler* CVtEngCommandHandler::NewL( CVtEngHandlerContainer& aHandlers )
-    {
-    __VTPRINT( DEBUG_GEN | DEBUG_CONSTRUCT, "CmdHlr.New")
-    CVtEngCommandHandler* self = new( ELeave ) CVtEngCommandHandler( aHandlers );
-
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop();
-
-    return self;
-    }
-
-
-// Destructor
-CVtEngCommandHandler::~CVtEngCommandHandler()
-    {
-    __VTPRINTENTER( "CmdHlr.~" )
-    iObservers.Close();
-    if ( iActiveOp )
-        {
-        if ( iCommandPool->Get( iActiveOp->Command() ) == NULL )
-            {
-            delete iActiveOp;
-            }
-        }
-    delete iCommandPool;
-    __VTPRINTEXIT( "CmdHlr.~" )
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::ExecuteL
-//
-// -----------------------------------------------------------------------------
-//
-void CVtEngCommandHandler::ExecuteL(
-            const TVtEngCommandId aCommandId,
-            TDesC8* aParams )
-    {
-    __VTPRINTENTER( "CmdHlr.ExecuteL" )
-
-    __VTPRINT2( DEBUG_GEN, "ComHlr:Exec cmdId=%d", aCommandId )
-    ValidateL( aCommandId, aParams );
-    CVtEngOperation* opFromPool = iCommandPool->Get( aCommandId );
-    CVtEngOperation* op = opFromPool;
-    if ( op == NULL )
-        {
-        op = CVtEngOperation::NewL( aCommandId, iHandlers, *this );
-        CleanupStack::PushL( op );
-        }
-
-    switch ( aCommandId )
-        {
-        case KVtEngInitializeEngine:
-        case KVtEngInitializeEngineTest:
-        case KVtEngInitializeEngineDiag:
-        case KVtEngResetEngine:
-        case KVtEngTerminateSession:
-        case KVtEngStartViewFinder:
-        case KVtEngStopViewFinder:
-        case KVtEngStartRenderRemote:
-        case KVtEngStopRenderRemote:
-        case KVtEngPauseRenderRemote:
-        case KVtEngMuteOutgoingAudio:
-        case KVtEngUnmuteOutgoingAudio:
-        case KVtEngStopDtmfTone:
-        case KVtEngRequestLastRemoteFrame:
-        // Handling of different UIIs
-        case KVtEngSetUIIDtmfSupport:
-        case KVtEngSetUIIBasicStringSupport:
-        case KVtEngSetUIIIA5StringSupport:
-        case KVtEngSetUIIGeneralStringSupport:
-        case KVtEngFreeze:
-        case KVtEngUnfreeze:
-        case KVtEngHandleLayoutChange:
-
-        // Media object sharing (no parameters )
-        case KVtEngStartShareImage:
-        case KVtEngStopShareImage:
-            op->ExecuteL( NULL );
-            break;
-        // Media
-        case KVtEngSetUIForeground:
-        case KVtEngPrepareCamera:
-        case KVtEngPrepareViewFinder:
-        case KVtEngPrepareViewFinderDSA:
-        case KVtEngPrepareRemoteRenderDSA:
-        case KVtEngPrepareViewFinderDP:
-        case KVtEngPrepareRemoteRenderDP:
-        case KVtEngPrepareRemoteRenderNGA:
-        case KVtEngSetSource:
-        case KVtEngSetZoomStep:
-        case KVtEngSetAudioRouting:
-        case KVtEngSetAudioVolume:
-        case KVtEngIncreaseAudioVolume:
-        case KVtEngDecreaseAudioVolume:
-        case KVtEngSendDtmf:
-        case KVtEngStartDtmfTone:
-        case KVtEngSetVideoQuality:
-        case KVtEngSwitchToVoice:
-        // Extension commands
-        case KVtEngSetContrast:
-        case KVtEngSetBrightness:
-        case KVtEngSetWhiteBalance:
-        case KVtEngSetColorTone:
-#if defined ( RD_VT_RTF )
-        case KVtEngStartRecord:
-        case KVtEngStopRecord:
-#endif
-        // Media object sharing (with parameters )
-        case KVtEngInitializeShareImage:
-            // Flow through, ok to execute
-            op->ExecuteL( aParams );
-            break;
-        default:
-            User::Leave( KErrNotSupported );
-        }
-    if ( opFromPool == NULL )
-        {
-        CleanupStack::Pop( ); // op (deletes itself)
-        }
-    CVtEngStateManager* states = CVtEngUtility::StateManager();
-    states->Update();
-    __VTPRINTEXIT( "CmdHlr.ExecuteL" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::CancelCommand
-//
-// -----------------------------------------------------------------------------
-//
-TInt CVtEngCommandHandler::CancelCommand( const TVtEngCommandId aCommandId )
-    {
-    __VTPRINTENTER( "CmdHlr.CancelCommand" )
-
-    __VTPRINT2( DEBUG_GEN, "ComHlr.Cancel cmd=%d", aCommandId )
-    TInt err( KErrGeneral );
-    if ( iActiveOp &&
-         iActiveOp->Command() == aCommandId &&
-         aCommandId != KVtEngResetEngine &&
-         aCommandId != KVtEngInitializeEngineTest &&
-         aCommandId != KVtEngInitializeEngineDiag)
-        {
-        iActiveOp->Cancel();
-        err = KErrNone;
-        }
-    __VTPRINT2( DEBUG_GEN | DEBUG_DETAIL, "ComHlr.Cancel res=%d",err )
-    __VTPRINTEXIT( "CmdHlr.CancelCommand" )
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::GetCommandCaps
-//
-// -----------------------------------------------------------------------------
-//
-TInt CVtEngCommandHandler::GetCommandCaps(
-    const TVtEngCommandId aCommand )
-    {
-    TInt caps( 0 );
-    CheckAsynchronity( aCommand, caps );
-    CheckSupport( aCommand, caps );
-    CheckState( aCommand, caps );
-    return caps;
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::PendingCommand
-//
-// -----------------------------------------------------------------------------
-//
-TVtEngCommandId CVtEngCommandHandler::PendingCommand()
-    {
-    if ( iActiveOp )
-        {
-        return iActiveOp->Command();
-        }
-    return KVtEngCommandNone;
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::AddObserverL
-//
-// -----------------------------------------------------------------------------
-//
-void CVtEngCommandHandler::AddObserverL(
-    MVtEngCommandObserver& aObserver )
-    {
-    User::LeaveIfError( iObservers.Append( &aObserver ) );
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::RemoveObserver
-//
-// -----------------------------------------------------------------------------
-//
-void CVtEngCommandHandler::RemoveObserver(
-    MVtEngCommandObserver& aObserver )
-    {
-    const TInt pos( iObservers.Find( &aObserver ) );
-    if ( pos >= 0 )
-        {
-        iObservers.Remove( pos );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::CommandCompleteL
-//
-// -----------------------------------------------------------------------------
-//
-void CVtEngCommandHandler::CommandCompleteL(
-            const TVtEngCommandId aCommand,
-            const TInt aResult )
-    {
-    __VTPRINTENTER( "CmdHlr.CommandCompleteL" )
-    __VTPRINT3( DEBUG_GEN, " completed cmd=%d,res=%d", aCommand, aResult )
-    TInt count( iObservers.Count() );
-    while ( count-- )
-        {
-        MVtEngCommandObserver* observer = iObservers[ count ];
-        observer->HandleVTCommandPerformedL( aCommand, aResult );
-        }
-    __VTPRINTEXIT( "CmdHlr.CommandCompleteL" )
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::SetOperation
-// Sets active operation
-//
-// -----------------------------------------------------------------------------
-//
-void CVtEngCommandHandler::SetOperation( CVtEngOperation* aActiveOp )
-    {
-    iActiveOp = aActiveOp;
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::AddToPoolL
-// Adds a command to command pool. Only commands without parameters and
-// that don't delete themselfs can currently be added.
-//
-// -----------------------------------------------------------------------------
-//
-void CVtEngCommandHandler::AddToPoolL( TVtEngCommandId aCommand )
-    {
-    CVtEngOperation* op = CVtEngOperation::NewL(
-        aCommand, iHandlers, *this, EFalse );
-    CleanupStack::PushL( op );
-    iCommandPool->AppendL( op );
-    CleanupStack::Pop(); // op
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::ValidateL
-// Checks if command can be performed.
-//
-// -----------------------------------------------------------------------------
-//
-void CVtEngCommandHandler::ValidateL(
-            const TVtEngCommandId aCommandId,
-            TDesC8* /*aParams*/ )
-    {
-    // check if async command is already pending and new
-    // command is async
-    TInt caps( 0 );
-    CheckState( aCommandId, caps );
-    if ( !(caps & EAttribEnabled ) )
-        {
-        User::Leave( KErrNotReady );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::CheckAsynchronity
-// Checks if command is async
-//
-// -----------------------------------------------------------------------------
-//
-void CVtEngCommandHandler::CheckAsynchronity(
-            const TVtEngCommandId aCommandId,
-            TInt& aCaps )
-    {
-    switch ( aCommandId )
-        {
-        case KVtEngInitializeEngine:
-        case KVtEngInitializeEngineTest:
-        case KVtEngInitializeEngineDiag:
-        case KVtEngResetEngine:
-        case KVtEngTerminateSession:
-        case KVtEngSetSource:
-        case KVtEngPrepareCamera:
-        case KVtEngSetAudioRouting:
-        case KVtEngMuteOutgoingAudio:
-        case KVtEngUnmuteOutgoingAudio:
-        case KVtEngSetAudioVolume:
-        case KVtEngHandleLayoutChange:
-        case KVtEngUnfreeze:
-
-        // Media object sharing
-        case KVtEngInitializeShareImage:
-        case KVtEngStartShareImage:
-        case KVtEngStopShareImage:
-        case KVtEngSwitchToVoice:
-            aCaps |= EAttribAsync;
-            break;
-        default:
-            aCaps &= (~EAttribAsync);
-            break;
-        }
-    __VTPRINT3( DEBUG_GEN | DEBUG_RETURN, "ComHlr:capsA cmd=%d,caps=%d", aCommandId, aCaps )
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::CheckSupport
-// Checks if command is supported
-//
-// -----------------------------------------------------------------------------
-//
-void CVtEngCommandHandler::CheckSupport(
-            const TVtEngCommandId aCommandId,
-            TInt& aCaps )
-    {
-    switch ( aCommandId )
-        {
-        case KVtEngInitializeEngine:
-        case KVtEngInitializeEngineTest:
-        case KVtEngInitializeEngineDiag:
-        case KVtEngResetEngine:
-        case KVtEngTerminateSession:
-        case KVtEngStartViewFinder:
-        case KVtEngStopViewFinder:
-        case KVtEngPrepareViewFinder:
-        case KVtEngPrepareRemoteRenderDSA:
-        case KVtEngPrepareRemoteRenderDP:
-        case KVtEngPrepareRemoteRenderNGA:
-        case KVtEngStartRenderRemote:
-        case KVtEngStopRenderRemote:
-        case KVtEngSetAudioRouting:
-        case KVtEngSetAudioVolume:
-        case KVtEngIncreaseAudioVolume:
-        case KVtEngDecreaseAudioVolume:        
-        case KVtEngPauseRenderRemote:
-        case KVtEngMuteOutgoingAudio:
-        case KVtEngUnmuteOutgoingAudio:
-        case KVtEngSetSource:
-        case KVtEngPrepareCamera:
-        case KVtEngStartDtmfTone:
-        case KVtEngStopDtmfTone:
-        case KVtEngFreeze:
-        case KVtEngUnfreeze:
-        case KVtEngSetVideoQuality:
-        case KVtEngHandleLayoutChange:
-        // Handling of different UIIs, support is there
-        case KVtEngSetUIIDtmfSupport:
-        case KVtEngSetUIIBasicStringSupport:
-        case KVtEngSetUIIIA5StringSupport:
-        case KVtEngSetUIIGeneralStringSupport:
-        case KVtEngSetUIForeground:
-        case KVtEngRequestLastRemoteFrame:
-
-        // Media object sharing
-        case KVtEngInitializeShareImage:
-        case KVtEngStartShareImage:
-        case KVtEngStopShareImage:
-        case KVtEngSwitchToVoice:
-            aCaps |= EAttribSupported;
-            break;
-
-        // Extension commands
-	    case KVtEngSetContrast:
-	    case KVtEngSetBrightness:
-	    case KVtEngSetWhiteBalance:
-	    case KVtEngSetColorTone:
-#if defined ( RD_VT_RTF )
-	    case KVtEngStartRecord:
-	    case KVtEngStopRecord:
-#endif
-            aCaps |= EAttribSupported;
-            break;
-
-        default:
-            aCaps &= (~EAttribSupported);
-            __VTPRINT( DEBUG_GEN, "ComHlr.NOT SUPPORTED" )
-            break;
-        }
-    __VTPRINT3( DEBUG_GEN | DEBUG_DETAIL, "  capsSupport cmd=%d,caps=%d", aCommandId, aCaps )
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::CheckState
-// Checks if command is possible in current state.
-//
-// -----------------------------------------------------------------------------
-//
-void CVtEngCommandHandler::CheckState(
-    const TVtEngCommandId aCommandId,
-    TInt& aCaps )
-    {
-    aCaps &= (~EAttribEnabled);
-    if ( !(iActiveOp && ( aCaps & EAttribAsync ) ) )
-        {
-        const CVtEngStateManager* states = CVtEngUtility::StateManager();
-        if ( states->IsCommandPossible( aCommandId ) )
-            {
-            aCaps |= EAttribEnabled;
-            }
-#ifdef VTDEBUG
-        else
-            {
-            __VTPRINT( DEBUG_GEN, "ComHlr.ChkState INVALID" )
-            }
-#endif // VTDEBUG
-        }
-    __VTPRINT3( DEBUG_GEN | DEBUG_DETAIL, "  capsState cmd=%d,caps=%d", aCommandId, aCaps )
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::CVtEngCmdPool::CVtEngCmdPool
-// C++ constructor
-//
-// -----------------------------------------------------------------------------
-//
-CVtEngCommandHandler::CVtEngCmdPool::CVtEngCmdPool( TInt aGranularity ) :
-    CArrayPtrFlat<CVtEngOperation>( aGranularity )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::CVtEngCmdPool::CVtEngCmdPool
-// Destructor - deletes operations in the pool.
-//
-// -----------------------------------------------------------------------------
-//
-CVtEngCommandHandler::CVtEngCmdPool::~CVtEngCmdPool( )
-    {
-    ResetAndDestroy();
-    }
-
-// -----------------------------------------------------------------------------
-// CVtEngCommandHandler::CVtEngCmdPool::Get
-// Returns pointer to an operation in the pool.
-//
-// -----------------------------------------------------------------------------
-//
-CVtEngOperation* CVtEngCommandHandler::CVtEngCmdPool::Get(
-            const TVtEngCommandId aId )
-    {
-    TInt count( Count() );
-    CVtEngOperation* ret = NULL;
-    while ( count-- )
-        {
-        CVtEngOperation* op = At( count );
-        if ( op->Command() == aId )
-            {
-            ret = op;
-            count = 0; // break
-            }
-        }
-    return ret;
-    }
-
-//  End of File