--- /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