vtuis/videotelui/src/commands/cvtuicmdcontext.cpp
changeset 0 ed9695c8bcbe
--- /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 <cvtlogger.h>
+
+#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" )
+    }