diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/inc/CamShootingModeContainer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/inc/CamShootingModeContainer.h Wed Sep 01 12:30:54 2010 +0100 @@ -0,0 +1,325 @@ +/* +* Copyright (c) 2007-2010 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: Setting page for Image/Video quality.* +*/ + + +#ifndef CAMSHOOTINGMODECONTAINER_H +#define CAMSHOOTINGMODECONTAINER_H + +// INCLUDES +#include "CamContainerBase.h" +#include "CamAppController.h" +#include "CamSettingValueObserver.h" +#include "CamSettings.hrh" +#include +#include +#include + + +// CONSTANTS + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS +class MAknQueryValue; +class CCamSceneListBox; +class CAknInfoPopupNoteController; +class MTouchFeedback; + +// CLASS DECLARATION + +/** +* Implements the Shooting Mode Setting control and descriptive texts +* +* @since 2.8 +*/ + + +class CCamShootingModeContainer : public CCamContainerBase, + public MCamSettingValueObserver, + public MEikListBoxObserver + { + public: // Constructors and destructor + + /** + * Symbian OS two-phased constructor + * @since 2.8 + * @param aRect Frame rectangle for container. + * @param aView Reference to the view containing this container + * @param aMode Current capture mode + * @param aController reference to CCamAppControllerBase instance + * @param aUserBaseScenes Specifies whether this list should + * display the base scenes for the user scene. + */ + static CCamShootingModeContainer* NewL( const TRect& aRect, + CAknView& aView, + TCamCameraMode aMode, + CCamAppController& aController, + TBool aUserBaseScenes = EFalse ); + + /** + * Symbian OS two-phased constructor + * @since 2.8 + * @param aRect Frame rectangle for container. + * @param aView Reference to the view containing this container + * @param aMode Current capture mode + * @param aController reference to CCamAppControllerBase instance + * @param aUserBaseScenes Specifies whether this list should + * display the base scenes for the user scene. + * @param aFullySkinned Specifies whether this list should + * be displayed as transparent or skinned background. + */ + static CCamShootingModeContainer* NewL( const TRect& aRect, + TBool aFullySkinned, + CAknView& aView, + TCamCameraMode aMode, + CCamAppController& aController, + TBool aUserBaseScenes ); + + /** + * Destructor. + * @since 2.8 + */ + virtual ~CCamShootingModeContainer(); + + private: + /** + * Symbian OS 2nd phase constructor. + * @since 2.8 + * @param aRect Frame rectangle for container. + */ + void ConstructL( const TRect& aRect ); + + /** + * C++ constructor + * @since 2.8 + * @param aMode Current capture mode + * @param aController reference to CCamAppControllerBase instance + * @param aView Reference to the view containing this container + * @param aUserBaseScenes Specifies whether this list should + * display the base scenes for the user scene. + */ + CCamShootingModeContainer( TCamCameraMode aMode, + CCamAppController& aController, + CAknView& aView, + TBool aUserBaseScenes, + TBool aFullySkinned=ETrue ); + + public: // New functions + /** + * Is the user scene currently selected + * @since 2.8 + * @return ETrue if user scene highlighted + */ + TBool UserSceneHighlighted(); + + /** + * Saves the selected scene in dynamic settings + * @since 2.8 + * @return ETrue if the scene setting was changed successfully. + */ + TBool SaveSceneSettingL(); + + /** + * Saves the selected scene in dynamic settings if the scene + * mode has changed from current value. + * @since S60 v5.0 + * @return ETrue if the scene setting was changed successfully. + */ + TBool SaveSceneSettingIfChangedL(); + + /** + * Gets the settings item value ID of the current item + * @since 2.8 + * @return the settings item value of the currently highlighted item + */ + TInt CurrentSettingItemValue() const; + + /** + * Gets the index in the item array that has the specified settings + * item value ID of the current item + * @since 3.0 + * @return the index of the item with the specified value id + */ + TInt IndexForValueId( TInt aValueId ) const; + + /** + * Hilights the given item on scene listbox + * @return returns false if item cannot be selected + */ + TBool SelectItem( TInt aItemIndex ); + + public: //Functions from base classes + /** + * From MCamSettingValueObserver + * Handles a change in the slider value + * @since 2.8 + * @param aNewValue the new value of the setting + */ + void HandleSettingValueUpdateL( TInt aNewValue ); + + protected: // Functions from base classes + /** + * From CoeControl + * @since 2.8 + * @return number of contained controls + */ + TInt CountComponentControls() const; + + /** + * From CCoeControl + * @since 2.8 + * @param aIndex The index of the required control + * @return Returns the requested control + */ + CCoeControl* ComponentControl( TInt aIndex ) const; + + /** + * From CCoeControl + * @since 2.8 + * @param aRect area where to draw + */ + void Draw( const TRect& aRect ) const; + + /** + * From CamContainerBase + * @since 2.8 + * @param aKeyEvent the key event + * @param aType the type of the event + * @return TKeyResponse key event was used by this control or not + */ + TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, + TEventCode aType ); + + private: + + + /** + * Sets up the summary pane detail arrays + * @since 2.8 + * @param aResourceId The resource that defines the summary pane details + */ + void ConstructSummaryDetailsFromResourceL(TInt aResourceId); + + + /** + * Select the resource for summary texts. + * @return Resource id of the summaries. + */ + TInt SelectSummaryResourceL(); + + /** + * Get if the given scene is supported. + */ + TBool IsSupportedScene( TInt aSceneId ) const; + + /** + * Draws the summary title and description text + * @param aGc The graphics context to draw to + */ + void DrawSummaryTextL( CWindowGc& aGc ) const; + + /** + * Read touch layout + * @return TRect, listbox rectangle + */ + TRect TouchLayout(); + + /** + * Read non-touch layout + * @return TRect, listbox rectangle + */ + TRect NonTouchLayout(); + + public: + + /** + * From CCoeControl + */ + void HandlePointerEventL( const TPointerEvent& aPointerEvent ); + + /** + * From MEikListBoxObserver + */ + void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType); + /** + * Displays tooltip for the selected listbox item + */ + void ShowTooltipL(); + + /** + * Hides tooltip for the selected listbox item, if one is visible + */ + void HideCurrentTooltipL(); + + /** + * Reads the title text from given resource + * @param aResourceId The resource that defines the summary pane details + */ + void ConstructContainerTitleFromResourceL( TInt aResourceId ); + + + private: // data + + // the shooting mode list box + CCamSceneListBox* iListBox; + + // the capture mode (video/still) + TCamCameraMode iMode; + // Specifies whether or not the scene list is for + // the user base scenes + TBool iUserBaseScenes; + + TBool iFullySkinned; + // Array of bitmaps for the large summary icon + RPointerArray iSummaryBitmapArray; + // Array of all shooting mode titles + RPointerArray iTitleArray; + // Array of all shooting mode descriptions + RPointerArray iDescArray; + + + // Array of supported scenes + RArray iSupportedScenes; + + // The text shown as the title of the container + HBufC* iTitleText; + + // Layout rect for title text + TAknLayoutText iTitleTextRectLayout; + TAknLayoutRect iListboxLayoutRect; + + TRect iLayoutAreaRect; // Scene setting + TRect iExplanationRect; + TInt iExplLineCount; // Number of available layouts + TAknLayoutRect iExplIconLayout; + TAknLayoutText iExplTitleLayout; + RArray iExplTxtLinesLayout; + CArrayFixFlat* iCurrentDescLineArray; // own + + CAknInfoPopupNoteController* iTooltipController; + TBool iShowTooltip; + HBufC16* iListboxTitle; + TInt iTooltipIndex; + + TBool iActivateOnTouchRelease; + + }; + +#endif //CAMSHOOTINGMODECONTAINER_H