diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/inc/CamSidePane.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/inc/CamSidePane.h Wed Sep 01 12:30:54 2010 +0100 @@ -0,0 +1,293 @@ +/* +* 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: SidePane Control* +*/ + + +#ifndef CAMSIDEPANE_H +#define CAMSIDEPANE_H + +// INCLUDES + +#include "CamSelfTimerObserver.h" +#include "CamBurstModeObserver.h" +#include "CamResourceLoader.h" + +// FORWARD DECLARATIONS +class CCamIndicator; +class CCamIndicatorData; +class CCamIndicatorResourceReader; + +// CLASS DECLARATION + +enum ECamSidePaneFlashState + { // Used to indicate whether to turn flashing indicators on or off + ECamSidePaneFlashOff, + ECamSidePaneFlashOn + }; + +/** +* Side Pane control +*/ +class CCamSidePane : public CBase, + public MCamControllerObserver, + public MCamResourceLoader +#ifndef PRODUCT_SUPPORTS_NAVIPANE_SEQUENCE + ,public MCamBurstModeObserver +#endif // !PRODUCT_SUPPORTS_NAVIPANE_SEQUENCE + { + // ========================================================================= + public: // Constructors and destructor + + /** + * Symbian OS two-phased constructor + * @since 2.8 + * @param aController reference to CCamAppControllerBase instance + * @param aOverlayViewFnder - whether sidepane is drawn on top of the viewfinder + * @return created CCamSidePane object + */ + static CCamSidePane* NewL( CCamAppController& aController, + TBool aOverlayViewFinder ); + + /** + * Destructor. + */ + virtual ~CCamSidePane(); + + public: // From MCamResourceLoader + + /** + * From MCamResourceLoader + * @since 3.0 + */ + void LoadResourceDataL(); + + /** + * From MCamResourceLoader + * @since 3.0 + */ + void UnloadResourceData(); + + /** + * From MCamResourceLoader + * @since 3.0 + */ + void ReloadResourceDataL(); + + public: // New functions + + /** + * Is the zoom pane visible? + * @since 2.8 + * @return ETrue if the zoom pane is visible + */ + TBool IsVisible(); + + /** + * Tells the zoom pane whether it is on display + * @since 2.8 + * @param aVisible ETrue to make the zoom pane invisible + */ + void MakeVisible( TBool aVisible ); + + /** + * Draws all the indicators that are displayed in the side pane + * @since 2.8 + * @param aGc The graphics context to use for drawing + */ + void Draw( CBitmapContext& aGc ) const; + + /** + * Set draw rect + * @since 2.8 + * @param Rect to draw into + */ + void SetRect( TRect& aRect ); + + /** + * Set current capture mode + * @since 2.8 + * @param aMode Capture mode + */ + void SetCaptureMode( TCamCameraMode aMode ); + + /** + * Set up initial state of side pane + * @since 2.8 + */ + void SetInitialState(); + + /** + * Updates the layouts for each indicator in sidepane + * @since S60 5.0 + */ + void UpdateLayout(); + + /** + * Draw's/Clear's mode indicator. Used for blinking mode indicator. + * @since S60 5.1 + * @param aGc Graphics context to draw the indicator + * @param aDrawIcon Whether the indicator should be drawn or cleared + */ + void DrawModeIndicator( CWindowGc& aGc, TBool aDrawIcon ); + + /** + * Returns mode indicator layout rect. Used for blinking mode indicator. + * @since S60 5.1 + */ + TRect ModeIndicatorLayoutRect(); + + /** + * Updates scene indicator with the provided bitmap. + * @since S60 5.1 + * @param aBitmapId, aMask Id of the indicator bitmap and mask + */ + void UpdateSceneIndicatorL( TInt32 aBitmapId, TInt32 aMaskId ); + + protected: // Functions from base classes + + /** + * From MCamControllerObserver + * Handle an event from CCamAppControllerBase. + * @since 2.8 + * @param aEvent the type of event + * @param aError error code + */ + virtual void HandleControllerEventL( TCamControllerEvent aEvent, + TInt aError ); + + + private: + + /** + * Get the icon index of current flash setting in given mode. + * @param aMode Capture mode for which the flash icon index is needed. + */ + TInt GetFlashIconIndex( const TCamCameraMode& aMode ); + + + /** + * Register this object with observed classes. + * @since 2.8 + */ + void RegisterObserversL(); + + /** + * Deregister this object from observed classes + * @since 2.8 + */ + void RemoveObservers(); + +// Generic setup icon is displayed either in the navipane or sidepane +#ifdef PRODUCT_USES_GENERIC_SETUP_INDICATOR +#ifndef PRODUCT_SUPPORTS_NAVIPANE_GENERIC_SETUP_INDICATOR + /** + * Sets the default setup indicator depending on the + * current setup settings. + * @since 2.8 + */ + void SetGenericSetupIndicator(); +#endif // !PRODUCT_SUPPORTS_NAVIPANE_GENERIC_SETUP_INDICATOR +#endif // PRODUCT_USES_GENERIC_SETUP_INDICATOR + + /** + * Sets the image stabilisation indicator + * if the current capture mode is video + * @since 3.0 + */ + void SetVideoStabilisationIndicator(); + + /** + * Sets the facetracking indicator + * if the current capture mode is still image + * @since 3.0 + */ + void SetFaceTrackingIndicator(); + + /** + * Set the video scene indicator depending on current setting + * @since 2.8 + */ + void SetVideoSceneIndicator(); + + /** + * Set the photo scene indicator depending on current setting + * @since 2.8 + */ + void SetPhotoSceneIndicator(); + +// Burst mode icon is displayed in either the navipane or sidepane +#ifndef PRODUCT_SUPPORTS_NAVIPANE_SEQUENCE + /** + * From MCamBurstModeObserver + * @since 2.8 + * @param aActive whether or not burst mode is active + * @param aStillModeActive whether or not still capture is active + */ + void BurstModeActiveL( TBool aActive, TBool aStillModeActive ); +#endif // !PRODUCT_SUPPORTS_NAVIPANE_SEQUENCE + + /** + * Checks if the secondary camera is enabled + * @since 2.8 + * @return ETrue if the second camera is enabled + */ + TBool IsSecondaryCameraEnabled() const; + + /** + * Read nontouch layout + */ + void NonTouchLayout() const; + + /** + * Read touch layout + */ + void TouchLayout() const; + + private: + + /** + * Symbian OS 2nd phase constructor. + * @since 2.8 + */ + void ConstructL(); + + /** + * C++ constructor + * @since 2.8 + * @param aController reference to CCamAppControllerBase instance + * @param aOverlayViewFnder - whether sidepane is drawn on top of the viewfinder + */ + CCamSidePane( CCamAppController& aController, + TBool aOverlayViewFinder ); + + // ========================================================================= + // Data + private: + + CCamAppController& iController; + RPointerArray iIndicators; // contained indicators + + TCamCameraMode iMode; // capture state used to determine which settings to retrieve + + TBool iOverlayViewFinder; // whether sidepane is drawn over the viewfinder + TRect iRect; // the side pane rect + TBool iVisible; // whether the side pane is visible + + // ========================================================================= + }; + +#endif + +// End of File