--- a/camerauis/cameraapp/generic/inc/CamPreCaptureContainerBase.h Thu Aug 19 09:36:57 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,770 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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: Container base class pre capture views
-*
-*/
-
-
-
-#ifndef CAMPRECAPTURECONTAINERBASE_H
-#define CAMPRECAPTURECONTAINERBASE_H
-
-// ===========================================================================
-// INCLUDES
-#include "CamAppController.h"
-#include "CamContainerBase.h"
-#include "CamControllerObservers.h"
-#include "CamBurstModeObserver.h"
-#include "CamZoomPane.h"
-#include "CamPSI.h" // Product Specific Information
-#include "cambatterypanecontroller.h"
-#include "mcamcameraobserver.h" // MCamCameraObserver <CAMERAAPP_CAPI_V2_MIGRATION/>
-
-#include "CamLocationIconController.h"
-
-
-// ===========================================================================
-// FORWARD DECLARATIONS
-class CWindowGC;
-class CAknView;
-
-class CCamViewBase;
-class CCamSidePane;
-class CCamZoomPane;
-class CCamIndicator;
-class CCamTimeLapseSlider;
-class MCamVfGridDrawer;
-class CCamStartupLogo;
-class CCamCaptureButtonContainer;
-
-
-// ===========================================================================
-// CLASS DECLARATION
-
-/**
-* Container for still image pre capture view
-*/
-class CCamPreCaptureContainerBase : public CCamContainerBase,
- public MCamControllerObserver,
- public MCamCameraObserver,
- public MCamSettingsModelObserver, // <CAMERAAPP_CAPI_V2_MIGRATION/>
-// public MCamViewFinderObserver,
-
- public MCamBurstModeObserver,
- public MCamBatteryPaneObserver,
- public MCamLocationIconObserver
-
- {
- // =========================================================================
- // Typenames
- public:
-
- // enum TVfState moved to CCamContainerBase. Used in multiple child classes.
-
- enum TCamPreCaptureSubControls
- {
- // ECamTimeLapseControl
- ECamActivePalette = 1,
- ECamCaptureButton
- };
-
- enum TFocusState
- {
- EFocusStateNormal,
- EFocusStateFocusing,
- EFocusStateFocusFailed,
- EFocusStateFocusAchieved
- };
-
- // =========================================================================
- // Public constructors and destructor
- public:
-
- /**
- * Destructor.
- */
- virtual ~CCamPreCaptureContainerBase();
-
- // -------------------------------------------------------------------------
- // From CoeControl
- public:
-
- /**
- * @since 2.8
- * @return number of contained controls
- */
- virtual TInt CountComponentControls() const;
-
- /**
- * @since 2.8
- * @param aIndex The index of the control required
- * @return The requested control
- */
- virtual CCoeControl* ComponentControl(TInt aIndex) const;
-
- /**
- * Locally takes actions needed due to resource changes, then
- * calls the implementation in CCamContainerBase
- * @since 2.8
- * @param aType resource change
- */
- virtual void HandleResourceChange( TInt aType );
-
-
- /**
- * @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
- */
- virtual TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,
- TEventCode aType );
-
-
- /**
- * Handle events sending app to foreground or background
- * @since 2.8
- * @param aForeground whether the event brings the app to fore or background
- */
- virtual void HandleForegroundEventL( TBool aForeground );
-
- /**
- * Handle application level event.
- * For example focus gained and lost are notified through this method.
- * @param aEvent Event type
- */
- virtual void HandleAppEvent( const TCamAppEvent& aEvent );
-
- /**
- * @since 2.8
- * @param aVisible ETrue if the controls should be visible
- */
- virtual void MakeVisible( TBool aVisible );
-
- /**
- * From CCoeControl
- * Handle pointer events.
- * @since S60 5.0
- * @param aPointerEvent information about the pointerevent
- */
- void HandlePointerEventL(const TPointerEvent& aPointerEvent);
-
- protected:
-
- /**
- * @since 2.8
- * @param aRect area where to draw
- */
- virtual void Draw( const TRect& aRect ) const;
-
- /**
- * From CCoeControl.
- * @since 5.2
- * @param aDrawNow Flag to indicate if the container should be drawn
- */
- virtual void FocusChanged( TDrawNow aDrawNow );
-
- // -------------------------------------------------------------------------
- // From MCamControllerObserver
- public:
-
- /**
- * @since 2.8
- * @param aEvent The specific event which occurred
- * @param aError The error code associated with the event
- */
- virtual void HandleControllerEventL( TCamControllerEvent aEvent,
- TInt aError );
-
- // <CAMERAAPP_CAPI_V2_MIGRATION>
- // -------------------------------------------------------------------------
- // From MCamCameraObserver
- public:
-
- /**
- * @since Camera 4.0
- * @see MCamCameraObserver
- */
- virtual void HandleCameraEventL( TInt aStatus,
- TCamCameraEventId aEventId,
- TAny* aEventData = NULL );
-
- // -------------------------------------------------------------------------
- // From MCamSettingsModelObserver
- public:
-
- /**
- * Notification for change in integer setting item value.
- *
- */
- virtual void IntSettingChangedL( TCamSettingItemIds aSettingItem,
- TInt aSettingValue );
-
- /**
- * Notification for change in text setting item value.
- *
- */
- virtual void TextSettingChangedL( TCamSettingItemIds aSettingItem,
- const TDesC& aSettingValue );
-
-
- // </CAMERAAPP_CAPI_V2_MIGRATION>
- // -------------------------------------------------------------------------
- // From MCamBatteryPaneObserver
- public:
- /**
- * Called when battery pane has changed and redraw is needed
- * @since 3.1
- */
- void BatteryPaneUpdated();
-
-
- // -------------------------------------------------------------------------
- // From MCamLocationIconObserver
- public:
- /**
- * Called when location icon status is changed
- * @since 3.1
- */
- void LocationIconUpdated();
-
- // -------------------------------------------------------------------------
- public:
-
- /**
- * Requests that the camera application redraws the supplied area
- * @since 3.0
- * @param aArea the area to redraw
- */
- virtual void Redraw(const TRect& aArea);
-
- public: // New functions
-
- /**
- * Handles CBA and Options menu keys
- * @since 3.0
- * @param aCommand The command to handle
- */
- void HandleCommand( TInt aCommand );
-
- /**
- * Will show the zoom pane for a set time
- * @since 2.8
- */
- void ShowZoomPaneWithTimer();
-
- /**
- * Constructs Active Palette if not done yet.
- * If Active Palette already exists, clears any existing items.
- * Sets new items based on resource from GetAPResourceId.
- * Registers the view for Active Palette.
- */
- virtual void SetupActivePaletteL( CCamViewBase* aView );
-
- /**
- * Tells the container to blink the resolution indicator
- * when the resolution changes. The flag is reset after
- * doing one blinking rountine or can be reset manually by
- * calling the function with EFalse.
- */
- void BlinkResolutionIndicatorOnChange( TBool aBlink=ETrue );
-
- /**
- * Updates the visibility of the capture button
- * @since 5.2
- */
- void UpdateCaptureButton();
-
- /**
- * Perform the UI adjustments just before start of capture
- * @since 5.2
- */
- void PrepareForCapture();
-
- protected:
-
- /**
- * Callback for zoom timer when zoom pane needs to be hidden.
- * @since 2.8
- * @param aObject - Pointer to instance of CCamPreCaptureContainerBase
- * @return KErrNone
- */
- static TInt ZoomTimerCallback( TAny* aObject );
-
- /**
- * Callback for reticule timer,
- * @since 3.0
- * @param aObject - Pointer to instance of CCamPreCaptureContainerBase
- * @return KErrNone
- */
- static TInt ReticuleTimerCallback( TAny* aObject );
-
- /**
- * Member function called when zoom timer expires.
- * @since 2.8
- */
- void ZoomTimerTick();
-
- /**
- * Allows derived classes to draw mode-specific icons
- * @param aGc The context to draw with
- * @since 3.0
- */
- virtual void DrawAdditionalIcons(CBitmapContext& aGc) const = 0;
-
- /**
- * Returns the rect of the resolution indicator
- * @return The rect of the resolution icon as a TRect
- * @since 3.0
- */
- TRect ResolutionIndicatorRect() const;
-
- /**
- * Returns the ID of the array containing the resolution indicator icons
- * @return The array ID
- * @since 3.0
- */
- virtual TCamPsiKey ResolutionIndicatorIconPsiKey() const = 0;
-
- protected:
-
- /**
- * Draw viewfinder grid.
- * Delegates call to iVfGridDrawer.
- * Does not draw anything if grid has not been set visible.
- * @param aGc The graphics context
- */
- virtual void DrawVfGrid( CBitmapContext& aGc ) const;
-
- /**
- * Redraw part of viewfinder grid.
- * Delegates call to iVfGridDrawer.
- * Does not draw anything if grid has not been set visible.
- * @param aRect The area to redraw
- * @param aGc The graphics context
- */
- virtual void ReDrawVfGrid( const TRect& aRect,
- CBitmapContext& aGc ) const;
-
- /**
- * Init the viewfinder grid.
- * Creates the grid drawer if not done yet.
- * Set drawing rectangle and visibility.
- */
- virtual void InitVfGridL( const TRect& aRect ) = 0;
-
- /**
- * Get the current setting for viewfinder grid visibility.
- */
- virtual TBool GetVFGridVisibilitySetting() const;
-
- /**
- * Reset the viewfinder grid drawer visibility property with
- * value asked from controller.
- */
- virtual void ResetVFGridVisibility();
-
- protected:
-
- /**
- * Symbian OS 2nd phase constructor.
- * @since 2.8
- * @param aRect Frame rectangle for container.
- */
- void BaseConstructL( const TRect& aRect );
-
- /**
- * C++ constructor
- * @since 2.8
- * @param aController reference to CCamAppController instance
- * @param aView reference to the view containing this container
- */
- CCamPreCaptureContainerBase( CCamAppController& aController,
- CAknView& aView );
-
- private: // New Functions
-
- /**
- * Performs the actual BitBlt of the viewfinder frame
- * @since 2.8
- * @param aGc the graphics context
- * @param aFrame pointer to the bitmap.
- */
- void DrawFrameNow( CBitmapContext& aGc, const CFbsBitmap* aFrame ) const;
-
- protected:
- /**
- * Autofocus indication layout from LAF
- *
- * @since S60 S60 v5.0
- */
- void SizeChanged();
-
- private:
- /**
- * Draws the reticule over the viewfinder
- * @since 3.0
- * @param aGc the graphics context
- */
- void DrawReticule( CBitmapContext& aGc ) const;
-
- /**
- * Draw part of the reticule.
- * Used to redraw areas left dirty by hiding AP tooltips.
- * @param aRect The area to redraw
- * @param aGc The graphics context
- */
- void ReDrawReticule( const TRect& aRect,
- CBitmapContext& aGc ) const;
-
- /**
- * Force the side-pane or zoom-pane to redraw. Called when they
- * are required to be overlaid on the viewfinder.
- * @since 2.8
- */
- void ForceSideZoomPaneDraw() const;
-
- /**
- * Return the id of the layout resource for the viewfinder frame
- * @since 2.8
- * @param aViewFinderLayoutId on return this contains the resource id
- * of the viewfinder layout
- * @param aReticuleLayoutId on return this contains the resource id
- * of the reticule layout if used, otherwise 0
- */
- virtual void ViewFinderLayoutResourceIds( TInt& aViewFinderLayoutId,
- TInt& aReticuleLayoutId ) const = 0;
-
- /**
- * Create the resolution indicator
- * @since 2.8
- */
- void CreateResolutionIndicatorL();
-
- /**
- * Sets the resolution indicator to the required icon
- * @since 2.8
- */
- virtual void SetResolutionIndicator() = 0;
-
- /**
- * Sets the location indicator icon if the setting is enabled
- */
- virtual void SetLocationIndicatorVisibility() = 0;
-
- /**
- * Burst mode activation has changed
- * @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 );
-
- /**
- * Process a key event that should change the current capture state
- * E.g. start/pause recording, start/stop capture
- * @since 3.0
- * @param aKeyEvent the key press that initiates the capture
- * @return whether or not the key was consumed
- */
- virtual TKeyResponse HandleCaptureKeyEventL( const TKeyEvent& aKeyEvent ) = 0;
-
- /**
- * Process a key event that could change the current capture state
- * E.g. start autofocus, revert from post-capture to pre-capture views
- * @since 3.0
- * @param aKeyEvent the key press that initiates the capture
- * @param aType the event code type
- * @return whether or not the key was consumed
- */
- virtual TKeyResponse HandleShutterKeyEventL( const TKeyEvent& aKeyEvent,
- TEventCode aType ) = 0;
-
- /**
- * Move up through the flash settings
- * @since 3.0
- */
- virtual void IncreaseFlashSettingL();
-
- /**
- * Move down through the flash settings
- * @since 3.0
- */
- virtual void DecreaseFlashSettingL();
-
- /**
- * Initiate behaviour in response to a navi key left/right arrow
- * press
- * @since 3.0
- * @param aKeyEvent the key that has been pressed
- * @param aType the Key type
- * @return whether or not the key was consumed
- */
- TKeyResponse HandleLeftRightNaviKeyL( const TKeyEvent& aKeyEvent,
- TEventCode aType );
- /**
- * Draw side or zoom pane, softkeys and reticule
- * @since 3.0
- * @param aGc context to draw into
- */
- void DrawScreenFurniture( CBitmapContext& aGc ) const;
-
- /**
- * Draw navi pane items
- * @since 3.0
- * @param aGc context to draw into
- */
- void DrawNaviControls( CBitmapContext& aGc ) const;
-
- /**
- * Draw active palette
- * @since 3.1
- */
- void DrawActivePalette() const;
-
- /**
- * Draw active pallette
- * @since 3.1
- * @param aGc context to draw into
- */
- void DrawActivePalette( CBitmapContext& aGc ) const;
-
- /**
- * Sets the iTimeLapseVisible flag
- * @param aActive What to set iTimeLapseVisible to
- */
- void SetTimeLapseVisible(TBool aActive);
-
- void HandleOperationStateChangeEventL();
-
- /**
- * Gets the resource id of AP items.
- * Needs to be implemented in inheriting classes.
- */
- virtual TInt GetAPResourceId() const = 0;
-
- /**
- * Draws Screen content to graphics context
- * @param aGc The context to draw with
- * @param aFrame View Finder Frame to be drawn
- */
- void DrawToContext(CBitmapContext& aGc, const CFbsBitmap* aFrame);
-
- /**
- * Creates a colored Autofocus indication icon
- *
- * @since S60 S60 v5.0
- * @param aColor indication color
- * @return TInt Created icon's offset in icons array
- */
- TInt CreateAfIconL( TRgb aColor );
-
- /**
- * Creates a colored autofocus indication icon corner
- *
- * @since S60 S60 v5.0
- * @param aColor indication color
- * @param aFileBitmapId ID of the bitmap in the file
- */
- void CreateAfCornerL( TRgb aColor, TInt aFileBitmapId );
-
- /**
- * Sets size of autofocus indication icon
- *
- * @since S60 S60 v5.0
- * @param aOffset Offset in colored corner icon array
- */
- void SetAfIconSize( TInt aOffset );
-
- /**
- * Draws corners of autofocus indication icon
- *
- * @since S60 S60 v5.0
- * @param aGc Bitmap graphics context
- * @param aOffset Offset in colored corner icon array
- */
- void DrawAf( CBitmapContext& aGc, TInt aOffset ) const;
-
- /**
- * Read nontouch layout
- */
- void NonTouchLayout();
-
- /**
- * Read touch layout
- */
- void TouchLayout();
-
- /**
- * Callback used by timer to blink resolution indicator
- * @since 5.2
- * @param aSelf Pointer to self (container)
- */
- static TInt IndicatorVisible( TAny *aSelf );
-
- /**
- * Draw resolution indicator (for blinking).
- * @since 5.2
- */
- void DrawResolutionIndicator();
-
- // =========================================================================
- // Data
- protected:
-
- // Pointer to the instance of the side pane
- CCamSidePane* iSidePane;
-
- // Pointer to the instance of the zoom pane
- CCamZoomPane* iZoomPane;
-
- // Array of pointer to the resolution indicators
- RPointerArray<CCamIndicator> iResolutionIndicators;
-
- // The current indicator
- TInt iCurrentIndicator;
-
- // The visibility of the location indicator
- TBool iLocationIndicatorVisible;
- CCamLocationIconController* iLocationIconController;
-
- // Is reticule to be displayed or not (for when flashing)
- TBool iShowReticule;
-
- // Whether the current Photo Scene requires a reticule (some scenes do not focus)
- TBool iPhotoSceneUsesReticule;
-
- TBool iNaviPaneActive;
-
- // If set, redraw calls are ignored.
- TBool iDisableRedraws;
-
- // Viewfinder rect.
- TRect iRect;
-
- // Timer used to remove zoom pane after a short delay
- CPeriodic* iZoomTimer;
-
- // Keys to use for detecting zoom in and out key events
- TInt iZoomInKey;
- TInt iZoomOutKey;
-
- // whether we are left or right handed
- TCamHandedness iHandedness;
-
-
- // Reticule location and size
- TRect iReticuleRect;
-
- // Icons and rect for capturing image
- CCamCaptureButtonContainer* iCaptureButtonContainer;
-
- /**
- * Autofocus indication icons array.
- */
- RPointerArray<CFbsBitmap> iAfIcons;
-
- /**
- * Autofocus indication: White ready icon.
- */
- TInt iAfReadyIcon;
-
- /**
- * Autofocus indication: Green focused icon.
- */
- TInt iAfFocusIcon;
-
- /**
- * Autofocus indication: Yellow error icon.
- */
- TInt iAfErrIcon;
-
- /**
- * Autofocus indication icons layout
- */
- RArray<TAknLayoutRect> iLayouts;
-
- /**
- * Autofocus layout
- */
- TSize iAfIconCornerSize;
-
- // Timer used for the flashing of the reticule
- CPeriodic* iReticuleTimer;
-
- // Whether the reticule is visible or not during 'flash' on/off
- TBool iReticuleFlashOn;
-
- // Current state of focus (reflected by reticule)
- TFocusState iFocusState;
-
- // Determines if a stored image should be used in Draw() functions
- TBool iFreezeFrame;
-
- // Determine from PSI if side & zoom pane are overlaid on VF
- TBool iOverlayViewFinder;
-
- // width of the zoom pane
- TInt iZoomPaneWidth;
-
- // The Time Lapse control
- CCamTimeLapseSlider* iTimeLapseSlider;
-
- // Whether the Time Lapse control is visible
- TBool iTimeLapseVisible;
-
- // Layout rect for the Timelapse control
- TAknLayoutRect iTimeLapseLayout;
-
- // Determines if the zoom pane background needs redrawing
- TBool iRedrawPaneBackground;
-
- // Determines if the viewfinder should use an off screen bitmap
- TBool iUseOffScreenBitmap;
-
- // Offscreen drawing members
- CFbsBitmap* iOffScreenBitmap;
- CFbsBitGc* iBitmapGc;
- CFbsBitmapDevice* iBitmapDevice;
-
- // True if this container has received any viewfinder frames
- TBool iReceivedVfFrame;
-
- // True if application is shutting down
- TBool iShuttingDown;
-
- TRect iVFRect;
-
- TRect iVfGridRect;
- MCamVfGridDrawer* iVfGridDrawer;
-
- CCamBatteryPaneController* iBatteryPaneController;
-
- CFbsBitmap* iViewFinderBackup;
-
- // For blinking of resolution indicator
- TBool iBlinkResolutionIndicator;
- TBool iBlinkModeIndicator;
- CPeriodic* iIndBlinkTimer;
- TBool iDrawIndicator;
- TInt iToggleCountdown;
-
- // Startup animation control
- CCamStartupLogo* iStartupLogo;
- // =========================================================================
- };
-
-#endif // CAMPRECAPTURECONTAINERBASE_H
-
-// End of File