diff -r 000000000000 -r ed9695c8bcbe vtuis/videotelui/src/commands/cvtuicmdcontext.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vtuis/videotelui/src/commands/cvtuicmdcontext.cpp Mon Nov 23 14:47:47 2009 +0200 @@ -0,0 +1,209 @@ +/* +* 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: Command context base class. +* +*/ + + +#include + +#include "cvtuicmdcontext.h" +#include "cvtuicmdvalidatorbase.h" +#include "cvtuicmdvalidationactionbase.h" +#include "mvtuicommandmanager.h" + +// ======== LOCAL FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// Compare routine used by InsertInOrder() and FindInOrder() to sort validator +// instances by priority. +// --------------------------------------------------------------------------- +// +TInt ValidatorPriCmpFunc( const CVtUiCmdValidatorBase& aV1, + const CVtUiCmdValidatorBase& aV2 ) + { + return aV1.Priority() - aV2.Priority(); + } + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CVtUiCmdContext::~CVtUiCmdContext +// --------------------------------------------------------------------------- +// +CVtUiCmdContext::~CVtUiCmdContext() + { + __VTPRINTENTER( "CmdCtx.~" ) + iValidators.Reset(); + __VTPRINTEXIT( "CmdCtx.~" ) + } + +// --------------------------------------------------------------------------- +// CVtUiCmdContext::ReferencePriority +// --------------------------------------------------------------------------- +// +TInt CVtUiCmdContext::ReferencePriority() const + { + __VTPRINTENTER( "CmdCtx.ReferencePriority" ) + __VTPRINTEXITR( "CmdCtx.ReferencePriority %d", iReferencePriority ) + return iReferencePriority; + } + +// --------------------------------------------------------------------------- +// CVtUiCmdContext::ContextType +// --------------------------------------------------------------------------- +// +TVtUiCmdContextType CVtUiCmdContext::ContextType() const + { + __VTPRINTENTER( "CmdCtx.ContextType" ) + __VTPRINTEXITR( "CmdCtx.ContextType %d", iContextType ) + return iContextType; + } + +// --------------------------------------------------------------------------- +// CVtUiCmdContext::AddValidator +// --------------------------------------------------------------------------- +// +TInt CVtUiCmdContext::AddValidator( CVtUiCmdValidatorBase& aValidator ) + { + __VTPRINTENTER( "CmdCtx.AddValidator" ) + TInt result( KErrNone ); + if ( !aValidator.ValidatesContext( iContextType ) ) + { + result = KErrNotSupported; + } + else + { + result = iValidators.InsertInOrderAllowRepeats( &aValidator, + TLinearOrder< CVtUiCmdValidatorBase >( ::ValidatorPriCmpFunc ) ); + } + __VTPRINTEXITR( "CmdCtx.AddValidator %d", result ) + return result; + } + +// --------------------------------------------------------------------------- +// CVtUiCmdContext::RemoveValidator +// --------------------------------------------------------------------------- +// +void CVtUiCmdContext::RemoveValidator( const CVtUiCmdValidatorBase& aValidator ) + { + __VTPRINTENTER( "CmdCtx.RemoveValidator" ) + TInt idx( iValidators.FindInOrder( &aValidator, + TLinearOrder< CVtUiCmdValidatorBase >( ::ValidatorPriCmpFunc ) ) ); + + if ( idx != KErrNotFound ) + { + iValidators.Remove( idx ); + } + __VTPRINTEXIT( "CmdCtx.RemoveValidator" ) + } + +// --------------------------------------------------------------------------- +// CVtUiCmdContext::CVtUiCmdContext +// --------------------------------------------------------------------------- +// +CVtUiCmdContext::CVtUiCmdContext( MVtUiCommandManager& aCommandManager, + TVtUiCmdContextType aCtxType, TInt aReferencePriority ) + : iCommandManager( aCommandManager ), + iReferencePriority( aReferencePriority ), iContextType( aCtxType ) + { + __VTPRINTENTER( "CmdCtx.ctor" ) + __VTPRINTEXIT( "CmdCtx.ctor" ) + } + +// --------------------------------------------------------------------------- +// CVtUiCmdContext::ValidateMenuItemsL +// --------------------------------------------------------------------------- +// +void CVtUiCmdContext::ValidateMenuItemsL( + CVtUiCmdValidationActionBase& aAction ) + { + __VTPRINTENTER( "CmdCtx.ValidateMenuItemsL" ) + __VTPRINT2( DEBUG_GEN, " count = %d", iValidators.Count() ) + for ( TInt i = iValidators.Count() - 1; i >= 0; i-- ) + { + iValidators[ i ]->ValidateMenuItemsL( aAction, iReferencePriority ); + } + __VTPRINTEXIT( "CmdCtx.ValidateMenuItemsL" ) + } + +// --------------------------------------------------------------------------- +// CVtUiCmdContext::ValidateSoftkeyItemsL +// --------------------------------------------------------------------------- +// +void CVtUiCmdContext::ValidateSoftkeyItemsL( + CVtUiCmdValidationActionBase& aAction ) + { + __VTPRINTENTER( "CmdCtx.ValidateSoftkeyItemsL" ) + __VTPRINT2( DEBUG_GEN, " count = %d", iValidators.Count() ) + for ( TInt i = iValidators.Count() - 1; i >= 0; i-- ) + { + iValidators[ i ]->ValidateSoftkeyItemsL( aAction, iReferencePriority ); + } + __VTPRINTEXIT( "CmdCtx.ValidateSoftkeyItemsL" ) + } + +// --------------------------------------------------------------------------- +// CVtUiCmdContext::ValidateToolbarItemsL +// --------------------------------------------------------------------------- +// +void CVtUiCmdContext::ValidateToolbarItemsL( + CVtUiCmdValidationActionBase& aAction ) + { + __VTPRINTENTER( "CmdCtx.ValidateToolbarItemsL" ) + __VTPRINT2( DEBUG_GEN, " count = %d", iValidators.Count() ) + for ( TInt i = iValidators.Count() - 1; i >= 0; i-- ) + { + iValidators[ i ]->ValidateToolbarItemsL( aAction, iReferencePriority ); + } + __VTPRINTEXIT( "CmdCtx.ValidateToolbarItemsL" ) + } + +// --------------------------------------------------------------------------- +// CVtUiCmdContext::CustomValidationL +// --------------------------------------------------------------------------- +// +void CVtUiCmdContext::CustomValidationL( + CVtUiCmdCustomValidationActionBase& aAction ) + { + __VTPRINTENTER( "CmdCtx.CustomValidationL" ) + __VTPRINT2( DEBUG_GEN, " count = %d", iValidators.Count() ) + for ( TInt i = iValidators.Count() - 1; i >= 0; i-- ) + { + iValidators[ i ]->CustomValidationL( aAction, iReferencePriority ); + } + __VTPRINTEXIT( "CmdCtx.CustomValidationL" ) + } + +// --------------------------------------------------------------------------- +// CVtUiCmdContext::RegisterCommandContextL +// --------------------------------------------------------------------------- +// +void CVtUiCmdContext::RegisterCommandContextL() + { + __VTPRINTENTER( "CmdCtx.RegisterCommandContextL" ) + User::LeaveIfError( iCommandManager.RegisterCommandContext( *this ) ); + __VTPRINTEXIT( "CmdCtx.RegisterCommandContextL" ) + } + +// --------------------------------------------------------------------------- +// CVtUiCmdContext::UnregisterCommandContext +// --------------------------------------------------------------------------- +// +void CVtUiCmdContext::UnregisterCommandContext() + { + __VTPRINTENTER( "CmdCtx.UnregisterCommandContext" ) + iCommandManager.UnregisterCommandContext( *this ); + __VTPRINTEXIT( "CmdCtx.UnregisterCommandContext" ) + }