camerauis/cameraapp/generic/inc/CamAppUi.h
changeset 0 1ddebce53859
child 1 f5ec9446e5bf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraapp/generic/inc/CamAppUi.h	Thu Jan 07 16:18:56 2010 +0200
@@ -0,0 +1,1811 @@
+/*
+* Copyright (c) 2007-2009 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:  App UI class for cameraapp
+*
+*/
+
+
+#ifndef CAMAPPUI_H
+#define CAMAPPUI_H
+
+// ===========================================================================
+//  INCLUDES
+#include "CamAppUiBase.h"
+#include "CamNewFileService.h"
+#include "CamSelfTimerObserver.h"  
+#include "CamVolumeKeyObserver.h"
+#include "mcamcameraobserver.h"
+#include "CamFileCheckAo.h"
+
+#include "MCamAddToAlbumObserver.h"
+
+class CFbsBitGc;
+class CAknNavigationDecorator;
+class CAknNavigationControlContainer;
+class CCamWaitDialog;
+class CCamTimerBase;
+class CCamNaviCounterControl;
+class CCamNaviCounterModel;
+class CCamNaviProgressBarControl;
+class CCamNaviProgressBarModel;
+class CCamSelfTimer;
+class MCamBurstModeObserver;
+class CDocumentHandler;
+class CTextResolver;
+class CCamSidePane;
+class CCamZoomPane;
+class MCamResourceLoader;
+class CCamTimer;
+class CIdle;
+class CAknStylusPopUpMenu; 
+
+class CGSPluginInterface;
+class CGSTabHelper;
+class CCamGSInterface;
+
+class CAknGlobalNote;
+
+//class CASpaAppLauncherActionData;
+//class CSFIUtilsAppInterface;    // InCall Send interface
+class CCamPropertyWatcher;
+class CRepository;
+class MActivePalette2UI;
+class CCamActivePaletteHandler;
+class CAknLocalScreenClearer;
+class CAknStaticNoteDialog;
+class CCamCollectionManagerAO;
+class CCamStillPreCaptureView;
+class CCamVideoPreCaptureView;
+class CCamMemoryMonitor;
+
+// ===========================================================================
+// CLASS DECLARATION
+
+/**
+*  AppUi class for Camera
+*
+*  @since 2.8
+*/
+class CCamAppUi : public CCamAppUiBase,
+                  public MCamSelfTimerObserver,
+                  public MCamControllerObserver,
+                  public MCamVolumeKeyObserver,
+                  public MCamFileCheckObserver,
+                  public MCamCameraObserver
+                  ,public MCamAddToAlbumObserver
+  {
+  // =======================================================
+  // Data Types
+  private: 
+        
+    // enumeration to describe the type of view switch required when 
+    // the capture mode or view state changes
+    enum TCamViewSwitch
+        {
+        ECamViewSwitchNone,    // no switch required
+        ECamViewSwitchModeOnly,// only capture mode or view state need updating
+        ECamViewSwitch         // full view switch required including state 
+                               // and mode update
+        };
+
+    /**
+     * Enumeration used for the state of delayed postacapture views
+     * construction. Only used if CAMERAAPP_DELAYED_POSTCAPTURE_CREATION is
+     * enabled.
+     */
+    enum TCamPostCapConstruction
+        {    
+        ECamConstructStillPostCap,
+        ECamConstructBurstPostCap,
+        ECamConstructVideoPostCap,
+        ECamPostCapsDone
+        };
+    
+    enum TSoftkeyIndex
+        {
+        ESoftkeyIndex1 = 0,
+        ESoftkeyIndex2 = 2
+        };
+      
+    enum TPendingViewSwitchType 
+        {
+        EPendingViewSwitchNone = 0,
+        EPendingViewSwitchNormal,
+        EPendingViewSwitchDeactivateFirst
+        };
+
+    /**
+     * Memory card status
+     */
+    enum TCamMemoryStatus
+        {
+        ECamMemoryStatusOK,
+        ECamMemoryStatusFull,
+        ECamMemoryStatusInternalFull,
+        ECamMemoryStatusCardNotInserted,
+        ECamMemoryStatusCardReadOnly,
+        ECamMemoryStatusCardLocked,
+        ECamMemoryStatusMassStorageFull
+        };
+
+  // =======================================================
+  // Methods 
+
+  // -------------------------------------------------------
+  // Constructors and destructor
+  public:  
+
+    /**
+    * C++ constructor.
+    * @since 2.8
+    * @param aController Reference to CCamAppController
+    * @return Pointer to CCamAppUi
+    */
+    CCamAppUi( CCamAppController& aController );
+
+    /**
+    * Perform the second phase construction of a CCamAppUi object.
+    * @since 2.8
+    */
+    void ConstructL();
+
+    /**
+    * Destructor.
+    */
+    virtual ~CCamAppUi();
+  
+  // -------------------------------------------------------
+  // From MCamCameraObserver
+  public:
+
+    /**
+    * Handle camera event.
+    *
+    * @param aStatus    Status code describing the event status.
+    * @param aEventId   Identifier for the event.
+    * @param aEventData Event associated data. If such data is provided with
+    *                   the event, it is mentioned in the documentation of
+    *                   particular event id.
+    *                   Ownership not transferred to observer.
+    */
+    void HandleCameraEventL(
+        TInt aStatus, 
+        TCamCameraEventId aEventId, 
+        TAny* aEventData = NULL );   
+
+  // -------------------------------------------------------
+  // From MCamFileCheckObserver
+  public:
+
+    /**
+    * Callback to notify that file checking operation has completed.
+    * @param aStatus Number of files that were missing
+    * @param aError  Error code
+    */
+    void FileCheckingCompleteL( TInt aStatus, TInt aError );   
+
+  // -------------------------------------------------------
+  // New functions
+  public: 
+      /**
+      * Returns whether or the toolbar has been activated/visible
+      * Will return ETrue when when the toolbar is active/visible
+      * @since 3.2
+      * @return ETrue if toolbar is active/visible, else returns EFalse
+      */
+      virtual TBool IsToolBarVisible() const;
+
+        /**
+        * Check if given view state indicates that "internal",
+        * CCamViewBase inherited view is in question.
+        */
+        TBool IsInternalView( TCamViewState aViewState ) const;
+
+        /**
+        * Set status of standby mode.
+        */
+        void SetStandbyStatus( TInt aStatus );
+
+        /**
+        * Get status of standby mode.
+        */
+        TInt StandbyStatus() const;
+
+        /*
+        * Check for file name deletion/renaming outside camera
+        */
+        void StartFileNameCheck();
+             
+        /**
+        * Determines whether or not all construction has been completed
+        * Used on view activation to determine if the view should
+        * open in standby mode. This will happen if the app is waiting for
+        * an orientation switch to complete or for the initial view to be set
+        * when launched in embedded
+        * @since 3.0
+        * @return ETrue if all construction has completed, else EFalse
+        */   
+        TBool IsConstructionComplete() const;
+
+        /**
+        * Set title pane text from a resource.
+        * @since 2.8
+        * @param aResourceId resource to read from
+        */
+        void SetTitleL( TInt aResourceId );
+
+        /**
+        * Set title pane text from a descriptor.
+        * @since 2.8
+        * @param aText title pane text
+        */
+        void SetTitleL( const TDesC& aText );
+
+        /**
+        * In embedded mode set title to name of embedding application
+        * @since 2.8
+        */
+        void SetTitleEmbeddedL();
+
+        /**
+        * Push navi pane indicators on to navi pane stack.
+        * @since 2.8
+        */
+        void PushNaviPaneCounterL();
+
+        /**
+        * Push navi pane progress bar on to navi pane stack.
+        * @since 2.8
+        */
+        void PushNaviPaneProgressBarL();
+
+        /**
+        * Push default navi pane on to navi pane stack.
+        * @since 2.8
+        */
+        void PushDefaultNaviPaneL();
+
+        /**
+        * Call DisplayDeleteNoteL on the current view
+        * @return whether the delete was performed
+        * @since 2.8
+        */
+        TBool DisplayDeleteNoteL();
+
+        /**
+        * Enable or disable self-timer functionality
+        * @since 2.8
+        * @param aEnable The selftimer functionality to use
+        */
+        void SelfTimerEnableL( TCamSelfTimerFunctions aEnable );
+
+        /**
+        * Returns current self-timer state
+        * @since 2.8
+        * @return Returns whether or not Self Timer is currently enabled.
+        */
+        TBool SelfTimerEnabled() const;
+
+        /**
+        * Returns pointer to self-timer
+        * @since 2.8
+        * @return pointer to CCamSelfTimer object.
+        */
+        CCamSelfTimer* SelfTimer();
+
+        /**
+        * Registers an observer for changes in burst mode activation
+        * @since 2.8
+        * @param aBurstModeObserver the object observing burst mode changes
+        */
+        void AddBurstModeObserverL( MCamBurstModeObserver* aBurstModeObserver );
+
+        /**
+        * Removes an observer for changes in burst mode activation
+        * @since 2.8
+        * @param aBurstModeObserver the observer to remove
+        */
+        void RemoveBurstModeObserver( const MCamBurstModeObserver* aBurstModeObserver );
+
+        /**
+        * Returns whether or not burst capture mode is enabled.
+        * Will return ETrue when burst mode is enabled for still capture
+        * even if the application is currently in video capture mode
+        * @since 2.8
+        * @return ETrue if burst mode is enabled, else returns EFalse
+        */
+        TBool IsBurstEnabled() const;
+
+        /*
+        * Gets the handle to the controller, which is used inturn by the
+        * plugin to call the interfaces for performing needed actions.
+        */
+        MCamAppController& AppController();
+        
+        /*
+        * Gets the handle to the settings model, which is used inturn by the
+        * plugin to call the interfaces for performing needed actions.
+        */
+        MCamStaticSettings& StaticSettingsModel();
+        
+        /**
+        * Returns the currently enabled burst mode.
+        * @since 3.0
+        * @return the currently enable burst mode or ECamImageCaptureNone if 
+        * burst is not enabled
+        */
+        TCamImageCaptureMode CurrentBurstMode() const;
+
+        /**
+        * Sets the current capture mode ( and target capture mode )
+        * @since 2.8
+        */
+        void SetCaptureMode(
+            TCamCameraMode aMode, 
+            TCamImageCaptureMode aImageMode = ECamImageCaptureNone );
+
+        /**
+        * Changes the state of sequence capture
+        * @since 3.0
+        * @param aImageMode Single/Multi/Timelapse
+        * @param aReprepare Whether or not the engine should be reprepared with sequence
+        * settings (Do not reprepare if the engine is about to be deleted/released)
+        * @param aUpdateUi  Whether or not to do Ui update related things. Those are not
+        * needed/allowed if this method is called just to return sequence mode setting
+        * to default value (single capture).
+        */ 
+        void SwitchStillCaptureModeL( TCamImageCaptureMode aImageMode, 
+                                      TBool                aReprepare, 
+                                      TBool                aUpdateUi = ETrue );
+
+
+        /**
+        * Returns whether or the secondary camera has been activated
+        * Will return ETrue when when the second camera is active
+        * @since 2.8
+        * @return ETrue if second camera is active, else returns EFalse
+        */
+        TBool IsSecondCameraEnabled() const;
+
+        /**
+        * Secondary camera orientation is constructed according to this flag.
+        * Flag can be forced to portrait/landscape or it can follow qwerty 
+        * state. Variation is handled via KCamCr2ndCamOrientation CenRep key.
+        * @param aLock, Lock orientation state flag. 
+        *               ETrue, ask state and lock it.
+        *               EFalse, ask current state.
+        * @return ETrue if secondary camera orientation must be landscape
+        */
+        TBool IsQwerty2ndCamera( TBool aLock = EFalse );  
+
+        /**
+        * 
+        * @return ETrue if wait dialog exist
+        */
+        TBool CCamAppUi::IsWaitDialog() const;
+
+        /**
+        * Returns the active camera
+        * @since 2.8
+        * @return either primary, secondary or none ( if in process of switching )
+        */
+        TCamActiveCamera ActiveCamera() const;
+
+        /**
+        * Called just prior to capture. Checks if there is sufficient memory
+        * available for capture and handles out of memory/error conditions. 
+        * @since 2.8
+        * @return ETrue if there is memory available for capture
+        */
+        TBool CheckMemoryL();
+
+        /**
+        * Display error note - with OK softkey only
+        * @since 2.8
+        * @param aStatus error status
+        */
+        void ShowErrorNoteL( TCamMemoryStatus aStatus );
+
+        /**
+        * Display error note for OOM condition - OK and Cancel softkeys
+        * @since 2.8
+        * @param aLabel text to be shown
+        * @param aWithCancel Enables cancel softkey; default=ETrue
+        * @return Response code returned from Out of memory dialog
+        */
+        TInt ShowOOMNoteL( TDesC& aLabel, TBool aWithCancel = ETrue);
+
+        /**
+        * Set the requested resolution for a new file
+        * @since 3.2
+        * @param aRequestedResolution the requested resolution from the new file request.
+        */
+        void SetRequestedNewFileResolution( const TSize& aRequestedResolution );
+
+        /**
+        * Get the requested resolution for a new file
+        * @since 3.2
+        * @return the requested resolution from the new file request.
+        *  Default is TSize(0,0) which interpreted as mms quality resolution
+        */
+        TSize RequestedNewFileResolution() const;
+
+        /**
+        * Shows the mmc removal note if it is required
+        * @since 2.8
+        */
+        void ShowMMCRemovalNoteIfRequiredL();
+
+        /**
+        * Check memory card for available space and card status
+        * @since 2.8
+        * @param aFull on return contains ETrue if card is full
+        * @param aStatus on return contains the card status
+        * @param aCurrentLocation current storage location
+        */
+        void CheckMemoryCard( TBool& aFull,
+                TCamMemoryStatus& aStatus, TCamMediaStorage aCurrentLocation );
+
+        /**
+        * Checks if aStorage location is full
+        * @since 2.8
+        * @param aStorage target storage location
+        * @param aCurrentLocation current storage location
+        * @return ETrue if aStorage location is full
+        */
+        TBool MemoryFull( TCamMediaStorage aStorage, TCamMediaStorage aCurrentLocation );
+
+        /**
+        * Starts the video/photo capture
+        * @since 2.8
+        * @param aKeyEvent Key used to start the capture
+        * @return whether the key was consumed by the function
+        */
+        TKeyResponse StartCaptureL( const TKeyEvent& aKeyEvent );
+
+        /**
+        * Stops the video capture
+        * @since 2.8
+        */
+        void EndCapture();
+        
+        /**
+        * Changes the orientation to aNewOrientation
+        * If aNewOrientation is EAppUiOrientationUnspecified, switches
+        * to the normal orientation (this may depend on the currently
+        * activated camera)
+        * @since 3.0
+        */
+        void SwitchOrientationIfRequiredL( TInt aNewOrientation );
+
+        /**
+        * Returns pointer to side-pane
+        * @since 2.8
+        * @return pointer to CCamSidePane object constructed by appUi
+        */
+        CCamSidePane* SidePane();
+
+        /**
+        * Returns pointer to zoom-pane
+        * @since 2.8
+        * @return pointer to CCamZoomPane object constructed by appUi
+        */
+        CCamZoomPane* ZoomPane();
+
+        /**
+        * Returns current camera orientation
+        * @since 3.0
+        * @return current camera orientation
+        */
+        TCamOrientation CamOrientation();
+
+        /**
+        * set current camera orientation as landscape
+        */
+        void SetCamOrientationToLandscape();
+	
+        /**
+        * Returns current viewstate
+        * @since 3.0
+        * @return current viewstate
+        */
+        TCamViewState CurrentViewState() const;
+        
+        /**
+        * Returns target view state
+        * @since 4.0
+        * @return target view state
+        */
+        TCamViewState TargetViewState();
+
+        /**
+        * Returns the target mode of current mode switch
+        * (Image/Video/Idle/Shutdown). The returned value
+        * should equal to current state, if no switch is
+        * in progress
+        */        
+        TCamCameraMode TargetMode() const;
+
+        /**
+        * Handles the shutter key press
+        * @param aPressed ETrue if the shutter is pressed, EFalse if released
+        * @since 2.8
+        */
+        void HandleShutterKeyL( TBool aPressed );    
+        
+        /**
+        * Set embedding flag 
+        * @param aEmbedding ETrue if we are embedding (ie Messaging, Realplayer), 
+        * EFalse if not
+        * @since 2.8
+        */
+        void SetEmbedding( TBool aEmbedding );
+        
+        /**
+        * Return embedding flag 
+        * @return ETrue if we are embedding (ie Messaging, Realplayer), 
+        * EFalse if not
+        * @since 2.8
+        */
+        TBool Embedding() const;
+        
+        /**
+        * Set SendAs flag 
+        * @param aSendAsInProgress ETrue if SendAs in progress, EFalse if not
+        * @since 2.8
+        */
+        void SetSendAsInProgressL( TBool aSendAsInProgress );
+
+        /**
+        * Get SendAs flag value 
+        * @return ETrue if SendAs in progress, EFalse if not
+        * @since 4.0
+        */        
+        virtual TBool SendAsInProgress() const;
+        
+        /**
+        * Offers a pointer to appui's TextResolver instance
+        * @return pointer to appui's TextResolver instance   
+        */
+        CTextResolver* TextResolver();
+            
+#ifndef __WINSCW__
+        /**
+        * Get pointer to SFI utility class 
+        * @since 3.0
+        * @return pointer to CSFIUtilsAppInterface
+        */
+        //CSFIUtilsAppInterface* SFIUtility() const;
+
+        /**
+        * Return whether we are currently in-call send
+        * @since 3.0
+        * @return TBool true if we are in in-call send mode
+        */
+        //TBool IsInCallSend() const;
+
+        /**
+        * Send media file using SFI utility
+        * @since 3.0
+        */
+        //void DoInCallSendL() const;
+#endif //WINSCW
+
+        /**
+        * Whether or not the application is in the background
+        * @since 2.8
+        * @param aIncludeNotifier If EFalse then the application is not
+        * classed as being in the background if the foreground application is
+        * a notifier, e.g. charging enabled.
+        * @return ETrue if the application is in the background
+        */   
+        TBool AppInBackground( TBool aIncludeNotifier ) const;
+        
+        /**
+        * Indicates whether or not the application is in a simulated exit situation
+        * @return ETrue if the application has pretended to exit, else EFalse 
+        */
+        TBool IsInPretendExit() const;
+
+        /**
+        * Returns whether an MMC removed note is pending
+        * @since 3.0
+        * @return TBool ETrue if the UI needs to show an MMC 
+        */
+        TBool IsMMCRemovedNotePending() const;                  
+
+        /**
+        * Returns the pointer to the NaviCounter pane
+        * @since 3.0
+        * @return The Navi Counter pointer
+        */
+        CCamNaviCounterControl* NaviCounterControl();
+        
+        /**
+        * Returns the pointer to the NaviProgress pane
+        * @since 3.0
+        * @return The Navi Progress pointer
+        */
+        CCamNaviProgressBarControl* NaviProgressBarControl();
+
+        /**
+        * Returns the pointer to the Navi Counter ModelProgress pane
+        * @since 3.0
+        * @return The Navi Counter Model pointer
+        */
+        CCamNaviCounterModel* NaviCounterModel();
+
+        /**
+        * Return handle to active palette if supported
+        * @since 3.0
+        * @return Handle to Active palette
+        */             
+        MActivePalette2UI* ActivePalette() const;
+        
+        /**
+        * Get pointer to Active Palette handler instance.
+        *
+        * @return Pointer to Active Palette handler instance. Ownership not
+        *         transferred.
+        */
+        CCamActivePaletteHandler* APHandler() const;
+
+        /**
+        * Tries to show or hide the Active Toolbar
+        * @since 3.0
+        * @param aShown True to show it, False to hide it
+        */
+        void SetActivePaletteVisibility( TBool aShown );
+
+        /**
+        * Returns whether the user has set the icons to always display in pre-capture
+        * @since 3.0
+        * @return ETrue if the optional icons should always be displayed
+        */
+        TBool AlwaysDrawPreCaptureCourtesyUI() const;
+
+        /**
+        * Returns whether the user has set the icons to always display in post-capture
+        * @since 3.0
+        * @return ETrue if the optional icons should always be displayed
+        */
+        TBool AlwaysDrawPostCaptureCourtesyUI() const;
+
+        /**
+        * Set whether the icons should always display in pre-capture
+        * @since 3.0
+        * @param aNewSetting True if they should always be drawn; False if they should only be drawn when the UI is raised
+        */
+        void  SetAlwaysDrawPreCaptureCourtesyUI( TBool aNewSetting );
+
+        /**
+        * Set whether the icons should always display in post-capture
+        * @since 3.0
+        * @param aNewSetting True if they should always be drawn; False if they should only be drawn when the UI is raised
+        */
+        void SetAlwaysDrawPostCaptureCourtesyUI( TBool aNewSetting );
+
+        /**
+        * Check whether a key event should cause the courtesy UI to be raised
+        * @since 3.0
+        * @param aKeyEvent The key event
+        * @param aType The type of key event
+        * @param aInPreCapture Whether the key was pressed in precapture mode
+        * @return Whether the key was consumed or not
+        */
+        TKeyResponse CheckCourtesyKeyEventL( const TKeyEvent aKeyEvent, TEventCode aType, TBool aInPreCapture );
+
+        /**
+        * Whether to draw the complete UI in precapture mode
+        * @since 3.0
+        * @return True if it should all be drawn
+        */
+        TBool DrawPreCaptureCourtesyUI() const;
+
+        /**
+        * Whether to draw the complete UI in postcapture mode
+        * @since 3.0
+        * @return True if it should all be drawn
+        */
+        TBool DrawPostCaptureCourtesyUI() const;
+
+        /**
+        * Bring the complete UI to the fore in precapture
+        * @param aShowZoomBar Briefly shows the zoombar first, if necessary
+        * @since 3.0
+        */
+        void RaisePreCaptureCourtesyUI(TBool aShowZoomBar);
+
+        /**
+        * Bring the complete UI to the fore in postcapture
+        * @since 3.0
+        */
+        void RaisePostCaptureCourtesyUI();
+
+        /**
+        * Hide the optional UI in precapture
+        * @since 3.0
+        */
+        void SubmergePreCaptureCourtesyUI();
+
+        /**
+        * Hide the optional UI in postcapture
+        * @since 3.0
+        */
+        void SubmergePostCaptureCourtesyUI();
+
+        /**
+        * Ensures the zoom pane gets shown and updated, specifically in direct viewfinder/active toolbar modes. Calling this method
+        * is not sufficient to show the zoom pane however, other methods in CZoomPane must be called to achieve this.
+        * @param aRedraw Whether to force a redraw event
+        * @since 3.0
+        */
+        void ShowZoomPane( TBool aRedraw );
+        
+        /**
+        * Ensures the zoom pane gets hidden, specifically in direct viewfinder/active toolbar modes. As above, not sufficient to 
+        * hide the zoom pane.
+        * @param aRedraw Whether to force a redraw event
+        * @since 3.0
+        */
+        void HideZoomPane( TBool aRedraw );
+
+        /**
+        * Refreshes the CBA based on current view and app state
+        * @since 2.8
+        */       
+        void UpdateCba();
+
+        /**
+        * Sets the softkeys to the specified Resource ID
+        * @since 3.0
+        * @param aResource ID of the softkey resource to use
+        */
+        void SetSoftKeysL( TInt aResource );
+        
+        /**
+        * Returns whether the time lapse slider is shown
+        * @since 3.0
+        * @return ETrue if time lapse slider is shown
+        */
+        TBool TimeLapseSliderShown() const;
+
+        /**
+        * Detects whether the direct viewfinder is in use or not
+        * @since 3.0
+        * @return True if it is active, otherwise false
+        */
+        TBool IsDirectViewfinderActive();
+
+        /**
+        * Let the AppUi know what is being shown in pre-capture
+        * @param aMode What's being shown
+        */
+        void SetPreCaptureModeL(TCamPreCaptureMode aMode);  
+
+        /**
+         * Let the AppUi know what is being shown in pre-capture
+         * @param aMode What's being shown
+         */
+        void SetPreCaptureMode(TCamPreCaptureMode aMode);
+        
+        /**
+        * Whether or not the telephone application is in the foreground
+        * @since 3.0
+        * @return ETrue if the telephone application is in the foreground
+        */    
+        TBool ForegroundAppIsPhoneApp() const;
+
+        /**
+        * Whether to show the post capture view in current mode
+        * @return ETrue iff we should show the post capture view in current mode
+        */    
+        TBool ShowPostCaptureView() const;
+
+        /**
+         * Whether the automatic UI-rise should be suppressed on next viewfinder start event
+         * e.g. when postcapture is set to off, the UI is off and a photo is taken
+         * @return Whether the automatic UI-rise should be suppressed
+         */
+        TBool SuppressUIRiseOnViewfinderStart() const;
+
+        /**
+         * Set whether the automatic UI-rise should be suppressed on next viewfinder start event
+         * @see SuppressUIRiseOnViewfinderStart
+         * @param aSuppress Whether the automatic UI-rise should be suppressed
+         */
+        void SetSuppressUIRiseOnViewfinderStart(TBool aSuppress);
+        
+        /**
+        * Whether the current capture was selftimer initiated
+        * @return ETrue if the current capture was started via selftimer
+        */
+        TBool IsSelfTimedCapture() const;
+
+
+        /**
+         * Set the 'freeing memory' flag.
+         *
+         * @param aFreeingMemory New value for the 'freeing memory' flag.
+         */
+        void SetFreeingMemory( TBool aFreeingMemory );
+        
+        /**
+         * Get the current state of the 'freeing memory' flag.
+         *
+         * @return Current value for the 'freeing memory' flag.
+         */
+        TBool IsFreeingMemory() const;
+
+        
+        /**
+        * Checks whether its safe to draw controls
+        * @return ETrue if its safe to draw the controls 
+        */
+        TBool ReadyToDraw() const;
+        
+        /**
+        * Set toolbar visibility in according to whether current view and mode are fit.
+        */
+        void SetToolbarVisibility();
+
+        /**
+        * Hide the toolbar.
+        */
+        void SubmergeToolbar(); 
+ 
+    public: // Functions from base classes
+        /**
+        * Draw the counter to the bitmap used in the navi pane
+        * @since 3.0
+        * @param aBmpGc The graphics context for the bitmap
+        * @param aBmpMaskGc The graphics context for the bitmap mask
+        */
+        void CreateNaviBitmapsL( TBool aDrawStorageIconAndCounter );
+	    
+        /**
+        * From CAknAppUi Handle user menu selections
+        * @since 2.8
+        * @param aCommand The enumerated code for the option selected
+        */
+        void HandleCommandL( TInt aCommand );
+
+        /**
+        * From MCamControllerObserver
+        * @since 2.8
+        * @param aEvent The enumerated code for the event received
+        * @param aError The error code associated with the event
+        */
+        void HandleControllerEventL( TCamControllerEvent aEvent,
+                                            TInt aError );
+
+        /**
+        * Return whether we are in embedded mode (if we have a pointer to a
+        * MApaEmbeddedDocObserver).
+        * @since 2.8
+        * @return TBool if tthere is a handle to MApaEmbeddedDocObserver
+        */
+        TBool IsEmbedded() const;
+
+        /**
+        * Handle window server event.
+        * @since 2.8
+        * @param aEvent the window server event
+        * @param aDestination the control associated with the event. 
+        * Only valid for pointer events.
+        */
+        void HandleWsEventL( const TWsEvent& aEvent,
+                             CCoeControl* aDestination );
+                             
+                             
+        /**
+        * Start application as file server application
+        * @since 3.0
+        * @param aEmbeddedObserver service observer
+        * @param aMode Service type (image or video)
+        */
+        void StartAsServerAppL( MCamEmbeddedObserver *aEmbeddedObserver, 
+        	               TInt aMode );
+
+        /**
+        * Closes the application
+        * @since 2.8
+        */
+        void CloseAppL(); 
+        
+        /**
+        * Closes the application
+        * @since 2.8
+        * Exits the application according to current state, if the app always
+        * running flag is set, the application goes to the background but if 
+        * embedded, or app always running flag is not set or in an error situation 
+        * the application truly exits
+        */
+        void InternalExitL();
+
+        /**
+        * Inform the controller of the count of images required at the next
+        * capture. Called before every still capture request.
+        * @since 2.8
+        */
+        void InitCaptureCountL();
+
+        /**
+		* From MCamVolumeKeyObserver - pick up volume key events
+		* @since 3.1
+		* @param aOperationId - operation id (i.e. volume key up/down)
+		* @param aButtonAct bitton action press/click/release
+		*/
+		void HandleVolumeKeyEvent( TRemConCoreApiOperationId aOperationId,
+                            	   TRemConCoreApiButtonAction aButtonAct);
+                          			
+        /**
+        * Handle an event from CCamSelfTimer.   
+        * @since S60 v5.0
+        * @param aEvent the self timer event
+        * @param aCountDown self timer countdown duration
+        */
+        void HandleSelfTimerEvent( TCamSelfTimerEvent aEvent, 
+                                   TInt aCountDown );
+
+  
+    public: // new fuctions
+
+        /**
+        * We handle the case when settings plugin exists
+        **/
+        void SettingsPluginExitedL( TCamSettingsPluginExitMessage aType ); 
+
+        /**
+        * We keep track of lauching settings plugin within camera
+        * to control the behaviour of the camera when the plugin exists and
+        * returns to camera
+        **/
+        TBool SettingsLaunchedFromCamera() const;
+        
+        /**
+        * Checks if the memory type is full or unavailable
+        * @param aStorage TCamMediaStorage enum specifying the memory type; 
+        *	default=ECamMediaStorageCurrent
+        * @return ETrue if the specified memory is full or unavailable
+        **/
+        TBool 
+        IsMemoryFullOrUnavailable(const TCamMediaStorage 
+        						  aStorage = ECamMediaStorageCurrent) const;
+        
+        /**
+        * Checks if all memories are full and unavailable
+        * @return ETrue if all memories are full or unavailable
+        **/
+        TBool AllMemoriesFullOrUnavailable() const;
+
+            
+    private: // New functions
+
+      /**
+      * Helper method to handle controller event for
+      * going to standby mode.
+      */
+      void HandleStandbyEventL( TInt aStatus );
+            
+      /**
+      * Notify our views of application level events, like focus gained/lost.
+      */
+      void NotifyViews( const TCamAppEvent& aEvent );
+
+
+        /**
+        * Construct views
+        * Construct pre capture views        
+        * @since 2.8
+        */
+        void ConstructPreCaptureViewsL();
+
+        /**
+        * Construct post capture views
+        * @since 2.8
+        */
+        void ConstructPostCaptureViewsL();
+
+        /**
+        * Construct settings, user scene setup, and postcapture views 
+        * @since 2.8
+        */
+        void ConstructViewIfRequiredL();
+
+        /**
+        * Construct navi pane
+        * @since 2.8
+        */
+        void ConstructNaviPaneL();
+
+        /**
+        * Switch to pre-capture view
+        * @since 2.8
+        * @return TInt to indicate if function should be called again
+        */
+        TInt DoPostCaptureTimeoutL();
+
+        /**
+        * Try to switch active view.
+        * @since 2.8
+        */
+        void TrySwitchViewL( TBool aDeactivateFirst = EFalse );
+
+        /**
+        * Determines if a switch of the active view required.
+        * @param aDeactivateFirst Deactivate before check
+        * @since 2.8
+        */
+        TCamViewSwitch ViewSwitchRequired( TBool aDeactivateFirst = EFalse ) const;
+
+        /**
+        * Get uid of view with requested view and mode.
+        * @since 2.8
+        * @param aState      View state
+        * @param aMode       Main camera mode (image/video)
+        * @param aImageMode  In image mode, image capture type (single/burst/timelapse)
+        * @param aUid        Uid of view passed by reference and populated in function
+        * @param aMessageUid A message Uid to pass to the view
+        * @return            Whether or not a valid view uid can be obtained
+        */
+        TBool ViewId( TCamViewState        aState, 
+                             TCamCameraMode       aMode, 
+                             TCamImageCaptureMode aImageMode, 
+                             TUid&                aUid, 
+                             TUid&                aMessageUid,
+                             TBool                aDeactivateFirst );
+
+        /**
+        * Return a pointer to the navi pane.
+        * @since 2.8
+        * @return pointer to the status pane's navigation control container
+        */
+        CAknNavigationControlContainer* NaviPaneL();
+
+        /**
+        * Display the wait dialog when saving video
+        * @since 2.8
+        */
+        void DisplayWaitDialogL();
+
+        /**
+        * Get the default startup mode from settings
+        * If this is not defined the factory default will be used
+        * @since 2.8
+        * @return The default startup capture mode
+        */
+        TCamStartupMode StartupMode() const;
+    
+        /**
+        * Save the current capture mode to settings.
+        * This will be used as the startup mode
+        * @since 2.8
+        */
+        void SaveCaptureMode();
+        
+        /**
+        * Save the current state of the UI to settings.
+        * 
+        */
+        
+        void SaveCourtesyUiState();
+
+        /**
+        * Override HandleScreenDeviceChangedL() and trigger a re-layout
+		* of the main controls from this - addition for 2.8
+        * @since 2.8
+        */
+        void HandleScreenDeviceChangedL();
+
+        /**
+        * Called when the video is ready to be stopped
+        * @since 2.8
+        * @param aPtr pointer to the object that called the timer
+        * @return Error code
+        */
+        static TInt StopVideoRecording( TAny* aPtr );
+
+        /**
+        * Called when the application is ready to exit
+        * @since 2.8
+        * @param aAny pointer to the object that called the timer
+        * @return Error code
+        */
+        static TInt CallExit( TAny* aAny );
+
+        /**
+        * Callback used when the application needs to switch view
+        * @since 2.8
+        * @param aAny pointer to the object that called the timer
+        * @return Error code
+        */
+        static TInt CallSwitch( TAny* aAny );
+
+        /**
+        * Launch the context sensitive help application
+        * @since 2.8
+        */  
+        void LaunchHelpL();
+
+        /**
+        * Returns the AppUi orientation (e.g. Portrait or Landscape) for the given product-specific orientation
+        * @since 3.0
+        * @param aCamOrientation The product-specific orientation
+        * @return The AppUi orientation (e.g. Portrait or Landscape)
+        */
+        TAppUiOrientation AppUiOrientation( TCamOrientation aCamOrientation );
+
+        /**
+        * Returns the camera orientation based on the layout state set by the phone
+        * @since 3.0
+        * @param aLayoutState The layout state set by the phone
+        * @return The camera orientation
+        */
+        TCamOrientation LayoutStateToOrientation( TInt aLayoutState );
+
+        /**
+        * Returns the camera orientation based on the layout state set by the phone
+        * @since 3.0
+        * @return The camera orientation based on the layout state set by the phone
+        */
+        TCamOrientation ReadCurrentDeviceOrientation();
+
+        /**
+         * Returns whether or not the full screen viewfinder is being shown
+         * @return Whether or not the full screen viewfinder is being shown 
+         */
+        TBool FullScreenViewfinderEnabled() const;
+        
+        /**
+        * Construct a postcapture view if not already constructed
+        *
+        * The following parameter combinations can be used:
+        * Still postcapture view: sViewState = ECamViewStatePostCapture, aMode = ECamControllerImage
+        * Burst thumbnail view:   aViewState = ECamViewStateBurstThumbnail
+        * Video Postcapture view: aViewState = ECamViewStatePostCapture, aMode = ECamControllerVideo
+        *
+        * @param aViewState
+        * @param aCaptureMode
+        * @since 2.8
+        */
+        void ConstructPostCaptureViewIfRequiredL( TCamViewState aViewState,
+                                                  TCamCameraMode aMode );
+        
+        /*
+        * Initiate the check operation using collection manager
+        */
+        /**
+         * We start check operation to see if "Default Album exists"
+         * Usecase: Whenever the camera returns from background/startup we
+         * first start checking the default album which is set, if any, to make
+         * sure that album really exists. If not, then we set back the value
+         * of setting item "Add to album" to "No" in Image/Video setting
+         * image settings
+         */
+        void StartCheckingDefaultAlbumIdL();
+
+                                                  
+#ifdef CAMERAAPP_DELAYED_POSTCAPTURE_CREATION                                                  
+                                                
+        /**
+        * Starts calls to PostCapIdleCallBack during processor idle time. The calls
+        * are continued until PostCapIdleCallBack is done.
+        * @since 3.1
+        */
+        void StartPostCapIdleL();
+        
+        /**
+        * Handles postcapture view construction so that each call to this function
+        * constructs one postcapture view. Returns ETrue if there are still more views
+        * to construct, EFalse if all are finished and no further calls are required.
+        *
+        * @param aSelf pointer to current CCamAppUi object
+        * @return construction status
+        * @since 3.1
+        */
+        static TInt PostCapIdleCallBack( TAny* aSelf );        
+
+#endif // CAMERAAPP_DELAYED_POSTCAPTURE_CREATION        
+
+        
+        /**
+        * Initiates a call to SensorIdleCallback during processor idle time
+        * @since 3.1
+        */        
+        void StartSensorIdleL();
+        
+        /**
+        * Cancels the (possibly) pending call to SensorIdleCallBack
+        * @since 3.1
+        */        
+        void CancelSensorIdle();                
+                                
+        /**
+        * Initializes the sensor API by calling iController.UpdateSensorApiL()
+        *        
+        * @param aSelf pointer to current CCamAppUi object
+        * @return construction status
+        * @since 3.1
+        */
+        static TInt SensorIdleCallBack( TAny* aSelf );        
+        
+
+    private: // Functions from base classes
+
+#ifndef __WINSCW__
+        /**
+        * From CEikAppUi.
+        * Processes shell commands.
+        * @since 3.0
+        * @param aCommand The command line command
+        * @param aDocumentName The name of the document to open
+        * @param aTail Not used.
+        * @return TBool
+        */
+        TBool ProcessCommandParametersL( TApaCommand aCommand,
+                                         TFileName& aDocumentName,
+                                         const TDesC8& aTail );
+        /**
+        * From CEikAppUi.
+        * Handle the external message.
+        * @since 3.0
+        * @param aClientHandleOfTargetWindowGroup Handle.
+        * @param aMessageUid Message id.
+        * @param aMessageParameters Message parameters.
+        * @return Response to the message.
+        */
+        MCoeMessageObserver::TMessageResponse HandleMessageL(
+            TUint32 aClientHandleOfTargetWindowGroup,
+            TUid aMessageUid,
+            const TDesC8& aMessageParameters );
+            
+#endif //WINSCW            
+            
+    private: // new functions
+
+#ifndef __WINSCW__        
+        /**
+        * Bring the Phone application back to foreground after in-call send completion
+        * @since 3.0
+        */
+        void BringPhoneAppToForeGroundL();
+#endif //WINSCW
+
+        /**
+        * Sends the camera application to the background, to pretend we're closing
+        * @since 2.8
+        */
+        void SendCameraAppToBackgroundL();
+
+        /**
+        * Hides the application from task list, to pretend that camera app is closed
+        * @since 3.0 (added back since its useful in certain situation)
+        * @param aHide whether to hide or make visible
+        */
+        void HideTaskL(TBool aHide);
+
+    public:
+        /**
+        * Display error note
+        * @since 2.8
+        * @param aError The error code
+        */ 
+        void HandleCameraErrorL( TInt aError );
+        
+        
+        /**
+        * Set iAssumePostCaptureView flag
+        * @param aValue ETrue sets flag on, EFalse off
+        */ 
+        void SetAssumePostCaptureView( TBool aValue );
+        
+        /**
+         * Set iLensCoverExit flag
+         * @param aValue ETrue sets flag on, EFalse off
+         */
+        void SetLensCoverExit( TBool aValue );
+		
+		/** 
+        * Set iDrawPreCaptureCourtesyUI flag 
+        * @param aValue ETrue sets flag on, EFalse off 
+        */        
+        void SetDrawPreCaptureCourtesyUI(TBool iDraw); 
+		
+         /**
+        * Finishes the AppUI construction by calling 
+        * CompleteAppUIConstructionL
+        */ 
+        static TInt AppUIConstructCallbackL( TAny* aAny );
+        
+        /**
+        * returns ETrue if appUi construction is complete
+        */ 
+        TBool IsUiConstructionComplete();
+        
+        /**
+		* set whether camera viewfinder stop or not
+		* @param aViewFinderStopped ETrue viewfinder is stoped,EFalse viewfinder is runing
+		* 
+		*/ 
+		void SetViewFinderStoppedStatus(TBool aViewFinderStopped);
+		
+        /**
+        * Getter for iViewFinderInTransit 
+        * @return ETrue if viewfinder handle is in transit between different windows
+        */ 
+		TBool IsViewFinderInTransit();
+		
+		/**
+        * Setter for iViewFinderInTransit
+        * @param aInTransit Set to ETrue if viewfinder window handle is in transit 
+        * @return void
+        */
+		void SetViewFinderInTransit(TBool aInTransit);
+		
+     public: //MCamAddToAlbumObserver
+
+
+        /*
+        * From MCamAddToAlbumObserver
+        * Notification once the aysnchronous operations using
+        * CollectionManager interface are done completly
+        * Status of the operation are returned using aStatus
+        * e.g. KErrNone
+        */
+        void AddToAlbumIdOperationComplete() {};
+        
+        /**
+        * From MCamAddToAlbumObserver
+        * Notification once the asynchronous operations using
+        * CollectionManager interface have completed.
+        *
+        * @param aAlbumExists ETrue if album exists
+        * @param aAlbumTitle  Title of the album
+        */
+        void CheckAlbumIdOperationCompleteL(
+                TBool aAlbumExists, const TDesC& aAlbumTitle );
+
+
+    private:
+
+        /**
+        * Called when the courtesy timer ends
+        * @since 3.0
+        * @param aPtr The CCamAppUI object the timer has completed on
+        */ 
+        static TInt CourtesyTimeout( TAny* aPtr );
+
+        /**
+        * Called when the courtesy timer ends
+        * @since 3.0
+        */ 
+        TInt DoCourtesyTimeout();
+
+        /**
+        * Called to set the correct navicounter / naviprogress controls to "active"
+        * @since 3.0
+        */ 
+        void UpdateNaviModelsL( TBool aUpdateNavi = ETrue );
+                
+
+        /**
+        /**
+        * Dismisses out of memory / memory card removed note, if active.
+        */
+        void DismissMemoryNoteL();  
+        
+		/**
+		* Register to capture half and full shutter press key events
+		* @since 3.0
+		*/
+		void RegisterCaptureKeysL();
+		
+		/**
+		* Release capture of half and full shutter press key events
+		* @since 3.0
+		*/
+		void UnRegisterCaptureKeys();  
+
+    /**
+    * Select the setting for viewfinder grid.
+    */
+    void SelectViewFinderGridSettingL();
+
+    /**
+    * Starts the Photos application command line
+    **/
+    void StartAppCmdLineL( const TDes8& aData );
+
+    /**
+    * Check if it's applicable to use the courtesy UI
+    * @since S60 v5.0
+    * @return ETrue if courtesy UI can be used
+    */
+    TBool CourtesyUiApplies() const;
+    
+    /**
+    * Finish the AppUI construction
+    **/
+    void CompleteAppUIConstructionL();
+    
+  // =======================================================
+  // Data
+  private:    
+    
+        CCamAppController& iController;
+
+        TCamSelfTimerFunctions iInSelfTimerMode;
+        
+        // Own
+        CCamSelfTimer* iSelfTimer;
+
+        // Not own.
+        CCamNaviCounterControl* iNaviPaneCounterControl;
+
+        // Not own.
+        CCamNaviProgressBarControl* iNaviPaneProgressBarControl;
+
+        // Own.
+        CAknNavigationDecorator* iDecoratedNaviPaneCounter;
+
+        // Own.
+        CAknNavigationDecorator* iDecoratedNaviPaneProgressBar;
+
+
+        // NOT owned; this pointer is just for checking 
+        // if the wait dialog object still exists, or
+        // whether it has deleted itself
+        CCamWaitDialog* iWaitDialog;
+
+        // Not own.
+        CCamStillPreCaptureView* iStillCaptureView;
+
+        // Not own.
+        CCamVideoPreCaptureView* iVideoCaptureView;
+
+        // Not own.
+        CAknView*   iViaPlayerView;
+
+        TCamViewState iViewState;
+        TCamViewState iTargetViewState;
+        TCamCameraMode iMode;
+        TCamCameraMode iTargetMode;
+
+        TCamImageCaptureMode iImageMode;
+        TCamImageCaptureMode iTargetImageMode;
+        TInt                  iStandbyStatus;
+
+        TBool iKeyShutter;
+
+        // Used to determine whether or not the startup view has been
+        // set when app is launched embedded  
+        TBool iEmbeddedViewSet;
+
+        // Name of parent app if we're embedded
+        // Own.
+        HBufC*  iParentAppName;
+
+        // Whether or not the cba has been blanked
+        TBool iCbaIsDisabled;
+
+        // Whether or not the burst mode has been activated
+        TBool iBurstModeEnabled;
+
+        // Observer that needs to know when burst mode is switched on/off
+        // Observer objects are not owned.
+        RPointerArray<MCamBurstModeObserver> iBurstModeObservers;
+
+        // handle of the camera key captured
+        TInt iCameraKeyHandle;
+
+        // timer to assist with displaying wait dialog
+        // Own.
+        CPeriodic* iWaitTimer;
+
+        // Whether or not the wait timer should be used
+        TBool iApplyTimer;
+
+        // Used for opening (and playing) video clips
+        // Own.
+        CDocumentHandler* iDocHandler;
+
+        // the id of the application's window group
+        TInt iMyWgId;
+
+        // the id of the eikon server window group
+        TInt iEikonServerWindowGroupId;
+
+        // Whether or not a view switch is pending, used to delay switch to
+        // post capture view when the application is in the background
+        TPendingViewSwitchType iPendingViewSwitch;
+
+        // Keeps track of the state before focus gained events
+        TBool iReturnFromBackground;
+
+        // Side-pane handler
+        // Own.
+        CCamSidePane* iCamSidePane;
+        
+        // Zoom-pane handler
+        // Own.
+        CCamZoomPane* iCamZoomPane;
+
+        // Used to access settings
+        // Own.
+        CRepository* iRepository;        
+
+        // Flag to indicate when video recording has stopped due to incoming call
+        // Post capture timer is not started when this flag is set, delays the
+        // timeout of the video post capture view
+        TBool iDelayVideoPostCaptureTimeout;
+                
+        // Indicates if the mmc was detected as removed at startup, requiring
+        // the user to be informed
+        TBool iMMCRemoveNoteRequired;
+        
+        // Indicates if the mmc was detected as removed whilst we were in focus,
+        // requiring us to inform the user when capture is attempted.
+        TBool iMMCRemoveNoteRequiredOnCapture;     
+
+        // Only the precapture views are created on construction
+        // These flags indicate whether or not the other views have been created
+        TBool iPostCaptureViewsConstructed;
+        TBool iUserSceneSetupViewConstructed;
+        TBool iCustomiseToolbarViewConstructed;
+
+        // Used to resolve error message texts
+        // Own.
+        CTextResolver* iTextResolver;    
+
+//#ifndef __WINS__
+        // in-call send utility class
+        // Own.
+        //CSFIUtilsAppInterface* iSFIUtils;
+
+        // Whether in in-call send mode
+        //TBool iSendFileInCall;
+//#endif              
+
+        // embedded observer
+        // Not own.
+        MCamEmbeddedObserver* iEmbeddedObserver;
+
+        // embedded start up capture mode
+        TInt iApplicationMode;
+
+        // Pointer to the only navicounter model
+        // Own.
+        CCamNaviCounterModel* iNaviCounterModel;
+
+        //Pointer to the only naviprogressbar model
+        // Own.
+        CCamNaviProgressBarModel* iNaviProgressBarModel;
+
+        // Pointer to the NaviCounter control
+        // Own.
+        CCamNaviCounterControl* iNaviCounterControl;
+
+        // Pointer to the NaviProgress control
+        // Own.
+        CCamNaviProgressBarControl* iNaviProgressBarControl;
+
+        TCamOrientation iCamOrientation;
+
+        // Keeps a list of MCamResourceLoaders that this class owns
+        RPointerArray<MCamResourceLoader> iResourceLoaders;
+
+        // Own.
+        CCamActivePaletteHandler* iActivePaletteHandler;
+
+        // Maximum no if images in burst capture
+        TInt iMaxBurstCaptureNum;
+
+        // Whether the Coutesy UI should currently be displayed (precapture)
+        TBool iDrawPreCaptureCourtesyUI;
+        // Whether the user has set the UI to always be on (precapture)
+        TBool iAlwaysDrawPreCaptureCourtesyUI;
+
+        // Whether the Coutesy UI should currently be displayed (postcapture)
+        TBool iDrawPostCaptureCourtesyUI;
+        // Whether the user has set the UI to always be on (postcapture)
+        TBool iAlwaysDrawPostCaptureCourtesyUI;
+
+        // The courtesy timer: when this ends, the UI should be hidden if applicable
+        // Own.
+        CCamTimer* iCourtesyTimer;
+
+        // Whether the timer was started in precapture mode or not
+        TBool iCourtesyTimerInPreCapture;
+
+        // True if the zoom pane is currently being shown, False if not
+        TBool iZoomPaneShown;
+
+        // True when application is started  
+        TBool iFirstBoot;
+        
+        // Flag to show if a screen redraw event is being processed
+        TBool iProcessingScreenRedraw;
+        
+        // Whether the active palette should be prevented from being shown:
+        // used during saving of an image/video
+        TBool iPreventActivePaletteDisplay;
+        
+        // Used to delay engine creation on app startup or camera switch
+        // if the orientation has not completed initialising.
+        TBool iEngineConstructionDelayed;
+        TBool iCameraSwitchDelayed;  
+
+        // Set to true in the case where we pretend to exit the app, but are still really
+        // running in the background. The app should behave slightly differently when we 
+        // are next brought to the foreground.
+        TBool iPretendExit;
+
+        // flag to indicate whether we are currently embedding another application
+        TBool iEmbedding;
+
+        // flag to indicate if "Send As" is in progress
+        TBool iSendAsInProgress;
+
+        // 
+        TInt iFullShutterPressHandle;
+        TInt iHalfShutterPressHandle;
+        TInt iFullShutterUpDownHandle;
+
+        // Window group ID for Bluetooth server
+        TInt iBTServerWindowGroupId;
+        
+        // Window group ID for Telephone application
+        TInt iPhoneAppWindowGroupId;
+        
+        // position of softkeys in landscape mode (left or right)
+        TInt iSoftkeyPosition;
+        
+        /// The current pre capture mode shown
+        TCamPreCaptureMode iPreCaptureMode;
+
+        // flag to indicate viewfinder stopped
+        TBool iViewFinderStopped;  
+
+        // flag used to say whether we want to suppress auto-UI rise on next viewfinder start event
+        TBool iSuppressUIRise;
+
+        // Flag used to indicate that focus was lost to an incoming call during sequence capture
+        TBool iFocusLostToCallDuringSequenceCapture;
+
+        // observer to receive volume key presses
+        // Own.
+        CCamRemConObserver* iVolumeKeyObserver;
+
+        TBool iZoomUsingVolumeKeys;
+
+        // Own
+        CAknLocalScreenClearer* iScreenClearer;
+
+        // Status of postcapture views construction
+        TBool iStillPostCaptureViewConstructed;
+        TBool iBurstThumbnailViewConstructed;
+        TBool iVideoPostCaptureViewConstructed;
+
+#ifdef CAMERAAPP_DELAYED_POSTCAPTURE_CREATION        
+        // CIdle object used for late construction of the postcapture views
+        // Own.
+        CIdle* iPostCapIdle;
+
+        // Status of the views creation
+        TCamPostCapConstruction iPostCapProgress;
+#endif // CAMERAAPP_DELAYED_POSTCAPTURE_CREATION
+
+        // Own.
+        CIdle* iSensorIdle;       
+        TBool iSensorIdleRunning;
+
+        // Own.
+        HBufC* iLowRamNoteText;
+
+        // Used to allow postcapture view to show for selftimed captures
+        TBool iSelfTimedCapture;
+
+        TBool iDSASupported;
+
+        TInt iNoteId;
+
+        // View UID if the ViaPlayerApplication view
+        TUid iViaPlayerUid;
+        // LeftSoftKey is Pressed
+        TBool iLeftSoftKeyPressed;
+        TBool iEndKeyPressed;
+
+        TBool iCheckOperationInProgress;
+        CCamCollectionManagerAO* iCollectionManager;
+
+        // Own.
+        CCamGSInterface* iPlugin;
+
+        TBool iSettingsPluginLaunched;
+
+        TBool iReturnedFromPlugin;
+
+        // Own
+        CCamFileCheckAo *iFileCheckAo;
+
+        // Own
+        CAknStylusPopUpMenu* iTouchPopupMenu;
+
+        // Own
+        CAknStaticNoteDialog* iMemoryNote;
+
+        TSize iRequestedNewFileResolution;
+
+        TBool iLostFocusToNewWindow;
+        TBool        iToolbarVisibility;
+        TBool        iRotatedKeyEvent;
+        
+        // flag that tells us that we are exiting app because lens cover is closed
+        // used to skip post-capture view in these cases
+        TBool iLensCoverExit; 
+        // flag that indicates whether view finder start is the
+        // first one after camera startup
+        TBool iFirstVFStart;
+
+        TUid iLastHiddenViewId;
+        
+        TCamMediaStorage iInternalStorage; //Points to either Phone or Internal Mass storage based on availability
+        T2ndCamOrientation iLockedQwertyState; 
+        TBool iUiConstructionComplete;
+        CCamMemoryMonitor* iMemoryMonitor;
+        
+        //Flag to monitor viewfinder window handle switch
+        TBool iViewFinderInTransit;
+        };
+
+// ===========================================================================
+// Debug strings
+
+#ifdef _DEBUG
+const TUint16* const KCamViewStateNames[] =
+  {
+  (const TUint16* const)_S16("ECamViewStateRangeInternalMin"),
+
+  (const TUint16* const)_S16("ECamViewStatePreCapture"),
+  (const TUint16* const)_S16("ECamViewStatePostCapture"),
+  (const TUint16* const)_S16("ECamViewStateBurstThumbnail"),
+  (const TUint16* const)_S16("ECamViewStateSettings"),
+  (const TUint16* const)_S16("ECamViewStateStandby"),
+  (const TUint16* const)_S16("ECamViewStateUserSceneSetup"),
+  (const TUint16* const)_S16("ECamViewStateWhiteBalanceUser"),
+  (const TUint16* const)_S16("ECamViewStateColourFilterUser"),
+  (const TUint16* const)_S16("ECamViewStateFlashUser"),
+  (const TUint16* const)_S16("ECamViewStateSceneUser"),
+  (const TUint16* const)_S16("ECamViewStateSceneStill"),
+  (const TUint16* const)_S16("ECamViewStateCaptureSetupMenu"),
+  (const TUint16* const)_S16("ECamViewStateSceneSettingList"),
+  (const TUint16* const)_S16("ECamViewStateExposureUser"),
+  (const TUint16* const)_S16("ECamViewStateCustomiseToolbar"),
+  (const TUint16* const)_S16("ECamViewStatePrePortraitCapture"),
+  
+  (const TUint16* const)_S16("ECamViewStateRangeInternalMax"),
+  (const TUint16* const)_S16("ECamViewStateRangeExternalMin"),
+
+  (const TUint16* const)_S16("ECamViewStateViaPlayer"),
+  (const TUint16* const)_S16("ECamViewStateGsCamcorderPlugin"),
+
+  (const TUint16* const)_S16("ECamViewStateRangeExternalMax")
+  };
+__ASSERT_COMPILE( (sizeof(KCamViewStateNames)/sizeof(TUint16*)) == ECamViewStateCount );
+#endif // _DEBUG
+
+#endif      // CAMAPPUI_H   
+            
+// End of File