--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraapp/generic/inc/CamRecordingIconDecoration.h Thu Jan 07 16:18:56 2010 +0200
@@ -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 <e32base.h>
+#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