phoneapp/phoneuicontrol/inc/cphonestate.h
changeset 37 ba76fc04e6c2
child 45 6b911d05207e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuicontrol/inc/cphonestate.h	Fri Jun 04 10:19:18 2010 +0100
@@ -0,0 +1,1192 @@
+/*
+* Copyright (c) 2005-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:
+*     A base class for an object implementing the state.
+*
+*/
+
+
+#ifndef CPHONESTATE_H
+#define CPHONESTATE_H
+
+// INCLUDES
+#include <w32std.h>
+#include <remconcoreapitargetobserver.h>
+#include <MProfileEngine.h>
+#include "mphonestate.h"
+#include "mphoneviewcommandhandle.h"
+#include "cphonecbamanager.h"
+
+// FORWARD DECLARATIONS
+class MPhoneState;
+class MPhoneStateMachine;
+class CPhoneCallHeaderManager;
+class CPhoneTimer;
+class TPhoneCmdParamCallHeaderData;
+class MPhoneCustomization;
+class CPhoneNumberEntryManager;
+
+enum TStateTransEffectType
+    {
+    ENoneType,
+    ENumberEntryOpen,
+    ENumberEntryClose,
+    ENumberEntryCreate
+    };
+
+// CLASS DECLARATION
+
+/**
+*  An abstract class for an object implementing the state.
+*
+*/
+class CPhoneState :
+    public CBase,
+    public MPhoneState
+    {
+    public:
+
+        /**
+        * Constructor
+        */
+        IMPORT_C CPhoneState(
+            MPhoneStateMachine* aStateMachine,
+            MPhoneViewCommandHandle* aViewCommandHandle,
+            MPhoneCustomization* aCustomization);
+
+        /**
+        * Creates CbaManager instance.
+        */
+        IMPORT_C void BaseConstructL();
+
+        /**
+        * Destructor.
+        */
+        IMPORT_C virtual ~CPhoneState();
+
+        /**
+        * A message handling function for Phone Engine messages
+        * @param aMessage Message from Phone Engine
+        * @param aCallId Call id the message concerns
+        */
+        IMPORT_C virtual void HandlePhoneEngineMessageL(
+            const TInt aMessage,
+            TInt aCallId );
+
+        /**
+        * HandleError
+        * Implements error handling framework
+        * @param aErrorInfo: the error info
+        */
+        IMPORT_C virtual void HandleErrorL(
+            const TPEErrorInfo& aErrorInfo );
+
+        /**
+        * Handle processed (short, long) key messages from the key event
+        * handler
+        * @param aMessage a key message
+        * @param aCode key event code
+        */
+        IMPORT_C virtual void HandleKeyMessageL(
+            TPhoneKeyEventMessages aMessage,
+            TKeyCode aCode );
+
+        /**
+        * Handles raw key events from the key event handler
+        * @param aKeyEvent a key event
+        * @param aEventCode key event code
+        */
+        IMPORT_C virtual void HandleKeyEventL(
+            const TKeyEvent& aKeyEvent,
+            TEventCode aEventCode );
+
+        /**
+        * Handles key press duration events from the key event handler
+        * @param aCode key event code
+        * @param aKeyPressDuration key press duration
+        */
+        IMPORT_C virtual void HandleKeyPressDurationL(
+            TKeyCode aCode,
+            TTimeIntervalMicroSeconds aKeyPressDuration );
+
+        /**
+        * From CAknAppUi, initialise a menupane (dynamic).
+        *
+        * @param aResourceId It is the resource id for the pane.
+        * @param aMenuPane It is the menu pane corresponding to the resource.
+        */
+        IMPORT_C virtual void DynInitMenuPaneL(
+            TInt aResourceId,
+            CEikMenuPane* aMenuPane );
+
+        /**
+        * From CAknAppUi, initialise a menubar (dynamic).
+        *
+        * @param aResourceId It is the resource id for the bar.
+        * @param aMenuBar It is the menu bar corresponding to the resource.
+        */
+        IMPORT_C virtual void DynInitMenuBarL(
+            TInt aResourceId,
+            CEikMenuBar* aMenuBar );
+
+        /**
+        * From CEikAppUi. For Idle indicator
+        */
+        IMPORT_C virtual void HandleSystemEventL(
+            const TWsEvent& aEvent );
+
+        /**
+        * From CAknAppUi, indicates when app ui is on the foreground.
+        * @param aForeground It is true if app is on the foreground.
+        */
+        IMPORT_C virtual void HandleForegroundEventL( TBool aForeground );
+
+        /**
+        * Indicates when the Phone app is in the foreground.
+        */
+        IMPORT_C virtual void HandlePhoneForegroundEventL();
+
+        /**
+        * Indicates when the Phone app is losing focus.
+        */
+        IMPORT_C virtual void HandlePhoneFocusLostEventL();
+
+        /**
+        * Indicates when the Idle app is in the foreground.
+        */
+        IMPORT_C virtual void HandleIdleForegroundEventL();
+
+        /**
+        * Indicates when the keylock events
+        */
+        IMPORT_C virtual void HandleKeyLockEnabled( TBool aKeylockEnabled );
+        
+        /**
+        * Handle environment changes.
+        * @param aChanges environment changes which may be reported by
+        *  a change notifier through the RChangeNotifier interface.
+        */
+        IMPORT_C void HandleEnvironmentChangeL( const TInt aChanges );
+
+        /**
+        * Handles startup of the phone application
+        */
+        IMPORT_C virtual void HandlePhoneStartupL();
+
+        /**
+        * This function is called when there is property value change.
+        * @param aCategory Category of the property
+        * @param aKey Property key that is changed
+        * @param aValue New property value
+        */
+        IMPORT_C virtual void HandlePropertyChangedL(
+            const TUid& aCategory,
+            const TUint aKey,
+            const TInt aValue );
+
+        /**
+        * Handle the change of the setting from Central Repository
+        * @param aUid identifing the central repository UID.
+        * @param aId central repository ID.
+        */
+        IMPORT_C virtual void HandleCenRepChangeL(
+            const TUid& aUid,
+            const TUint aId );
+
+        /**
+        * Handles commands.
+        * @param aCommand It is the code of the command to be handled.
+        * @returns boolean value was the command handled by the state
+        *          (ETrue) or not (EFalse)
+        */
+        IMPORT_C virtual TBool HandleCommandL( TInt aCommand );
+
+        /**
+        * Processes command.
+        * @param aCommand It is the code of the command to be handled.
+        * @returns boolean value was the command handled by the state
+        *          (ETrue) or not (EFalse)
+        */
+        IMPORT_C virtual TBool ProcessCommandL( TInt aCommand );
+
+        /**
+        * Handles commands from the Remote Control framework.
+        * @param aOperationId The operation ID of the command.
+        * @param aButtonAct The button action associated with the command.
+        * @return ETrue if the event was handled, EFalse otherwise.
+        */
+        IMPORT_C virtual TBool HandleRemConCommandL(
+            TRemConCoreApiOperationId aOperationId,
+            TRemConCoreApiButtonAction aButtonAct);
+
+        /**
+        * Setter for divert indication showing in bubble.
+        * @param aDivertIndication ETrue to show divert indication,
+        *          EFalse to not. Usually setting EFalse isn't necessary
+        *         as it's a default value in bubble creation.
+        */
+        IMPORT_C virtual void SetDivertIndication(
+            const TBool aDivertIndication );
+
+        /**
+        * Handles Long hash key press
+        */
+        IMPORT_C void HandleLongHashL();
+
+        /**
+        * Informs view to start Transition effect
+        * @param aType a transition effect, default none
+        * EndTransEffect() must be called when update is done.
+        */
+        IMPORT_C void BeginTransEffectLC( TStateTransEffectType aType = ENoneType );
+
+        /**
+        * Informs view to complete Transition effect
+        */
+        IMPORT_C void EndTransEffect();
+
+        /**
+        * Checks whether customized dialer view is active,
+        * @return ETrue if customized dialer is active
+        */
+        IMPORT_C TBool IsCustomizedDialerVisibleL() const;
+
+        /**
+        * Closes customized dialer view
+        */
+        IMPORT_C void CloseCustomizedDialerL();
+
+        /**
+         * Plays DTMF tone for key event
+         * */
+        IMPORT_C void HandleDtmfKeyToneL( const TKeyEvent& aKeyEvent,
+                TEventCode aEventCode );
+
+        /**
+        * Show global InfoNote
+        * @param aResourceId resource id to be resolved
+        */
+        IMPORT_C void SendGlobalInfoNoteL( TInt aResourceId );
+
+        /**
+        * Show global ErrorNote
+        * @param aResourceId resource id to be resolved
+        */
+        IMPORT_C void SendGlobalErrorNoteL( TInt aResourceId );
+
+        /**
+         * Get blocked key list
+         * @returns RArray<TInt>& lsit of blocked keys 
+         */
+        IMPORT_C const RArray<TInt>& GetBlockedKeyList() const;
+
+        /**
+         * Disable HW Keys if needed
+         */
+        IMPORT_C void DisableHWKeysL();
+
+        /**
+         * Disable Call UI
+         */
+        IMPORT_C void DisableCallUIL();
+
+        /**
+         * Enable Call UI
+         */
+        IMPORT_C void EnableCallUIL();
+
+        /**
+         * Disable HW Keys and Call UI if needed
+         */
+        IMPORT_C void CheckDisableHWKeysAndCallUIL();
+
+        /**
+         * Handle hold switch key event when there is an incoming or waiting call
+         */
+        IMPORT_C void HandleHoldSwitchL();
+        
+        /**
+         * Enable HW Keys and Call UI if needed
+         */
+        IMPORT_C void CheckEnableHWKeysAndCallUIL();
+        
+        /**
+        * Fetches autolock information - is it set on or not
+        * @return is autolock set on (ETrue) or off (EFalse)
+        */
+        IMPORT_C TBool IsAutoLockOn() const;
+
+        /**
+        * Return is sim state ok
+        * @return ETrue if is sim ok, otherwise EFalse
+        **/
+        IMPORT_C TBool IsSimOk();
+
+        /**
+        * Checks Svivel state.
+        * @return ETrue if swivel is closed.
+        */
+        IMPORT_C TBool IsSwivelClosed() const;
+
+        /**
+        * Check if note, query or blockingDialog is visible
+        * @return boolean value indicating that note, query or
+        * blocking dialog is visible
+        */
+        IMPORT_C TBool IsAnyQueryActiveL();
+
+        /**
+        * Check if menu bar is visible
+        * @return boolean value indicating that menu bar is visible
+        */
+        IMPORT_C TBool IsMenuBarVisibleL() const;
+
+        /**
+         * Sets context menu to correspond the incall options menu
+         *
+         */
+        IMPORT_C virtual void UpdateInCallContextMenuL();
+
+        /*
+        * If KFeatureIdFfSimlessOfflineSupport is undefined and
+        * UI shows note which will be closed by key event then
+        * method return ETrue otherwise EFalse.
+        */
+        TBool IsNoteDismissableL();
+
+        IMPORT_C void RetainPreviousKeylockStateL();
+        
+    public: // NumberEntry functions.
+
+        /**
+        * Passes create number entry command forward if NE can be created.
+        */
+        IMPORT_C virtual void HandleCreateNumberEntryL(
+                const TKeyEvent& aKeyEvent,
+                TEventCode aEventCode );
+        /**
+        * Check if number entry is used
+        * @return boolean value indicating that number entry is used
+        */
+        IMPORT_C virtual TBool IsNumberEntryUsedL();
+
+        /**
+        * Check if number entry is visible
+        * @return boolean value indicating that number entry is visible
+        */
+        IMPORT_C TBool IsNumberEntryVisibleL();
+
+    protected:
+
+        /**
+        * Handle EPEMessageAudioMuteChanged
+        */
+        IMPORT_C void HandleAudioMuteChangedL();
+
+        /**
+        * Handle EPEMessageAudioOutputChanged
+        */
+        IMPORT_C void HandleAudioOutputChangedL();
+
+        /**
+        * Handle SideVolumeKeyInc
+        */
+        IMPORT_C void IncreaseAudioVolumeL();
+
+        /**
+        * Handle SideVolumeKeyDec
+        */
+        IMPORT_C void DecreaseAudioVolumeL();
+
+        /**
+        * Dial CS multimedia call
+        */
+        IMPORT_C void DialMultimediaCallL();
+
+        /**
+        * Dial CS voice call
+        */
+        IMPORT_C void DialVoiceCallL();
+
+        /**
+        * Disconnect call
+        */
+        IMPORT_C TBool DisconnectCallL();
+
+        /**
+        * Display idle screen
+        */
+        IMPORT_C void DisplayIdleScreenL();
+
+        /**
+        * Set up the Idle screen in the background for the cases
+        * where the phone is no longer the top application (eg. end
+        * call when an external app is being displayed)
+        */
+        IMPORT_C void SetupIdleScreenInBackgroundL();
+
+        /**
+        * Display call header for call coming in ( the remote info data
+        * and picture is displayed immediately )
+        * @param aCallid call id
+        * @param aWaitingCall waiting call indication
+        */
+        IMPORT_C void DisplayHeaderForCallComingInL(
+            TInt aCallId,
+            TInt aWaitingCall );
+
+        /**
+        * Sets call header texts for call coming in
+        * @param aCallid call id
+        * @param aWaitingCall waiting call indication
+        * @param aCallHeaderData - Call header parameter into which the text
+        *                          will be set.
+        */
+        IMPORT_C void SetCallHeaderTextsForCallComingInL(
+            TInt aCallId,
+            TBool aWaitingCall,
+            TPhoneCmdParamCallHeaderData* aCallHeaderData );
+
+        /**
+        * Display call header for outgoing call (the phone number is initially
+        * displayed)
+        * @param aCallid call id
+        */
+        IMPORT_C void DisplayHeaderForOutgoingCallL( TInt aCallId );
+
+        /**
+        * Update Single Active Call
+        * @param aCallid call id
+        */
+        IMPORT_C void UpdateSingleActiveCallL( TInt aCallId );
+
+        /**
+        * Update remote information data in the call header
+        * @param aCallid call id
+        */
+        IMPORT_C void UpdateRemoteInfoDataL( TInt aCallId );
+
+        /**
+        * Return remote info data
+        * @param aCallid call id
+        * @param aData the returned remote info data
+        */
+        IMPORT_C void GetRemoteInfoDataL( TInt aCallId, TDes& aData );
+
+        /**
+         * Sets context menu
+         *
+         * @param aResourceId   resource
+         */
+        IMPORT_C virtual void SetContextMenuL( TInt aResourceId );
+
+        /**
+         * Sets context menu to correspond the incoming options menu
+         *
+         * @param aCallId   incoming call id
+         */
+        IMPORT_C virtual void UpdateIncomingContextMenuL( TInt aCallId );
+
+
+        /**
+        * Show note
+        * @param aResourceId resource id to be resolved
+        */
+        IMPORT_C void ShowNoteL( TInt aResourceId );
+
+        /**
+        * Show query
+        * @param aResourceId resource id to be resolved
+        */
+        IMPORT_C void ShowQueryL( TInt aResourceId );
+
+        /**
+        * Show text query
+        * @param aDialogResourceId dialog's resource id
+        * @param aDefaultCbaResourceId default CBA's resource id
+        * @param aContentCbaResourceId content CBA's resource id
+        * @param aDataText pointer to data text
+        * @param aSendKeyEnabled send key enabled status for the query
+        */
+        IMPORT_C void ShowTextQueryL(
+            TInt aDialogResourceId,
+            TInt aDefaultCbaResourceId,
+            TInt aContentCbaResourceId,
+            TDes* aDataText,
+            TBool aSendKeyEnabled = EFalse );
+
+        /**
+        * Check if note is visible
+        * @return boolean value indicating that note is visible
+        */
+        IMPORT_C TBool IsNoteVisibleL();
+
+        /**
+        * Handle numeric key event
+        */
+        IMPORT_C virtual void HandleNumericKeyEventL(
+            const TKeyEvent& aKeyEvent,
+            TEventCode aEventCode );
+
+        /**
+        * Check if the application needs to be sent to the background
+        * @return boolean value indicating that application needs to be
+        *  sent to the background
+        */
+        IMPORT_C TBool NeedToSendToBackgroundL() const;
+
+        /**
+        * Check if the top application is currently displayed in the foreground
+        * @return boolean value indicating that top app is displayed
+        */
+        IMPORT_C TBool TopAppIsDisplayedL() const;
+
+        /**
+        * Capture keys during call notifications (dialing, incoming, waiting)
+        * @param aCaptured ETrue if keys are to be captured
+        */
+        IMPORT_C void CaptureKeysDuringCallNotificationL( TBool aCaptured );
+
+        /**
+        * Displays the call termination note, if required
+        */
+        IMPORT_C void DisplayCallTerminationNoteL();
+
+        /**
+        * Set the handsfree mode
+        * @param aHandsfreeMode ETrue to activate IHF, EFalse to deactivate
+        */
+        IMPORT_C void SetHandsfreeModeL( TBool aHandsfreeMode );
+
+        /**
+        * Set the BT handsfree mode
+        * @param aHandsfreeMode ETrue to activate BT, EFalse to deactivate
+        */
+        IMPORT_C void SetBTHandsfreeModeL( TBool aHandsfreeMode );
+
+         /**
+        * Show global WarningNote
+        * @param aResourceId resource id to be resolved
+        */
+        IMPORT_C void SendGlobalWarningNoteL( TInt aResourceId );
+
+        /**
+        * Checks is the call id a video call.
+        * @param aCallId - call id to be checked
+        * @return ETrue if video call id, otherwise EFalse
+        */
+        IMPORT_C TBool IsVideoCall( const TInt aCallId );
+
+        /**
+        * Return SimState.
+        */
+        IMPORT_C TPESimState SimState() const;
+
+        /**
+        * Starts ALS line change timer.
+        * This should be called after receiving long keypress
+        * which is 0.8 seconds. ALS line change timer ticks
+        * 2.2 seconds before callback is called.
+        */
+        IMPORT_C void StartAlsLineChangeTimerL();
+
+        /**
+        * Start show security note
+        * This should be called in startup and idle state
+        * if sim state not ok
+        */
+        IMPORT_C void StartShowSecurityNoteL();
+
+        /**
+        * Check if the sim card state is EPESimNotPresent with
+        * the security mode is enabled.
+        * @return ETrue if the sim card state is EPESimNotPresent and
+        * the security mode is enabled, otherwise EFalse
+        **/
+        IMPORT_C TBool IsSimStateNotPresentWithSecurityModeEnabled();
+
+        /**
+        * Handle audio output availability change
+        */
+        void HandleAudioAvailableOutputChangedL();
+
+        /**
+        * Shows 'Number busy' note.
+        */
+        IMPORT_C void ShowNumberBusyNoteL();
+
+        /**
+        * Fetches keylock information - is it set on or not
+        * @return is keylock set on (ETrue) or off (EFalse)
+        */
+        IMPORT_C TBool IsKeyLockOn() const;
+
+        /**
+        * Informs Phone Engine Sat request completion
+        * @param aCallId a call id
+        */
+        IMPORT_C void CompleteSatRequestL( const TInt aCallId );
+
+        /**
+        * Sets the call header type used in the call bubble.
+        */
+        IMPORT_C void SetCallHeaderType( TInt aCallHeaderType );
+
+        /**
+        * Handles situation when hash key has been kept down long
+        * (long keypress) and the hash character is the only character
+        * in number entry.
+        */
+        IMPORT_C virtual void OnlyHashInNumberEntryL();
+
+        /**
+        * Informs view that UI is being updated (call bubble or number editor).
+        * EndUiUpdate() must be called when update is done.
+        */
+        IMPORT_C void BeginUiUpdateLC();
+
+        /**
+        * Informs view that UI update is completed.
+        */
+        IMPORT_C void EndUiUpdate();
+
+        /*
+        * Checks if necessary to show call termination note
+        *
+        * @param aCallId call id
+        * @return true if note should be shown
+        */
+        IMPORT_C virtual TBool CheckIfShowCallTerminationNote( );
+
+        /*
+        * Sets used touchpane buttons.
+        *
+        * @param touchpane resource id.
+        */
+        IMPORT_C void SetTouchPaneButtons( TInt aResourceId );
+
+        /*
+        * Sets touchpane visibility.
+        *
+        * @param ETrue if visible otherwise EFalse.
+        */
+        IMPORT_C void SetTouchPaneVisible( TBool aVisible );
+
+        /*
+        * Destroys touchpane buttons.
+        */
+        IMPORT_C void DeleteTouchPaneButtons();
+
+        /*
+        * Enables touchpane button that holds given command id.
+        *
+        * @param aCommandId Command id.
+        */
+        IMPORT_C void SetTouchPaneButtonEnabled( TInt aCommandId );
+
+        /*
+        * Disables touchpane button that holds given command id.
+        *
+        * @param aCommandId Command id.
+        */
+        IMPORT_C void SetTouchPaneButtonDisabled( TInt aCommandId );
+
+        /*
+        * Checks if DTMF editor is active,
+        * @return true is DTMF is active
+        */
+        IMPORT_C TBool IsDTMFEditorVisibleL() const;
+
+        /**
+        * Closes dtmf editor.
+        */
+        IMPORT_C void CloseDTMFEditorL();
+
+        /**
+        * Set default flags values.
+        * No active call
+        */
+        IMPORT_C void SetDefaultFlagsL();
+
+        /**
+        * Check if contact info available and
+        * shown waiting note with or without caller name
+        */
+        IMPORT_C void CallWaitingNoteL( TInt aCallId );
+
+        /*
+        * Sets ringtone playback.
+        * @param aCallId call id
+        */
+        IMPORT_C void SetRingingTonePlaybackL( TInt aCallId );
+
+        /**
+        * A message handling function for message EPEMessageDisconnecting
+        * @param aCallId: the call id of the call
+        */
+        IMPORT_C void HandleDisconnectingL( TInt aCallId );
+
+        /**
+        * Returns customized dialer menu resource id
+        */
+        IMPORT_C TInt CustomizedDialerMenuResourceIdL();
+
+        /**
+        * Returns customized dialer CBA resource id
+        */
+        IMPORT_C TInt CustomizedDialerCbaResourceIdL();
+        
+        /**
+        * Opens soft reject message editor.
+        */
+        IMPORT_C virtual void OpenSoftRejectMessageEditorL();
+
+    protected: // NumberEntry functions.
+
+        /**
+        * Set Number Entry visibility.
+        * @param aVisible ETrue if numberentry is wanted to be shown
+        *                 (Note ETrue will set NE CBA's)
+        *                 EFalse if numberentry isnt wanted to be shown
+        *                 (Note EFalse doesnt affact to CBA's)
+        */
+        IMPORT_C void SetNumberEntryVisibilityL( const TBool aVisible );
+
+        /**
+        * Create call if in numberentry more that 2 number and Send key
+        * Send manual control sequence
+        * if 1-2 number in numberentry and Send key
+        */
+        IMPORT_C void CallFromNumberEntryL();
+
+        /**
+         * Returns phone number from the phone number entry.
+         * @return  Phone number
+         */
+        IMPORT_C HBufC* PhoneNumberFromEntryLC();
+
+        /**
+        * Check if number entry content is stored
+        * @return boolean value indicating that number entry content is stored
+        */
+        IMPORT_C TBool IsNumberEntryContentStored();
+
+        /**
+        * Stores the number entry content to the cache
+        */
+        IMPORT_C void StoreNumberEntryContentL();
+
+        /**
+        * Restores the number entry content from the cache
+        */
+        IMPORT_C void RestoreNumberEntryContentL();
+
+        /**
+        * Clears the number entry content cache
+        */
+        IMPORT_C void ClearNumberEntryContentCache();
+
+        /**
+        * Restores number entry content after dtmf dialer
+        */
+        IMPORT_C void CheckIfRestoreNEContentAfterDtmfDialer();
+
+        /**
+         * Checks if on screen dialer feature is supported.
+         */
+        IMPORT_C TBool IsOnScreenDialerSupported() const;
+
+        /**
+        * Informs phoneengine that phone number has been edited i.e. phonenumber parser is run
+        */
+        IMPORT_C virtual  void HandleNumberEntryEdited();
+
+        /**
+         * Returns ETrue if alphanumeric characters are supported.
+         * @param aKeyEvent Key event.
+         * @return ETrue if alphanumeric chars are supported.
+         */
+         IMPORT_C TBool IsAlphanumericSupportedAndCharInput(
+                     const TKeyEvent& aKeyEvent );
+
+         /**
+         * Handle state-specific behaviour when number entry is cleared
+         */
+         IMPORT_C virtual void HandleNumberEntryClearedL();
+
+         /**
+         * Internal number entry handling methods.
+         */
+         void NumberEntryClearL();
+         
+          
+         /**
+         * Dims silence touch button if call is not alerting.
+         * @param None
+         */
+         IMPORT_C void UpdateSilenceButtonDimming();
+
+         /**
+         * Sets toolbar dimming.
+         * @param aDimmed ETrue if dimmed
+         */
+         IMPORT_C void SetToolbarDimming( TBool aDimmed );
+
+         /**
+         * Sets toolbar loudspeaker button enabled.
+         */
+         IMPORT_C void SetToolbarButtonLoudspeakerEnabled();
+         
+         /**
+         * Sets state of TitleBar Back button 
+         */
+         IMPORT_C void SetBackButtonActive( TBool aActive );
+
+    protected:
+
+       /**
+       * Returns updated remote information data.
+       * NOTE: This metohed is used when state receives
+       * EPEMessageRemotePartyInfoChanged from PhoneEngine.
+       * @param aCallId - Call Id.
+       */
+       TPhoneCmdParamCallHeaderData UpdateCallHeaderInfoL( TInt aCallId );
+
+       /**
+       * Checks if call is waiting, returns ETrue if call is waiting
+       * otherwise EFalse.
+       * @param aCallId, call id.
+       */
+       TBool IsWaitingCallL( const TInt aCallId );
+
+       /**
+       * Shows dtmf dialer
+       */
+       void ShowDtmfDialerL();
+
+       /**
+       * Checks status of KFeatureIdSideVolumeKeys and KTelephonyLVFlagScrollVolumeKeys
+       * keys. If KTelephonyLVFlagScrollVolumeKeys is false and KFeatureIdSideVolumeKeys is true
+       * then side volume keys are only supported and method returns true, otherwise false.
+       */
+       TBool OnlySideVolumeKeySupported();
+
+       /**
+       * Checks if device has connected call ongoing.
+       * List of connected call states: EPEStateConnected
+       *                                EPEStateConnectedConference
+       *                                EPEStateConnecting
+       */
+       TBool IsAnyConnectedCalls();
+
+    private:
+
+        /**
+        * Update incall indicator
+        * @param aCallState a call state
+        */
+        void UpdateIncallIndicatorL( TInt aCallState );
+
+        /**
+        * Handle EPEMessageChangedCallDuration
+        * @param aCallId call id of the message
+        */
+        void HandleChangedCallDurationL( TInt aCallId );
+
+        /**
+        * Update profile display
+        */
+        void UpdateProfileDisplayL();
+
+        /**
+        * Update operator display
+        */
+        void UpdateOperatorDisplayL();
+
+        /**
+        * Sends key down event to the phone engine
+        * @param aKeyEvent a key event
+        * @param aEventCode key event code
+        */
+        void SendKeyPressL(
+            const TKeyEvent& aKeyEvent,
+            TEventCode aEventCode );
+
+        /**
+        * Sends key events to the phone engine
+        * @param aKeyEvent a key event
+        * @param aEventCode key event code
+        */
+        void SendKeyEventL(
+            const TKeyEvent& aKeyEvent,
+            TEventCode aEventCode );
+
+        /**
+        * ETrue if title pane is visible
+        */
+        TBool TitlePaneIsVisibleL() const;
+
+        /**
+        * Change Audio volume level
+        * @param aLevel New volume level.
+        * @param aUpdateControl Set ETrue if volume ui control
+        *                       needs to be updated.
+        */
+        void ChangeAudioVolumeL( TInt aLevel,
+                                 TBool aUpdateControl = ETrue );
+
+        /**
+        * Handles EPEMessageInitiatedEmergency call message from Phone Engine.
+        * @param aCallId - Caller id.
+        */
+        void HandleInitiatedEmergencyCallL( TInt aCallId );
+
+        /**
+         *  Handles EPEMessageInitiatedEmergencyWhileActiveVideo message from
+         * Phone Engine.
+         */
+        void HandleInitiatedEmergencyWhileActiveVideoL();
+
+        /**
+        * Shows IMEI note
+        */
+        void HandleShowImeiL();
+
+        /**
+        * Handles network ciphering info changes
+        */
+        void HandleCallSecureStatusChangeL( TInt aCallId );
+
+        /**
+        * Shows Life time note
+        */
+        void HandleShowLifeTimerL();
+
+        /**
+        * Handles change als line command
+        */
+        void ChangeAlsLineL();
+
+        /**
+        * Active call id
+        */
+        TInt GetActiveCallIdL();
+
+        /**
+        * Callback function for launching ALS line change dialog
+        * This is called when Als line change timer timeout is
+        * reached which means user has pushed the #-key long enough.
+        * @param aAny - not used
+        */
+        static TInt AlsLineChangeTimerCallbackL( TAny* aAny );
+
+        /**
+        * Shows WLAN MAC address note
+        */
+        void ShowWlanMacAddressL();
+
+        /**
+        * Check if ALS line change is possible
+        */
+        TBool IsAlsLineChangePossible();
+
+        /**
+        * A message handling function for message EPEMessageRemoteBusy
+        * @param aCallId a call id
+        */
+        void HandleRemoteBusyL( const TInt aCallId );
+
+        /**
+        * Creates caller information. Sets CNAP, phone number, thumbnail image
+        * etc. into the call header parameter.
+        * @param aCallId - Call Id.
+        * @param aCallHeaderData - Call header parameter where modifications
+        *                          are made.
+        */
+        void CreateCallerInfoL( const TInt aCallId,
+            TPhoneCmdParamCallHeaderData* aCallHeaderData );
+
+        /**
+        * TCleanupOperation to call EndUiUpdate(), if leave occurs
+        * after BeginUiUpdate().
+        */
+        static void UiUpdateCleanup(TAny* aThis );
+
+        /**
+        * TCleanupOperation to call EndTransEffect, if leave occurs
+        * after BeginTransEffect().
+        */
+        static void EffectCleanup(TAny* aThis );
+
+        /**
+        * Gets volume level from ui control.
+        */
+        TInt GetVolumeLevel();
+
+        /**
+        * Shows video call specific out of memory note.
+        */
+        void ShowVideoCallOutOfMemoryNoteL();
+
+        /**
+        * Returns sim security status:
+        * Rejected or UnAccepted.
+        */
+        TInt SimSecurityStatus() const;
+
+        /**
+        * Show CUG in use note
+        */
+        void HandleCugInUseNoteL();
+
+        /**
+         * Handles changes in the SIM card state.
+         */
+        void HandleSimStateChangedL();
+
+        /**
+         * Checks if key events are allowed to be redirected for further handling
+         */
+        TBool IsKeyEventFurtherProcessedL( const TKeyEvent& aKeyEvent ) const;
+
+        /*
+         * Checks is given key contains numeric charaters or if customization is used
+         * alphanumeir letters
+        */
+        TBool IsValidAlphaNumericKey( const TKeyEvent& aKeyEvent,
+                TEventCode aEventCode );
+
+        /*
+         * Updates CBA using either customization or resource resolver
+         */
+        void CustomizeCbaForPhoneNumberL();
+
+        /*
+         * Checks if Touch dialer is on in DTMF mode.
+         */
+        TBool IsTouchDTmfDialerOn() const;
+
+        /*
+         * Checks if keyevent is from dtmf key and sends it to phone-engine
+         */
+        void SendDtmfKeyEventL( const TKeyEvent& aKeyEvent,
+                TEventCode aEventCode  );
+
+        /*
+         * Creates call header manager if needed.
+        */
+        CPhoneCallHeaderManager* CallheaderManagerL();
+
+        /*
+        * Creates number entry content if needed.
+        */
+        CPhoneNumberEntryManager* NumberEntryManagerL();
+
+        /*
+        * Updated Cba when Swivel state changes.
+        */
+        void UpdateCbaSwivelStateChangedL();
+
+        /**
+        * Loads data commonengine stringloader.
+        * @param aData - The returned data including needed text.
+        * @param aResourceId - Resource id for text.
+        */
+        void LoadResource( TDes& aData, const TInt aResource ) const;
+
+        /**
+        * Opens virtual keyboard.
+        */
+        void OpenVkbL();
+
+    private: // NumberEntry functions.
+
+        /**
+        * Handles key events in situations when there exists a number entry.
+        * In this case number entry may be visible or hidden.
+        * @param aKeyEvent - key event
+        * @param aEventCode - event code
+        */
+        void KeyEventForExistingNumberEntryL(
+            const TKeyEvent& aKeyEvent,
+            TEventCode aEventCode );
+
+    protected:  // Data
+
+        /**
+        * Reference to State machine
+        */
+        MPhoneStateMachine* iStateMachine;
+
+        /**
+        * Reference to the Phone UI View command handle
+        */
+        MPhoneViewCommandHandle* iViewCommandHandle;
+
+    protected:
+
+        //Indicates whether onscreen dialer is defined
+        TBool iOnScreenDialer;
+
+        /**
+        * Customization of functionality according to e.g.
+        * call type specific needs.
+        * Not own.
+        */
+        MPhoneCustomization* iCustomization;
+
+        // CBA key manager. Own.
+        CPhoneCbaManager* iCbaManager;
+
+    private:
+
+        /**
+         * Previously handled SIM card state.
+         */
+        TPESimState iPreviousSimState;
+
+        // Bitmap redraw counter
+        TInt iBitmapRedrawCounter;
+
+        /**
+        * Timer for ALS line change.
+        */
+        CPhoneTimer* iAlsLineChangeKeyPressTimer;
+
+        // Internal variable for EikonEnv to avoid
+        // use of static system calls
+        CEikonEnv& iEnv;
+
+        // Call header manager.
+        CPhoneCallHeaderManager* iCallHeaderManager;
+
+        // Number entry manager
+        CPhoneNumberEntryManager* iNumberEntryManager;
+
+        // RingtoneSilenced flag.
+        // This is used to determine if the ringtone
+        // for incoming call is silenced. The information
+        // is used while updating softkeys in method
+        // UpdateIncomingCbaL only
+        TBool iRingtoneSilenced;
+
+        /**
+         * Handle to the Operator logo resource.
+         */
+        TInt iLogoHandle;
+        };
+
+#endif // CPHONESTATE_H
+
+// End of File