vtuis/videotelui/inc/CVtUiAppUi.h
changeset 0 ed9695c8bcbe
child 3 b1602a5ab0a3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/CVtUiAppUi.h	Mon Nov 23 14:47:47 2009 +0200
@@ -0,0 +1,1469 @@
+/*
+* Copyright (c) 2004-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:  Application UI class for Video Telephone application.
+*
+*/
+
+
+
+#ifndef CVTUIAPPUI_H
+#define CVTUIAPPUI_H
+
+//  INCLUDES
+#include    <aknappui.h>
+#include    <vtengcommands.h>
+#include    <mvtengmedia.h>
+#include    <tvtengrendering.h>
+#include    <tvtengrenderingdsa.h>
+#include    <tvtengrenderingdp.h>
+#include    <tvtengrenderingnga.h>
+#include    <aknprogressdialog.h>
+#include    <mvtengaudio.h>
+#include    <remconcoreapi.h>
+
+#include    "CVtUiActiveExec.h"
+#include    "tvtuilocalvariation.h"
+#include    "tvtuiappstatebase.h"
+
+
+// FORWARD DECLARATION
+class CVtUiBlankControl;
+class CAknNavigationControlContainer;
+class CAknTitlePane;
+class CVtEngModel;
+class MVtUiVideoWindow;
+class CRepository;
+class CAknQueryDialog;
+class CAknProgressDialog;
+class TVtUiStates;
+class CVtUiCommandManager;
+class CVtUiComponentManager;
+class CVtUiFeatureManager; // TOOLBAR MOD
+class MVtUiNumberSource;
+class CVtUiMainControl;
+class CVtUiContextControl;
+class CVtUiBitmapManager;
+class CVtUiVolumeControl;
+class CAknIncallBubble;
+class CVtUiRemoteVideoControl;
+
+// CLASS DECLARATION
+
+/**
+*  Application UI class for Video Telephone application.
+*
+*  @since Series 60 2.6
+*/
+class CVtUiAppUi
+    : public CAknAppUi,
+      protected MVtUiActiveExec,
+      public MVtUiStateContext,
+      public MProgressDialogCallback
+    {
+    public:
+
+        // Rendering modes
+        enum TRenderingMode
+            {
+            ERenderingModeDefault,
+            ERenderingModeDialer
+            };
+
+    public: // Constructors and destructor
+
+        /**
+        * C++ constructor.
+        */
+        CVtUiAppUi();
+
+        /**
+        * Symbian constructor.
+        */
+        void ConstructL();
+
+        /**
+        * C++ destructor.
+        */
+        ~CVtUiAppUi();
+
+    public: // New functions
+
+        /*
+        *  This function decides possibility of swapimg image places.
+        */
+        TBool CanSwapImagePlaces();
+
+        /*
+        * Switches status pane between flat and normal one.
+        */
+        void SwitchLayoutToFlatStatusPaneL( TBool aSwitch );
+
+        /**
+        * Refreshes all.
+        */
+        void RefreshL();
+
+        /**
+        * Refreshes navi pane.
+        */
+        void RefreshNaviPaneL();
+
+        /**
+        * Refreshes softkeys.
+        */
+        void RefreshSoftkeysL();
+        
+        /**
+        * Refreshes menu.
+        */
+        void RefreshMenuL();
+
+        /**
+        * Refresh zoom popup
+        */
+        void RefreshZoomPopupL();
+        
+        /**
+        * Stop brightness or Contrast
+        */        
+        void StopBrightnessOrContrast();
+        /**
+        * Refreshes blind flags.
+        */
+        void RefreshBlind();
+
+        /**
+        * Refreshes synchronisation.
+        */
+        void RefreshSynchronise();
+
+        /**
+        * Opens number entry.
+        * @return ETrue if number entry opened.
+        */
+        TBool OpenNumberEntryL();
+
+        /**
+        * Handles EKeyPhoneSend presses
+        */
+        TKeyResponse HandlePhoneSendKeyL( const TKeyEvent& aKeyEvent,
+            TEventCode aType );
+
+        /**
+        * Returns pointer to cba.
+        */
+        CEikButtonGroupContainer* GetCba();
+
+        /**
+        * Sets zoom mode.
+        * @param aEnableZoomMode Etrue if zoom mode is on.
+        * EFalse otherwise.
+        * @param aIsPermanent ETrue if zoomindicator's timeout
+        * should be ignored. EFalse otherwise..
+        */
+        void SetZoomModeL( const TBool aEnableZoomMode,
+            const TBool aIsPermanent = EFalse );
+
+        /**
+        * Checks if command is active.
+        * @param aCommand Command id.
+        * @return Etrue if command is active
+        * EFalse otherwise.
+        */
+        TBool IsActiveCommand( TInt aCommand ) const;
+
+        TVtUiAppStateBase& State();
+
+        /**
+        * Returns reference to bitmap manager.
+        */
+        CVtUiBitmapManager& BitmapManager();
+
+        /**
+        * Sets given zoom step, if it allowed.
+        * @param aZoomStep New zoom step to be set.
+        */
+        void SetZoomFactorL( TInt aZoomStep );
+
+    public: // Functions from base classes
+
+        /**
+        * From CAknAppUi, handles window server events.
+        * @param aEvent event.
+        * @param aDestination destination control.
+        */
+        virtual void HandleWsEventL(
+            const TWsEvent& aEvent,
+            CCoeControl* aDestination );
+
+        /**
+        * From CAknAppUi, processes commands.
+        * @param aCommand the identifier of the command to be handled.
+        */
+        virtual void ProcessCommandL(
+            TInt aCommand );
+
+        /**
+        * From CAknAppUi, handles commands.
+        * @param aCommand the identifier of the command to be handled.
+        */
+        virtual void HandleCommandL(
+            TInt aCommand );
+
+        /**
+        * From CAknAppUi, handles dynamic initialisation of menu panes.
+        * @param aResourceId the resource identifier for the pane.
+        * @param aMenuPane the menu pane corresponding to the resource.
+        */
+        virtual void DynInitMenuPaneL(
+            TInt aResourceId,
+            CEikMenuPane* aMenuPane );
+
+        /**
+        * From CAknAppUi, handles key events.
+        * @param aKeyEvent event to be handled.
+        * @param aType type of the key event.
+        * @return response code (EKeyWasConsumed, EKeyWasNotConsumed)
+        */
+        virtual TKeyResponse HandleKeyEventL(
+            const TKeyEvent& aKeyEvent,
+            TEventCode aType );
+
+        /**
+        * From CAknAppUi, handles resouce changes.
+        * @param aType type of resource change.
+        */
+        virtual void HandleResourceChangeL( TInt aType );
+
+        /**
+        * From CAknAppUi, handles foreground status changes.
+        * @param aForeground ETrue if foreground.
+        */
+        virtual void HandleForegroundEventL( TBool aForeground );
+
+        /**
+        * Returns a pointer to CEikonEnv.
+        */
+        CEikonEnv* GetEikonEnv();
+
+    protected: // Functions from base classes
+
+        /**
+        * From CAknAppUi, returns help context.
+        * @return help context.
+        */
+        virtual CArrayFix<TCoeHelpContext>* HelpContextL() const;
+
+        /**
+        * @see MVtUiActiveExec::ActiveExecExecuteL.
+        */
+        virtual TBool ActiveExecExecuteL(
+            CVtUiActiveExec& aActiveExec,
+            const TInt aState,
+            TInt& aNextState,
+            TRequestStatus& aRequest );
+
+        /**
+        * @see MVtUiActiveExec::ActiveExecContinue.
+        */
+        virtual TBool ActiveExecContinue(
+            CVtUiActiveExec& aActiveExec,
+            TInt& aState,
+            const TInt aError );
+
+        /**
+        * @see MVtUiActiveExec::ActiveExecCancel.
+        */
+        virtual void ActiveExecCancel(
+            CVtUiActiveExec& aActiveExec,
+            const TInt aState );
+
+        /**
+        * @see MVtUiActiveExec::ActiveExecDone.
+        */
+        virtual void ActiveExecDone(
+            CVtUiActiveExec& aActiveExec,
+            const TInt aInitialState );
+
+    public: // from MVtUiStateContext
+
+        /** @see MVtUiStateContext::StartupPhase1L */
+        virtual void StartupPhase1L();
+
+        /** @see MVtUiStateContext::ShutdownL */
+        virtual void ShutdownL();
+
+        /** @see MVtUiStateContext::StartupPhase2L */
+        virtual void StartupPhase2L();
+
+        /** @see MVtUiStateContext::ChangeApplicationFocus */
+        virtual void ChangeApplicationFocus( const TBool aForeground );
+
+        /** @see MVtUiStateContext::ChangeState */
+        virtual void ChangeState( TVtUiAppStateBase* aState );
+
+        /** @see MVtUiStateContext::StartTone */
+        virtual void StartDtmfTone( const TChar& aTone );
+
+        /** @see MVtUiStateContext::StopTone */
+        virtual void StopDtmfTone();
+
+        /** @see MVtUiStateContext::Model */
+        virtual CVtEngModel& Model();
+
+        /** @see MVtUiStateContext::VideoTelephonyVariation */
+        virtual const TVtUiVideoTelephonyVariation&
+            VideoTelephonyVariation() const;
+
+        /** @see MVtUiStateContext::NumberSource*/
+        virtual MVtUiNumberSource* NumberSource() const;
+
+        /** @see MVtUiStateContext::RefreshL */
+        virtual void RefreshL( const TInt aRefreshFlags );
+
+        /** @see MVtUiStateContext::DoExecuteCmdL */
+        virtual void DoExecuteCmdL(
+            const TVtEngCommandId aCommand,
+            TDesC8* aParams );
+
+        /** @see MVtUiStateContext::DoHandleLayoutChangedL */
+        virtual void DoHandleLayoutChangedL();
+
+        /** From MVtUiShutterObserver via MVtUiStateContext
+        *  Exits the application.
+        */
+        virtual void HandleShutdownReady();
+
+        /**
+        * Gets reference to context control.
+        * @return reference to context control.
+        */
+        CVtUiContextControl& ContextControl();
+
+        /**
+        * Gets reference to main control.
+        * @return reference to main control.
+        */
+        CVtUiMainControl& MainControl();
+
+        /**
+        * Gets reference to remote video control.
+        * @return reference to remote video control.
+        */        
+        CVtUiRemoteVideoControl& RemoteVideoControl();
+
+        /**
+        * Switches viewfinder to main pane if it is currently in context
+        * pane.
+        */
+        void SwitchViewFinderToMainPaneL( TBool aUpdateState = ETrue );
+
+        /**
+        * Switches viewfinder to context pane if it is currently in main
+        * pane.
+        */
+        void SwitchViewFinderToContextPaneL( TBool aUpdateState = ETrue );
+
+        /**
+        * Restores viewfinder back to pane where it was prior to calling the
+        * switch ViewFinderToMainPane() or ViewFinderToContextPane() methods.
+        */
+        void RestoreViewFinderL();
+
+        /*
+        * Updates volume to the Video Telephone engine.
+        */
+        void CmdUpdateVolumeL( MVtEngAudio::TVtEngOutputVolume aVolume );
+
+        /**
+        * Increases "command activating" ref.count and adds cleanup item
+        * to decrease it. Refreshes commands in case of first increment from
+        * zero. When PopAndDestroy() is called, cleanup decreases reference
+        * count and if it reduces back to zero command refresh is again done.
+        */
+        void EnableCommandActivatingAndCleanupPushL();
+
+    private: // from MProgressDialogCallback
+
+        /**
+        * @see MProgressDialogCallback::DialogDismissedL
+        */
+        void DialogDismissedL( TInt aButtonId );
+
+    private:
+
+        // COMMAND HANDLING
+
+        /**
+        * Checks if command is allowed.
+        * @param aCommand command identifier.
+        * @return ETrue if allowed, EFalse otherwise.
+        */
+        TBool IsCommandAllowedL( const TInt aCommand );
+
+        /**
+        * Refreshes iDisabledFlags.
+        */
+        void RefreshDisabledFlagsL();
+
+        /**
+        * Refreshes camera option availability.
+        * @param aUsePrimaryCameraNotAllowed it will be updated to ETrue if
+        *        it is not allowed to activate primary camera.
+        * @param aUseSecondaryCameraNotAllowed it will be updated to ETrue if
+        *        it is not allowed to activate secondary camera.
+        */
+        void RefreshCameraOptionAvailability(
+            TBool& aUsePrimaryCameraNotAllowed,
+            TBool& aUseSecondaryCameraNotAllowed );
+
+        /**
+        * Enables capture mode.
+        */
+        void CmdSnapshotL();
+
+        /**
+        * Freezes outgoing video image.
+        */
+        void CmdCaptureL();
+
+        /**
+        * Disables capture mode.
+        */
+        void CmdCancelCaptureL();
+
+
+        /**
+        * Enables video.
+        */
+        void CmdEnableVideoL();
+
+        /**
+        * Enables audio (unmute microphone).
+        */
+        void CmdEnableAudioL();
+
+        /**
+        * Disables video.
+        */
+        void CmdDisableVideoL();
+
+        /**
+        * Disables audio (mute microphone).
+        */
+        void CmdDisableAudioL();
+
+        /**
+        * Activates Bluetooth handsfree.
+        */
+        void CmdActivateBtL();
+
+        /**
+        * Deactivates Bluetooth handsfree.
+        */
+        void CmdDeactivateBtL();
+
+        /**
+        * Activates loudspeaker.
+        */
+        void CmdActivateLoudspeakerL();
+
+        /**
+        * Deactivates loudspeaker.
+        */
+        void CmdDeactivateLoudspeakerL();
+
+        /**
+        * Ends active call.
+        */
+        void CmdEndActiveCallL();
+
+        /**
+        * Swaps images places.
+        */
+        void CmdSwapImagesPlacesL();
+
+        /**
+        * Switches used camera.
+        * @param aPrimaryCamera ETrue if primary camera is to be selected,
+        *        EFalse if secondary camera is to be selected.
+        */
+        void CmdUseCameraL( const TBool aPrimaryCamera );
+
+        /**
+        * Launches help application.
+        */
+        void CmdHelpL();
+
+        /**
+        * Prepare exiting the application.
+        */
+        void PrepareExitL();
+
+        /**
+        * Updates zoom step to Video Telephone engine.
+        */
+        void CmdUpdateZoomL();
+
+        /**
+        * Dials emergency call.
+        */
+        void CmdDialEmergencyL();
+
+        /**
+        * Goes to Idle.
+        */
+        void CmdGoToIdleL();
+
+        /**
+        * Initialize image sharing.
+        */
+        void CmdInitializeShareImageL( TBool& aNeedRefresh );
+
+        /**
+        * Start sharing image.
+        */
+        void CmdShareImageL();
+
+        /**
+        * Stops sharing image.
+        */
+        void CmdStopShareImageL( TBool& aNeedRefresh );
+
+		/**
+        * Handles change in call waiting state.
+        * @param aIsWaiting The state of call waiting.
+        */
+	    void HandleWaitingStateChange( TBool aIsWaiting );
+
+        // STATE TRANSITIONS
+
+        /**
+        * @see MVtUiActiveExec::ActiveExecExecuteL.
+        */
+        TBool ActiveExecInitExecuteL(
+            const TInt aState,
+            TInt& aNextState,
+            TRequestStatus& aRequest );
+
+        /**
+        * @see MVtUiActiveExec::ActiveExecContinue.
+        */
+        TBool ActiveExecInitContinue(
+            TInt& aState,
+            const TInt aError );
+
+        /**
+        * @see MVtUiActiveExec::ActiveExecCancel.
+        */
+        void ActiveExecInitCancel(
+            const TInt aState );
+
+        /**
+        * @see MVtUiActiveExec::ActiveExecDone.
+        */
+        void ActiveExecInitDone(
+            const TInt aInitialState );
+
+        /**
+        * Executes command taking no parameters.
+        * @param aCommand command to be performed.
+        * @param aRequest request status.
+        */
+        void ActiveExecInitExecuteCommandL(
+            const TVtEngCommandId aCommand,
+            TRequestStatus& aRequest );
+
+        /**
+        * Executes command taking no parameters.
+        * @param aCommand command to be performed.
+        * @param aParam command parameters.
+        * @param aRequest request status.
+        */
+        template < class T >
+        void ActiveExecInitExecuteCommandL(
+            const TVtEngCommandId aCommand,
+            T& aParam,
+            TRequestStatus& aRequest );
+
+        /**
+        * Executes 'prepare camera' command.
+        * @param aSource source to be prepared.
+        * @param aRequest request status.
+        */
+        void ActiveExecInitPrepareCameraL(
+            const MVtEngMedia::TMediaSource aSource,
+            TRequestStatus& aRequest );
+
+        /**
+        * Executes 'set source' command.
+        * @param aSource source to be selected.
+        * @param aRequest request status.
+        */
+        void ActiveExecInitSetSourceL(
+            const MVtEngMedia::TMediaSource aSource,
+            TRequestStatus& aRequest );
+
+        /**
+        * Executes prepare viewfinder command.
+        * @param aRequest request status to be completed when finished.
+        */
+        void ActiveExecInitPrepareViewFinderL(
+            TRequestStatus& aRequest );
+
+        /**
+        * Executes prepare remote render command.
+        * @param aRequest request status to be completed when finished.
+        */
+        void ActiveExecInitPrepareRemoteRenderL(
+            TRequestStatus& aRequest );
+
+
+        /**
+        * Executes command taking no parameters.
+        * @param aCommand command to be performed.
+        * @param aRequest request status.
+        */
+        void ActiveExecCmdExecuteCommandL(
+            const TVtEngCommandId aCommand,
+            TRequestStatus& aRequest );
+
+        /**
+        * Executes 'set source' command.
+        * @param aSource source to be selected.
+        * @param aRequest request status.
+        */
+        void ActiveExecCmdSetSourceL(
+            const MVtEngMedia::TMediaSource aSource,
+            TRequestStatus& aRequest );
+
+        /**
+        * Executes 'prepare camera' command.
+        * @param aSource source to be selected.
+        * @param aRequest request status.
+        */
+        void ActiveExecCmdPrepareCameraL(
+            const MVtEngMedia::TMediaSource aSource,
+            TRequestStatus& aRequest );
+
+
+        /**
+        * Determines main control options.
+        * @param aRemoteVideo for remote video.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptions
+            DetermineMainControlOptions( TBool aRemoteVideo );
+
+        /**
+        * Determines context control options.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptions DetermineContextControlOptions();
+
+        /**
+        * Determines dialer control options.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptions DetermineDialerControlOptions();
+
+        /**
+        * Determines main control DSA options.
+        * @param aRemoteVideo for remote video.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptionsDSA
+            DetermineMainControlOptionsDSA( TBool aRemoteVideo );
+
+        /**
+        * Determines context control DSA options.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptionsDSA DetermineContextControlOptionsDSA();
+
+        /**
+        * Determines dialer control DSA options.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptionsDSA DetermineDialerControlOptionsDSA();
+
+        /**
+        * Determines main control DP options.
+        * @param aRemoteVideo for remote video.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptionsDP
+            DetermineMainControlOptionsDP( TBool aRemoteVideo );
+
+        /**
+        * Determines context control DP options.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptionsDP DetermineContextControlOptionsDP();
+
+        /**
+        * Determines dialer control DP options.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptionsDP DetermineDialerControlOptionsDP();
+
+        /**
+        * Determines remote video  control options.
+        * @return rendering options.
+        */
+        TVtEngRenderingOptionsNGA
+            DetermineRemoteVideoControlOptionsNGA();
+
+        // SYNCHRONOUS / BLOCKING EXECUTION:
+
+        /**
+        * Performs a command without any parameters.
+        * @param aCommand command to be performed.
+        */
+        void ExecuteCmdL( const TVtEngCommandId aCommand );
+
+        /**
+        * Performs a command with a parameter.
+        * @param aCommmand command to be performed.
+        * @param aParam parameter.
+        */
+        template< class T >
+        void ExecuteCmdL(
+            const TVtEngCommandId aCommand,
+            T& aParam );
+
+        // ASYNCHRONOUS EXECUTION:
+
+        /**
+        * Performs a command without any parameters.
+        * @param aDialogPtr pointer to which returned value is stored.
+        * @param aCommand command to be performed.
+        * @param aStatus request status.
+        * @return dialog.
+        */
+        CEikDialog* ExecuteCmdAsyncL(
+            CEikDialog** aDialogPtr,
+            const TVtEngCommandId aCommand,
+            TRequestStatus& aStatus );
+
+        /**
+        * Performs a command with a parameter.
+        * @param aDialogPtr pointer to which returned value is stored.
+        * @param aCommmand command to be performed.
+        * @param aParam parameter.
+        * @param aStatus request status.
+        * @return dialog.
+        */
+        template< class T >
+        CEikDialog* ExecuteCmdAsyncL(
+            CEikDialog** aDialogPtr,
+            const TVtEngCommandId aCommand,
+            T& aParam,
+            TRequestStatus& aStatus );
+
+        /**
+        * Performs a command.
+        * @param aDialogPtr pointer to which returned value is stored.
+        * @param aCommand command.
+        * @param aParams parameter, optional.
+        * @param aStatus request status.
+        * @return dialog.
+        */
+        CEikDialog* DoExecuteCmdAsyncL(
+            CEikDialog** aDialogPtr,
+            const TVtEngCommandId aCommand,
+            TDesC8* aParams,
+            TRequestStatus& aStatus );
+
+        /**
+        * Executes command in TRAP harnness.
+        * @param aCommand command identifier.
+        * @param aParam optional, parameters.
+        * @return error code.
+        */
+        TInt Execute( const TVtEngCommandId aCommand, TDesC8* aParam );
+
+        // EVENT HANDLING
+
+        /**
+        * Handles foreground changed events.
+        * @param aIsForeground ETrue if foreground, EFalse otherwise.
+        */
+        void HandleForegroundChangedL(
+            TBool aIsForeground );
+
+        /**
+        * Handles engine reset.
+        */
+        void HandleEngineResetL();
+
+        /**
+        * Handles successful answer operation.
+        */
+        void HandleAnswerL();
+
+        /**
+        * Stops waiting image text showing.
+        */
+        void StopWaitingImage();
+
+        /**
+         * Stops white balance showing.
+         */
+        void StopWhiteBalanceOrColortone();
+        
+        /**
+        * Handles layout changes basically calling HandleLayoutChangedL
+        * in trap harness.
+        * @return error code.
+        */
+        TInt HandleLayoutChanged();
+
+        /**
+        * Handles layout changes.
+        */
+        void HandleLayoutChangedL();
+
+        /**
+        * Handles video frame.
+        * @param aLocal local frame if ETrue, EFalse if remote.
+        * @param aBitmap frame, ownership not transferred.
+        */
+        void HandleVideoFrameL(
+            const TBool aLocal,
+            CFbsBitmap* aBitmap );
+
+        void SetVideoFrame(
+            const TBool aLocal,
+            CFbsBitmap* aBitmap );
+
+          /**
+        * Handles video call details.
+        * @param aCallID call id.
+        * @param aCallName call name.
+        * @param aIsPeerAddressAvailable is peer address available.
+        */
+        void HandleVideoCallDetailsL(
+            const TInt aCallId,
+            const TDesC& aCallName,
+            const TBool aIsPeerAddressAvailable );
+
+        /**
+        * Checks if it's time to bring this application
+        * to the foreground.
+        */
+        void CheckBringToForeground();
+
+        /**
+        * Checks if it's time to send this application
+        * to the background.
+        */
+        void CheckSendToBackground();
+
+        /**
+        * Handles remote problem.
+        */
+        void HandleVideoFrameRemoteProblemL();
+
+        /**
+        * Handles local problem.
+        */
+        void HandleVideoFrameLocalProblemL();
+
+        /**
+        * Set a new remote video layout.
+        */
+        void ChangeRemoteVideoLayoutL();
+
+        /**
+        * Show image initialization progress dialog.
+        */
+        void ShowImageInitializeProgressL();
+
+        /**
+        * Hide image initialization progress dialog.
+        */
+        void HideImageInitializeProgressL();
+
+        /**
+        * Sets SQCif usage.
+        * @param aUseSQCif SQCif is used.
+        */
+        void RemoteVideoIsSQCif( TBool aUseSQCif );
+
+        /**
+        * Sets SQCif usage to control.
+        * @param aUseSQCif SQCif is used.
+        */
+        void ControlUsesSQCif( TBool aUseSQCif );
+
+        /**
+        * Checks if beating needs to be started.
+        * @param aCallDurationEnabled call duration enabled status.
+        */
+        void CheckBeatL( const TBool aCallDurationEnabled );
+
+        /**
+        * Handles heart beats.
+        */
+        void HandleBeat();
+
+        // UTILITY METHODS
+
+        /**
+        * Informs the user that camera is reserved by another application.
+        */
+        void ShowCameraInUseNoteL() const;
+
+        /**
+        * Informs the user that the selected operation is not allowed.
+        */
+        void ShowNotAllowedNoteL() const;
+
+        /**
+        * Informs the user that it is not allowed to create normal call.
+        */
+        void ShowCallNotAllowedNoteL() const;
+
+        /**
+        * Informs the user that the other camera is not usable.
+        */
+        void ShowOtherCameraNotUsableNoteL() const;
+
+        /**
+        * Informs the user that image loading failed.
+        */
+        void ShowUnableToOpenNoteL() const;
+
+        /**
+        * Informs the user that error happened during image decoding.
+        * Note: Cannot be constant because DoExecuteL() is used for
+        * calling this method.
+        */
+        void ShowImageDecodingErrorNoteL();
+
+        /**
+        * Informs the user that image is DRM protected and cannot be opened.
+        */
+        void ShowDRMNotAllowedNoteL() const;
+
+        /**
+        * Sets softkeys.
+        * @param aSoftkeyResourceId softkey resource id.
+        */
+        void SetSoftkeysL( const TInt aSoftkeyResourceId );
+
+        /**
+        * Sets application hidden from fast swap window.
+        * @param aHidden ETrue if to be hidden, EFalse if visible.
+        */
+        void SetHiddenL( const TBool aHidden );
+
+        /**
+        * Updates title pane to show call index.
+        * @param aCallId call id.
+        */
+        void SetCallIdL( const TInt aCallId );
+
+        /**
+        * Updates title pane to show name.
+        * @param aName name to be displayed in title pane.
+        * @return ETrue if succeeded, EFalse if not enough memory.
+        */
+        TBool SetCallNameL( const TDesC& aName );
+
+        /**
+        * Brings Telephone application to the foreground.
+        */
+        void BringTelephoneToForeground();
+
+        /**
+        * Returns window group identifier of the principal
+        * telephone application.
+        * @return window group id or 0 if failed.
+        */
+        TInt TelephoneApplicationWgId();
+
+        /**
+        * Returns ETrue if number entry should be shown to the user.
+        * This can be called only after ReadTelephonyVariant has
+        * been called.
+        * @return ETrue if number entry should be shown to the user.
+        */
+        inline TBool ShowNumberEntry() const;
+
+        /**
+        * Checks if active idle is enabled.
+        * @return ETrue if active idle is enabled.
+        */
+        TBool IsActiveIdleEnabledL() const;
+
+        /**
+        * Checks engine functionality.
+        */
+        void CheckEngineFunctionality();
+
+        /**
+        * Returns navi pane.
+        * @return navi pane instance. Ownership not transferred.
+        */
+        inline CAknNavigationControlContainer* NaviPaneL();
+
+        /**
+        * Returns title pane.
+        * @return title pane instance. Ownership not transferred.
+        */
+        inline CAknTitlePane* TitlePaneL();
+
+        /**
+        * Pushes item to cleanup stack to update softkeys.
+        */
+        inline void CleanupPushRefreshL();
+
+        /**
+        * Pushes item to cleanup stack to enable blind status setting.
+        */
+        inline void CleanupPushEnableBlindL();
+
+        /**
+        * Callback function to refresh navi pane and softkeys.
+        * @param aAny pointer to an instance of this class.
+        */
+        static void DoRefresh( TAny* aAny );
+
+        /**
+        * Callback function to enable blind status checking.
+        * @param aAny pointer to an instance of this class.
+        */
+        static void DoEnableBlindSetting( TAny* aAny );
+
+        /**
+        * Callback function to disable command activation
+        * state.
+        * @param aAny pointer to an instance of this class.
+        */
+        static void DoDisableCommandActivating( TAny* aAny );
+
+        /**
+        * Decreases command activation ref.count and refreshes
+        * states if count gets zero.
+        */
+        void HandleCommandDeactivationL();
+
+        /**
+        * Callback function to handle exit timeout.
+        * @param aAny pointer to instance of this class.
+        * @return KErrNone always.
+        */
+        static TInt DoHandleExitTimeout( TAny* aAny );
+
+        /**
+        * Callback function to exit.
+        * @param aAny pointer to instance of this class.
+        * @return KErrNone always.
+        */
+        static TInt DoExit( TAny* aAny );
+
+        /**
+        * Checks whether viewfinder is currently in main pane.
+        * @return ETrue if viewfinder is in main pane.
+        */
+        TBool IsViewFinderInMainPane() const;
+
+public:
+        /**
+        * Checks whether viewfinder is currently in context pane.
+        * @return ETrue if viewfinder is in context pane.
+        */
+        TBool IsViewFinderInContextPane() const;
+private:
+        /**
+        * Updates context pane icon
+        */
+        void UpdateContextPaneIconL();
+
+        /**
+        * Enables or disables the incall bubble.
+        */
+        void SetIncallBubbleAllowedInUsualL( TBool aAllowed );
+
+        /**
+        * Shows progress dialog using given resource.
+        */
+        void ShowProgressDialogL( TInt aResourceId,
+            MProgressDialogCallback* aCallback = NULL );
+
+        /**
+        * Hides (completes) progress dialog.
+        */
+        void HideProgressDialogL();
+
+        /**
+        * Static async callback for switching viewfinder to MainPane, also
+        * starts image sharing.
+        */
+        static TInt AsyncViewFinderToMainPaneAndShare( TAny* aPtr );
+
+        /**
+        * Static async callback for starting image share.
+        */
+        static TInt AsyncShare( TAny* aPtr );
+
+        /**
+        * Static async callback for showing error note and resharing image.
+        */
+        static TInt AsyncShowErrorAndRestartShare( TAny* aPtr );
+
+        /**
+        * Static async callback for handling layout change.
+        */
+        static TInt DelayedHandleLayoutChanged( TAny* aPtr );
+
+        /**
+        * Gets current camera orientations for primary and secondary camera.
+        */
+        void GetCameraOrientations();
+
+        /**
+        * Sets initial camera orientation.
+        */
+        void SetInitialCameraOrientationL();
+
+        /**
+        * Sets current camera orientation.
+        */
+        void SetCameraOrientationL();
+
+        /**
+        * Updates engine states.
+        */
+        void RefreshStatesL();
+
+        /**
+        * Starts video preference feature specified by command id.
+        */
+        void CmdAdjustVideoL( TInt aCommand );
+
+        /**
+        * AppUi has been initialized and its current state is EVtUiAppUiAnswered.
+        * Do any other needed initilization here e.g. start features.
+        */
+        void AppUiInitDoneDoPostInitL();
+
+        /*
+        *  This function decides how the wsevent should be handled
+        * if zoom mode is on.
+        * @param  aEvent window server event.
+        * @return ETrue if caller function should return, EFalse otherwise.
+        */
+        TBool ProcessWsEventIfZoomModeIsActiveL( const TWsEvent& aEvent );
+
+        /*
+        *  This function hides the brightness, contrast, volume slider if their mode is on.
+        */
+        void StopSliders();
+
+        /**
+        * Does pre handling to key events, especially for Zoom in and Zoom out
+        * HW keys.
+        * @param aEvent event.
+        */
+        TBool PreHandleKeyEventL( const TWsEvent& aEvent );
+
+        /**
+        * Calls SimulateKeyEventL() for stored zoom key event.
+        */
+        void SimulateStoredKeyEventL( const TEventCode aEventCode );
+
+        /**
+        * Stores zoom key event. If there is different zoom key event
+        * already stored, keyup event is sent for that event before
+        * new event is stored.
+        */
+        void StoreKeyEventL( const TKeyEvent& aKeyEvent );
+
+        /**
+        * Callback function that calls TryToStartTb function
+        */
+        static TInt DoTryToStartTbL( TAny* aAny );
+
+        /*
+        * Tries to start toolbar. Toolbar is started if
+        * option menus is not visible.
+        */
+        void TryToStartTbL();
+
+        /*
+        * Update video prefrence
+        */
+        void UpdateVBSettingL();
+
+
+        /**
+        * Sets current rendering mode (i.e. default or dialer)
+        */
+        void SetRenderingModeL( const TRenderingMode aMode,
+            MVtUiVideoWindow* aDownlink );
+
+        /**
+        * Updates rendering parameters.
+        */
+        void UpdateRenderingParametersL();
+
+        /*
+        * Media state has been changed
+        */
+        void MediaStateChangedL();
+
+        /*
+        * Updates volume slider
+        */
+        void RefreshVolumeL();
+
+        /*
+        * Adjusts volume up or down one step.
+        */
+        void AdjustVolumeL( TRemConCoreApiOperationId aOperationId );
+
+    private:
+
+        // Pointer to stored downlink window.
+        MVtUiVideoWindow* iStoredDownlinkWindow;
+
+        // Current rendering mode
+        TRenderingMode iRenderingMode;
+
+        // Command framework instance
+        CVtUiCommandManager* iCommandManager;
+
+        // Inner class.
+        class CInstance;
+
+        // Model instance. Exists only while there is a video call.
+        CInstance* iInstance;
+
+        // Inner class to observe all events.
+        class CEventObserver;
+
+        // Inner class for verifying media gallery objects
+        class CVtUiAppUiMGVerifier;
+
+        // Owned event observer.
+        CEventObserver* iEventObserver;
+
+        // Owned blank control for reset & shutdown.
+        CVtUiBlankControl* iBlankControl;
+
+        /**
+        * Enumerates disabled flags:
+        * EDisabledVideo - video disabled,
+        * EDisabledAudio - audio disabled,
+        * EVideoOptionsDisabled - video options disabled.
+        */
+        enum TDisabledFlags
+            {
+            EDisabledVideo = 1,
+            EDisabledAudio = 2,
+            EVideoOptionsDisabled = 4
+            };
+
+		// The Ihf Note id.
+		TInt iIhfNoteId;
+
+        // Flags for disabled. Sum of subset of TDisabledFlags.
+        TInt iDisabledFlags;
+
+        // Current softkey resource id.
+        TInt iCurrentSoftkeys;
+
+        // Telephony variant.
+        TVtUiVideoTelephonyVariation iVTVariation;
+
+        // Window group id of this application.
+        TInt iThisApplicationWgId;
+
+        // Window group id of eikon server.
+        TInt iEikonServerWgId;
+
+        // Window group id for AknCapServer
+        TInt iAknCapServerWgId;
+
+        // Window group id for Akn Notifier Server
+        TInt iAknNfyServerWgId;
+
+        // Owned active executor for initialisation / uninitialisation.
+        CVtUiActiveExec* iActiveExec;
+
+        // Owned current dialog on execution.
+        CEikDialog* iExecDialog;
+
+        // Owned blank dialog.
+        CEikDialog* iExecBlankDialog;
+
+        // Reference to request status.
+        TRequestStatus* iShutdownRequest;
+
+        // Owned active executor for command execution.
+        CVtUiActiveExec* iCmdActiveExec;
+
+        // Owned current dialog on command execution.
+        CEikDialog* iCmdExecDialog;
+
+        // Owned blank dialog on command execution.
+        CEikDialog* iCmdExecBlankDialog;
+
+
+        // Owned timer for making sure that
+        // the application is terminated in time.
+        CPeriodic* iExitTimer;
+
+        // DTMF tone, used as parameter to KVtEngStartDtmfTone.
+        TPckgBuf< TChar > iDtmfTone;
+
+        // Pointer to uplink window.
+        MVtUiVideoWindow* iUplinkWindow;
+
+        // Pointer to downlink window.
+        MVtUiVideoWindow* iDownlinkWindow;
+
+        // Query dialog for switching to voice call
+        CAknQueryDialog* iCreateVoiceCallDlg;
+
+        // Progress dialog shown when initializing
+        CAknProgressDialog* iProgressDlg;
+
+        // ASync callback.
+        CAsyncCallBack* iAsyncCallback;
+
+        // Async callback for layout change
+        CAsyncCallBack* iLayoutChangeCallback;
+
+        // Camera orientation for primary camera
+        MVtEngMedia::TCameraOrientation iPrimaryCameraOrientation;
+
+        // Camera orientation for secondary camera
+        MVtEngMedia::TCameraOrientation iSecondaryCameraOrientation;
+
+        // Currently used camera orientation
+        MVtEngMedia::TCameraOrientation iCurrentCameraOrientation;
+
+        // Current loudspeaker volume
+        TInt iLoudspeakerVolume;
+
+        // Current handset volume
+        TInt iHandsetVolume;
+
+        // Ui states (media, audio, boolean variables)
+        TVtUiStates* iUiStates;
+
+        // Component manager instance
+        CVtUiComponentManager* iComponentManager;
+
+        // Feature manager instance
+        CVtUiFeatureManager* iFeatureManager;
+
+        // Pointer to cba
+        CEikButtonGroupContainer* iCba;
+
+        // Active number source
+        MVtUiNumberSource* iNumberSource;
+
+        TVtUiAppStateBase*  iState;
+
+        // Stored zoom key event
+        TKeyEvent iStoredKeyEvent;
+
+        // ETrue if incoming call is waiting call
+        TBool iIsWaitingCallState;
+
+        // ETrue if key event has been stored
+        TBool iIsStoredKeyEvent;
+
+        // Timer for starting the toolbar
+        CPeriodic* iTbPeriodic;
+
+        // Owned volume control class for adjusting
+        // engine side volume
+        CVtUiVolumeControl* iVolCtrl;
+
+    private: // Friend classes
+
+        // Inner class.
+        friend class CInstance;
+
+        // Inner class.
+        friend class CEventObserver;
+
+    private:
+
+        // Class for active command handling
+        class TActiveCommand
+            {
+
+        public:
+
+            /**
+            * Constructor.
+            * @param aActiveCommands array of command ids.
+            * @param aCommand command id.
+            */
+            TActiveCommand( RArray< TInt >& aActiveCommands, TInt aCommandId );
+
+            /**
+            * Destructor
+            */
+            ~TActiveCommand();
+
+            /**
+            * Adds command to active commands
+            */
+            void OpenL();
+
+        private:
+
+            /**
+            * Removes command from active commands
+            */
+            void Close();
+
+        private:
+
+            // Reference to array of active command ids.
+            RArray< TInt >& iActiveCommands;
+
+            // Command id.
+            const TInt iCommandId;
+
+            };
+
+
+    private:
+        // Active command ids.
+        RArray< TInt > iActiveCommands;
+        // The last time swap image operation occured.
+        TTime iLastSwapTime;
+        // Incall bubble.
+        CAknIncallBubble* iIncallBubble;
+        //This flag is used to check if orientation changed before some action
+        //Currently is only used for prepare remote render and start remote render
+        TBool iIsLandScapeOrientation;
+        //flag indicates layoutchang session
+        TBool iLayoutChg;
+        //save cmd for later use 
+        TInt iDelayedCmd;
+    };
+
+#endif      // CVTUIAPPUI_H
+
+// End of File