diff -r f15ac8e65a02 -r 779871d1e4f4 vtuis/videotelui/inc/tvtuiappstatebase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vtuis/videotelui/inc/tvtuiappstatebase.h Wed Sep 01 12:29:12 2010 +0100 @@ -0,0 +1,256 @@ +/* +* Copyright (c) 2007 - 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: Base class for application states. +* +*/ + + +#ifndef T_VTUIAPPSTATEBASE_H +#define T_VTUIAPPSTATEBASE_H + +#include +#include +#include "mvtuistatecontext.h" +#include "mvtuishutterobserver.h" +#include "tvtuistates.h" + +/** +* Base class for application states related to application startup, normal +* operation and shutdown. AppUi delegates decision making by forwarding +* events/commands it receives to current state. +* Not all event handlers declared by the base class are applicable in +* all concrete states. All methods returning TEventResponse imply that it may +* consume the event completely and caller should not process it further. +* +* It should be kept in mind that as new functionality is added to application, +* state classes may need changes if e.g. handling of specific event should be +* allowed in appUi. By default event handler in specific state may consume all +* events. Note that in this context e.g. HandleCommandL is considered as an +* event handler. +* +* @since S60 v3.2 +*/ +class TVtUiAppStateBase : public MVtUiShutterObserver + { +public: // new functions + + /** + * Return value from state's event handlers. + */ + enum TEventResponse + { + /** Event was handled by a state and should + * not be further processed by caller. + */ + EEventHandled, + /** Event can be handled by caller. */ + EEventNotHandled + }; + + /** + * Performs state dependent actions when phase 1 of + * startup is completed. + */ + virtual void AppUiStartupPhase1DoneL(); + + /** + * Performs state dependent actions when startup fails. + */ + virtual void AppUiStartupFailedL(); + + /** + * Performs state dependent actions when phase 2 of + * startup is completed. + */ + virtual void AppUiStartupPhase2DoneL(); + + /** + * Handles completion of shutdown. + */ + virtual void ShutdownDoneL(); + + /** + * Handles completion of an VT engine command. + * @param aCommand completed command + * @param aError error + * @return event response, is caller allowed to handle event + */ + virtual TEventResponse HandleVTCommandPerformedL( + const TVtEngCommandId aCommand, + const TInt aError ); + + /** + * Handles event from the engine. + * @param aEvent + * @return event response, is caller allowed to handle event + */ + virtual TEventResponse HandleVtEventL( const TInt aEvent ); + + /** + * Handles command from the user (or application framework). + * @param aCommand + * @return event response, is caller allowed to handle event + */ + virtual TEventResponse HandleCommandL( const TInt aCommand ); + + /** + * Performs state dependent actions for foreground change event. + * @param aIsForeground foreground status passed from UI framework + * @return ETrue if application should behave as in foreground + */ + virtual TBool HandleForegroundChangedL( const TBool aIsForeground ); + + /** + * Performs state dependent previous actions for foreground change event. + * @param aIsForeground foreground status passed from UI framework + * @return ETrue if application should behave as in foreground + */ + virtual TBool PreHandleForegroundChangedL( const TBool aIsForeground ); + /** + * Performs state dependent actions for layout change. + */ + virtual void HandleLayoutChangedL(); + + /** + * Sends DTMF tone if allowed by current state. + * @param aTone DTMF tone to send + */ + virtual void StartDtmfTone( const TChar& aTone ); + + /** + * Stops DTMF tone if allowed by current state. + */ + virtual void StopDtmfTone(); + + /** + * Sets initial application state. + * @param aCtx state context providing services to states + * @param aUiStates ui states + */ + static void SetInitialStateL( + MVtUiStateContext& aCtx, + TVtUiStates& aUiStates); + + /** + * Get whether the shutdown requested + * @return ETrue if shutdown requested + */ + static TBool ShutdownRequested(); + +protected: // for concrete state classes + + /** + * Destructor, for cleanup. + */ + virtual ~TVtUiAppStateBase(); + + /** + * Performs entry action for a state. + */ + virtual void OpenL(); + + /** + * Performs exit action for a state and deletes that state. + */ + virtual void Close(); + + /** + * Sets current state. + */ + void ChangeStateL( TVtUiAppStateBase& aNewState ); + + /** + * Sets transition to resetting state as cleanup item. + */ + void CleanupResetPushL(); + + /** + * Starts shutdown when leave occurred. + */ + static void TransitionToReset( TAny* aAny ); + + + /** + * Ends the call if necessary and starts shutdown. + * @return ETrue if shutdown started. + */ + TBool CheckEndActiveCallL(); + + /** + * Returns engine session state. + * @param aUpdate is state forced to update + * @return session state + */ + MVtEngSessionInfo::TSessionState SessionState( + const TBool aUpdate ) const; + + /** + * Sets forced lights state in the system. + */ + void SetLightsState( const TBool aOn ); + + /** + * Delegates engine command execution to the state context. + */ + template < typename T > + inline void ExecuteEngineCommand( + TInt aCommand, T& aParam ); + + /** + * Sets execution state. + */ + void SetExecState( const TVtUiStates::TVtUiExecState aState ); + +protected: // constructor + + // c++ constructor + TVtUiAppStateBase( MVtUiStateContext& aCtx, TVtUiStates& aUiStates ); + +private: // from MVtUiShutterObserver + + /** + * Handles 'shutdown ready' event. + */ + virtual void HandleShutdownReady(); + +private: // new functions + + /** + * Updates applications lock state and sends to background if + * the device is locked. + */ + void HandleDeviceLockEventL( const TBool aDeviceIsLocked ); + +protected: // data members + + // Context providing services to states + MVtUiStateContext& iCtx; + + // Various application specific state information + TVtUiStates& iUiStates; + + /** Prevents sending end call command to call handling if ETrue. + * It is not allowed when call clearing is network originated. + */ + + /** + * shutdown request received + */ + static TBool iShutdownRequested; + + }; + +#include "tvtuiappstatebase.inl" + +#endif // T_VTUIAPPSTATEBASE_H