camerauis/cameraapp/generic/inc/CamCaptureSetupViewBase.h
branchRCL_3
changeset 24 bac7acad7cb3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraapp/generic/inc/CamCaptureSetupViewBase.h	Wed Sep 01 12:30:54 2010 +0100
@@ -0,0 +1,300 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Base class for pre capture views*
+*/
+
+
+#ifndef CAMCAPTURESETUPVIEWBASE_H
+#define CAMCAPTURESETUPVIEWBASE_H
+
+//  INCLUDES
+#include "CamViewBase.h"
+
+// FORWARD DECLARATIONS
+class CCamCaptureSetupControlHandler;
+class CCamCaptureSetupContainer;
+class CCamShootingModeContainer;
+class CCamInfoListBoxContainer;
+
+// CLASS DECLARATION
+
+/**
+* Base class for views that need to run capture setup
+*
+*  @since 2.8
+*/
+class CCamCaptureSetupViewBase : public CCamViewBase
+    {
+    public: // data types
+
+    /**
+    * Setting mode
+    */
+    enum TCamSettingMode
+        {
+        ECamSettingModeNone,
+        ECamSettingModeCaptureMenu,
+        ECamSettingModeCapture,
+        ECamSettingModeScene,
+        ECamSettingModeInfoListBox
+        };
+
+		// Info listbox mode 
+	enum TCamInfoListBoxMode
+		{
+		EInfoListBoxModeNone,
+		EInfoListBoxModeTimeLapse,
+		EInfoListBoxModeISO
+        };
+
+    public:  // Constructors and destructor
+        
+        /**
+        * Destructor.
+        * @since 2.8
+        */
+        virtual ~CCamCaptureSetupViewBase();
+
+    public: // Functions from base classes
+
+     /**
+        * Handle events sending app to foreground or background
+        * @param aForeground whether the event brings the app to fore or background
+     */       
+        void HandleForegroundEventL( TBool aForeground );
+        
+        /**
+        * From CAknView Handle commands
+        * @since 2.8
+        * @param aCommand command to be handled
+        */
+        void HandleCommandL( TInt aCommand );
+
+        /**
+        * Handle change of focus to another application
+        * This only handles another application coming to the foreground when
+        * the camera application is already in the background behind an eikon
+        * server window
+        * @since 2.8
+        */
+        void HandleFocusLossL();
+        
+        /**
+        * Revert to normal mode
+        * @since 2.8
+        */
+        virtual void ExitAllModesL();
+
+    public: // New functions
+
+        /**
+        * From CAknView deactivate the view (free resources)
+        * @return void
+        */
+        void DoDeactivate();
+        
+         /**
+          * Sets the iSceneSettingModeActive flag
+          * @param aActive What to set iSceneSettingModeActive to
+          */
+        void SetSceneSettingMode(TBool aActive);
+        
+         /**
+          * Sets the iInfoListBoxActive flag
+          * @param aActive What to set iInfoListBoxActive to
+          */
+        void SetInfoListBoxMode(TBool aActive, TBool aFullySkinned=EFalse);        
+        
+         /**
+          * Sets the iCaptureSetupModeActive flag
+          * @param aActive What to set iCaptureSetupModeActive to
+          */
+        void SetCaptureSetupModeActive(TBool aActive);
+            
+    protected:  // New functions
+
+        /**
+        * C++ default constructor.
+        * @param aController Reference to either the application controller 
+        * base class or test base class
+        * @since 2.8
+        */
+        CCamCaptureSetupViewBase( CCamAppController& aController );
+
+        /**
+        * Creates a control handler for the appropriate control type
+        * @since 2.8
+        * @param aSetupCommand The command that initiated capture setup mode, used to 
+        *                        determine the required control type
+        */
+        void CreateCaptureSetupControlHandlerL(  TInt aSetupCommand );
+
+        /**
+        * Enter capture setup mode.
+        * Creates a capture setup control handler and a second container to replace 
+        * the normal container on the control stack. Updates the Cba, title pane 
+        * and navi pane.
+        * Derived classes should override this method to add any additional 
+        * functionality they require e.g. starting the viewfinder in the
+        * appropriate capture mode if it is not already active.
+        * @since 2.8
+        * @param aSetupCommand The command that initiated capture setup mode, used to 
+        *                        determine the required control type
+        */
+        virtual void SwitchToCaptureSetupModeL( TInt aSetupCommand, TBool aFullScreenVF=ETrue );
+
+        /**
+        * Exit capture setup mode.
+        * Replaces the normal container on the control stack. 
+        * Reverts the Cba and title pane.
+        * Derived classes should override this method to add any additional 
+        * functionality they require e.g exiting the viewfinder and
+        * reverting the navi pane if necessary when switching back to the view's 
+        * normal mode.
+        * @since 2.8
+        */
+        virtual void ExitCaptureSetupModeL();
+
+
+        /**
+        * Enter scene setting mode.
+        * Creates a container to replace the normal container on the control stack. 
+        * Updates the Cba, title pane and navi pane.
+        * @since 2.8
+        */
+        virtual void SwitchToSceneSettingModeL();
+
+        /**
+        * Exit capture setup mode.
+        * Replaces the normal container on the control stack. 
+        * Reverts the Cba and title pane.
+        * @since 2.8
+        */
+        virtual void ExitSceneSettingModeL();
+
+        /**
+        * Enter InfoListBox mode
+        * Creates a container to replace the normal container on the control stack. 
+        * Updates the Cba, title pane and navi pane.
+        * @param aMode
+        * @since 3.0
+        */
+        virtual void SwitchToInfoListBoxL( TCamInfoListBoxMode aMode, TBool aFullySkinned=EFalse );        
+
+        /**
+        * Handle InfoListBox item selection
+        * Updates the Cba, title pane and navi pane.
+        * @since 3.0
+        */
+   		virtual void HandleInfoListBoxSelectionL();
+        
+        /**
+        * Exit InfoListBox
+        * Updates the Cba, title pane and navi pane.
+        * @since 3.0
+        */        
+        virtual void ExitInfoListBoxL();
+
+        /**
+        * Determine the title pane resource for the current setup mode
+        * @since 2.8
+        * @return Id of the title pane text for current setup mode
+        */
+        TInt SetupModeTitlePaneResourceId();
+
+        /**
+        * From MEikMenuObserver Changes MenuPane dynamically
+        * @param aResourceId Resource Id
+        * @param aMenuPane Handle to menu pane
+        * @since 2.8
+        */
+        void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+
+        void CaptureSetupModeSelection();
+    private:
+
+        /**
+        * Cleans up the capture setup container if a leave occurs
+        * while switching to capture setup mode
+        * @param aAny pointer to the object to cleanup
+        * @since 2.8
+        */
+        static void CleanupCaptureSetupContainer( TAny* aAny );
+
+        /**
+        * Cleans up the scene setting container if a leave occurs
+        * while switching to scene setting mode
+        * @param aAny pointer to the object to cleanup
+        * @since 2.8
+        */
+        static void CleanupSceneSettingContainer( TAny* aAny );
+
+        /**
+        * Cleans up InfoListBox if a leave occurs
+        * while switching to scene setting mode
+        * @param aAny pointer to the object to cleanup
+        * @since 2.8
+        */
+        static void CleanupInfoListBox( TAny* aAny );
+
+        /**
+        * Cleans up the containers if a leave occurs
+        * while exiting scene setting/capture setup mode
+        * @param aAny pointer to the object to cleanup
+        * @since 2.8
+        */
+        static void CleanupExit( TAny* aAny );
+
+    protected: // data
+        // Used to determine when the view is in capture setup mode
+        TBool iCaptureSetupModeActive;
+
+        // Used to determine when the view is in scene settings mode
+        TBool iSceneSettingModeActive;
+        
+        // Used to determine InfoListBox is visible
+        TBool iInfoListBoxActive;
+
+        // Resource Id for title view when in capture setup or scene setting mode
+        TInt iSettingModeTitleResourceId;
+
+        // Used to determine when user has pressed change button        
+        TBool iChangeButtonPressed;
+
+    protected:
+        // A container that the view uses when in scene settings mode
+        CCamShootingModeContainer* iSceneSettingContainer;        
+        
+        // Container for other settings using info listbox
+        CCamInfoListBoxContainer* iInfoListBoxContainer;
+        // Purpose of current instance of iInfoListBoxContainer
+        TCamInfoListBoxMode iInfoListBoxMode;                
+        
+        TBool iForceAvkonCBA;
+    private:   // data
+
+        // Handler for the capture setup control
+        CCamCaptureSetupControlHandler* iCaptureSetupControlHandler;
+        
+        // A second container that the view uses when in capture setup mode
+        CCamCaptureSetupContainer* iCaptureSetupContainer;
+        
+        // Stores the previous capture mode of camera before entering Infolistbox mode 
+        TCamPreCaptureMode iPrevCaptureMode;
+
+    };
+
+#endif      // CAMCAPTURESETUPVIEWBASE_H 
+            
+// End of File