diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/inc/CamModeSetupPaneHandler.h --- /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 +#include +#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 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