camerauis/cameraapp/generic/inc/CamModeSetupPaneHandler.h
branchRCL_3
changeset 54 bac7acad7cb3
parent 0 1ddebce53859
child 57 2c87b2808fd7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraapp/generic/inc/CamModeSetupPaneHandler.h	Wed Sep 01 12:30:54 2010 +0100
@@ -0,0 +1,341 @@
+/*
+* 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:  Setup pane handler/controller class.
+*
+*  Copyright © 2007 Nokia.  All rights reserved.
+*  This material, including documentation and any related computer
+*  programs, is protected by copyright controlled by Nokia.  All
+*  rights are reserved.  Copying, including reproducing, storing,
+*  adapting or translating, any or all of this material requires the
+*  prior written consent of Nokia.  This material also contains
+*  confidential information which may not be disclosed to others
+*  without the prior written consent of Nokia.
+
+*
+*
+*/
+
+
+#ifndef CAMMODESETUPPANEHANDLER_H
+#define CAMMODESETUPPANEHANDLER_H
+
+// INCLUDES
+#include <E32Base.h>
+#include <w32std.h>
+#include "CamSetupPaneModel.h"
+#include "CamLastCaptureHelper.h"
+
+// FORWARD DECLARATIONS
+class CCamAppController;
+class CCoeControl;
+class CCamSetupPaneItemArray;
+class CCamSetupPane;
+
+
+// CLASS DECLARATION
+
+/**
+* Mode setup pane controller class.
+*/
+class CCamModeSetupPaneHandler : public CBase,
+                                 public MCamSetupPaneModel
+	{
+public:
+    enum TEvent
+        {
+        EEventLeft,
+        EEventRight,
+        EEventSelect,
+        EEventCancel,
+        EEventEditUser
+        };
+public:
+	/**
+    * Two-phase class constructor.
+    * @since 3.0
+    * @param aController - A ref to a base app controller.
+    * @return The new object.
+    */
+	static CCamModeSetupPaneHandler* NewLC( CCamAppController& aController );
+
+	/**
+    * Two-phase class constructor.
+    * @since 3.0
+    * @param aController - A ref to a base app controller.
+    * @return The new object.
+    */
+	static CCamModeSetupPaneHandler* NewL( CCamAppController& aController );
+
+	/**
+    * C++ class destructor.   
+    * @since 3.0
+    */
+	~CCamModeSetupPaneHandler();
+
+public:
+	/**
+    * Creates and returns a new pane control.
+    * @since 
+    * @param aParent - The parent (container) control.
+    * @param aRect - the rectangle this control is to occupy.
+    * @return The new pane control.
+    */
+	CCoeControl* CreatePaneControlL( CCoeControl* aParent, const TRect& aRect );
+
+	/**
+    * Handles events forwarded from the pane control.
+    * @since 3.0
+    * @param aEvent - The event to handle
+    */		
+	void HandleEvent( TEvent aEvent );
+
+	/**
+	* Moves the current highlight item.
+    * @since 3.0
+    */
+	void MoveToPreviousItem();
+
+	/**
+	* Moves the current highlight item.
+    * @since 3.0
+    */
+	void MoveToNextItem();
+	
+	/**
+	* Sets the context of the Setup Pane, based on the mode it is in
+    * @since 3.0
+    * @param aFirstCamera ETrue if first camera in use, else EFalse
+    * @param aPhoto ETrue if in photo mode, else EFalse if in video
+    * @param aUserSceneSetup ETrue if in user scene setup mode.
+    */
+	void SetMenuContextL( TBool aFirstCamera, TBool aPhoto, TBool aUserSceneSetup = EFalse );
+
+	/**
+	* Activates a particular sub-menu.
+    * @since 3.0
+    * @param aMenuItem The id of the submenu to activate.
+    */
+	void ActivateMenuItem( TInt aMenuItem );
+	
+	/**
+	* Set whether SetupPane control is in foreground or not
+    * @since 3.0
+    * @param aForeground ETrue if in foreground, EFalse if in background
+    */
+	void SetForeground( TBool aForeground );
+	
+public:
+	/**
+    * From   MCamSetupPaneModel
+    * @since 3.0 
+    * @return The number of items in the model.
+    */
+	TInt NumberOfItems() const;
+
+	/**
+    * From   MCamSetupPaneModel
+    * @since 3.0
+    * @return The title text in the model.
+    */
+	const TDesC& TitleText() const;
+
+	/**
+    * From   MCamSetupPaneModel
+    * @since 3.0
+    * @return The descriptor text in the model.
+    */
+	const TDesC& DescriptorText() const;
+
+	/**
+    * From   MCamSetupPaneModel
+    * @since 3.0
+    * @param aItemIndex - The model item index to get an icon for.
+    * @return The corresponding icon.
+    */
+	CGulIcon& Icon( TInt aItemIndex );
+
+	/**
+    * From   MCamSetupPaneModel
+    * @since 3.0
+    * @return The index of the highlighted model item.
+    */
+	TInt HighlightedItemIndex() const;
+
+	/**
+    * From   MCamSetupPaneModel
+    * @since 3.0
+    * @return The id of the highlighted model item.
+    */
+	TInt HighlightedItemId() const;
+	
+	/**
+    * From   MCamSetupPaneModel
+    * @since 3.0 
+    * @param aItemIndex Index of the SetupPane menu item
+    * @return ETrue if this item is the LastCaptured thumbnail, else EFalse
+    */
+	TBool IconIsThumbnail( TInt aItemIndex ) const;
+
+	/**
+    * From   MCamSetupPaneModel
+    * @since 3.0 
+    * @param aSmall Whether requesting the small (ETrue) or large (EFalse) thumbnail icon
+    * @return The number of items in the model.
+    */
+    CGulIcon& Thumbnail( TBool aSmall );
+    
+    /**
+    * From   MCamSetupPaneModel
+    * @since 3.0
+    */
+    void Refresh();
+
+private:
+	/**
+    * C++ constructor.
+    * @since 3.0
+    * @param aController - A ref to a base app controller object.
+    */
+	CCamModeSetupPaneHandler( CCamAppController& aController );
+
+	/**
+	* Carriers out two-phase class construction.
+    * @since 3.0
+    */
+	void ConstructL();
+
+	/**
+    * Handles a pane highlighted item change.
+    * @since 3.0
+    */
+	void HandlePaneItemChanged();
+
+	/**
+    * Handles a pane highlighted item change.
+    * @since 3.0
+    */
+	void HandlePaneItemLevelItemChanged();
+
+	/**
+    * Handles a pane highlighted menu item selection.
+    * @since 3.0 
+    * @param aValueToBeHighlighted The value of the selected pane to be highlighted.
+    */
+	void HandlePaneMenuLevelSelection( TInt aValueToBeHighlighted );
+	
+	/**
+    * Handles user selection of the "LastCapture" thumbnail where available
+    * @since 3.0 
+    */	
+	void HandleLastCaptureSelection();	
+
+	/**
+    * Handles a pane highlighted item-level selection.
+    * @since 3.0
+    */
+	void HandlePaneItemLevelSelection();
+
+	/**
+    * Handles a pane highlighted item-level selection.
+    * @since 3.0
+    */
+	void HandlePaneCancel();
+
+	/**
+	* Updates the setup pane based on the specified resource
+    * @since 3.0
+    * @param aResource The resource specifying the new pane contents
+    */    
+	void UpdateFromResourceL( TInt aResource );
+
+	/**
+	* Deletes the contents of the array, and resets internal state
+    * @since 3.0
+    */        
+	void ResetArray();
+	
+	/**
+	* Switches to the User Scene Setup view.
+    * @since 3.0
+    */        
+	void SwitchToUserSceneView();
+
+
+private:
+	// Setup pane modes - top ('menu') level, or bottom ('item') level.
+	enum TSetupPaneLevel
+		{
+		EMenuLevel,
+		EItemLevel
+		};
+
+	// Various definitions:
+	enum
+		{
+		KSettingsArrayCount = 6,	// Number of settings arrays.
+		KItemArrayGranularity = 4,	// Granularity of item arrays.
+		KMaxTitleCharLength = 32	// Max character length of title text.
+		};
+
+private:
+	// The app controller object (gives access to settings).
+	CCamAppController& iController;
+
+	// The current level that the pane is at (menu or item level).
+	TSetupPaneLevel iPaneLevel;
+
+	// The zero-based index of the currently highlighted item.
+	TInt iHighlightedItemIndex;
+
+	// Zero-based index of the current settings array (=the selected menu item).
+	TInt iCurrentSettingsArrayIndex;
+
+	// IDs of the pane menu items (+ one dynamic item).
+	TInt iMenuItemIds[KSettingsArrayCount + 1];
+
+	// Title text for each menu item (+ one dynamic item)
+	TBuf<KMaxTitleCharLength> iMenuTitles[KSettingsArrayCount + 1];
+
+	// 'Item-level' settings item arrays.
+	CCamSetupPaneItemArray* iSettingItems[KSettingsArrayCount];
+
+	// Pointer to a pane control object (not owned).
+	CCamSetupPane* iPaneControl;
+	
+	// Pointer to the owning object (not owned)
+	CCoeControl* iParent;
+    
+    // Number of settings in the iSettingItems array
+	TInt iNoOfSettingsItems;
+	
+	// Specifies whether the user scene setup is currently being edited.
+	TBool iUserSceneSetupMode;
+
+	// Helper class to get the last-captured thumbnails where available.
+	CCamLastCaptureHelper* iLastCaptureHelper;
+	
+    // The current mode.  ETrue if Photo mode, EFalse if video mode
+	TBool iPhotoMode;
+	
+    // Whether the SetupPane is currently in foreground or not.
+	TBool iForeground;		
+	
+	// Title to use for the LastCapture selection
+	HBufC16* iLastCapTitle;
+	
+	// Filename of last capture
+	TFileName iLastCapName;
+	};
+
+#endif