diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/inc/CamRecordingIconDecoration.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/inc/CamRecordingIconDecoration.h Wed Sep 01 12:30:54 2010 +0100 @@ -0,0 +1,170 @@ +/* +* 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: Camera UI recording icon decoration* +*/ + + + + +#ifndef CAMRECORDINGICONDECORATION_H +#define CAMRECORDINGICONDECORATION_H + +// INCLUDES +#include +#include "CamObservable.h" +#include "CamControllerObservers.h" + +// FORWARD DECLARATIONS +class MObserver; +class CCamObserverHandler; +class CBitmapContext; +class CFbsBitmap; +class CPeriodic; +class CCamAppController; + +// CLASS DECLARATION +class CCamRecordingIconDecoration : public CBase, + public MCamObservable, + public MCamControllerObserver + { + private: + // The internal recording states used + enum TCamRecordState + { + ECamNotRecording, + ECamRecording, + ECamRecordPaused + }; + + public: + /** + * Symbian OS two-phased constructor + * @since 2.8 + * @param aPosition The postition of the icon + * @param aObserver Any interested observer + * @return New instance of class + */ + static CCamRecordingIconDecoration* NewL( const TRect& aPosition, + CCamAppController& aController ); + + /** + * Destructor + */ + ~CCamRecordingIconDecoration(); + + protected: + /** + * Constructor + */ + CCamRecordingIconDecoration( CCamAppController& aController ); + + /** + * Second-phase constructor + * @param aPosition The postition of the icon + * @param aController Reference to the controller + */ + void ConstructL( const TRect& aPosition ); + + public: // New methods + /** + * Draws the recording icon + * @param aGc The context to use while drawing + * @param aDrawRect Ignored + */ + void Draw(CBitmapContext& aGc, const TRect& aDrawRect); + + /** + * Callback for pause flash timer. + * @since 2.8 + * @param aVideoContainer- the CCamVideoPreCaptureContainer + * @return KErrNone + */ + static TInt PauseFlashCallBack( TAny* aRecordingIconDecorator ); + + /** + * Toggles the paused icon called from PauseFlashCallBack + * @since 2.8 + */ + void TogglePauseIconFlash(); + + private: // New methods + /** + * Changes iRecordState, tells observers to update + * @param aNewState The new state to change to + */ + void ChangeRecordState(TCamRecordState aNewState); + + public: // From MCamObservable + /** + * From MCamObservable + * @param aObserver Observer to register + * @since 3.0 + */ + void RegisterObserverL(MCamObserver* aObserver); + + /** + * From MCamObservable + * @param aObserver Observer to deregister + * @since 3.0 + */ + void DeregisterObserver(MCamObserver* aObserver); + + /** + * From MCamObservable + * @param aEvent Event code to broadcast + * @since 3.0 + */ + void BroadcastEvent(TCamObserverEvent aEvent); + + public: // From MCamControllerObserver + /** + * Handle an event from CCamAppControllerBase. + * @since 2.8 + * @param aEvent the controller event that has occurred + * @param aError any reported error + */ + virtual void HandleControllerEventL( TCamControllerEvent aEvent, + TInt aError ); + + private: // Data + // Handles requests to the MCamObservable interface + CCamObserverHandler* iObserverHandler; + + // Where to put the icon + TPoint iPosition; + TRect iSize; + + // Bitmap and mask for record icon + CFbsBitmap* iRecBitmap; + CFbsBitmap* iRecBitmapMask; + + // Bitmap amd mask for record paused icon + CFbsBitmap* iRecPauseBitmap; + CFbsBitmap* iRecPauseBitmapMask; + + // Current recording state + TCamRecordState iRecordState; + + // Whether to show paused icon (toggled via periodic timer) + TBool iShowPaused; + + // Periodic timer used to toggle paused icon + CPeriodic* iPauseFlashPeriodic; + + // Pointer to the controller + CCamAppController& iController; + }; + + +#endif // CAMRECORDINGICONDECORATION_H