--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraapp/generic/inc/cambatterypanecontroller.h Thu Jan 07 16:18:56 2010 +0200
@@ -0,0 +1,236 @@
+/*
+* 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: Header file for CCamBatteryPaneController class.
+*
+* Copyright © 2007-2008 Nokia. All rights reserved.
+* This material, including documentation and any related computer
+* programs, is protected by copyright controlled by Nokia. All
+* rights are reserved. Copying, including reproducing, storing,
+* adapting or translating, any or all of this material requires the
+* prior written consent of Nokia. This material also contains
+* confidential information which may not be disclosed to others
+* without the prior written consent of Nokia.
+
+*
+*
+*/
+
+
+#ifndef CAMBATTERYPANECONTROLLER_H
+#define CAMBATTERYPANECONTROLLER_H
+
+// INCLUDES
+
+#include <e32base.h>
+#include "CamPropertyObserver.h" // MPropertyObserver
+
+// CONSTANTS
+
+// Battery strength and animation timer constants.
+const TInt KMinBatteryStrength = 0;
+const TInt KMaxBatteryStrength = 7;
+const TInt KBatteryRechargeTick = 500000;
+
+// FORWARD DECLARATIONS
+
+class CCamBatteryPaneDrawer;
+class CCamPropertyWatcher;
+class CWindowGc;
+class CBitmapContext;
+
+// CLASS DECLARATION
+
+/**
+* Abstract API for battery pane observer.
+* Derived classes, which have subscribed to CCamBatteryPaneController
+* receive notification when the battery pane contents change
+*/
+class MCamBatteryPaneObserver
+ {
+ public:
+ /**
+ * The battery pane contents have changed
+ */
+ virtual void BatteryPaneUpdated() = 0;
+ };
+
+/**
+* Watches changes in battery strength and charge properties and provides
+* animation of recharging. Notifies observer of changes in the battery pane.
+* Handles drawing requests by passing them to owned CCamBatteryPaneDrawer
+* object.
+*/
+class CCamBatteryPaneController: public CBase, public MPropertyObserver
+ {
+
+ public: // Construction and destruction
+ /**
+ * Descructor
+ */
+ ~CCamBatteryPaneController();
+ /**
+ * Two-phased constructor
+ * @param aObserver Battery pane observer
+ * @param aCallbackActive Callback to the observer active
+ * @return Pointer to the created
+ */
+ static CCamBatteryPaneController* NewL(
+ MCamBatteryPaneObserver& aObserver,
+ TBool aCallbackActive );
+
+
+ public: // From MPropertyObserver
+ /**
+ * The value of a watched property has changed
+ * @param aCategory The category of the property
+ * @param aKey the Identifier of the property
+ */
+ void HandlePropertyChangedL( const TUid& aCategory, const TUint aKey );
+
+
+ public: // New functions
+ /**
+ * Pause battery pane controller. With value ETrue, stops listening
+ * to battery pane events, with EFalse reinitializes and starts
+ * listening to the events again.
+ */
+ void Pause( TBool aPause );
+
+ /**
+ * Activate or deactivate callbacks to observer when there
+ * are changes in the battery pane.
+ * @param aActive Callback to observer active
+ */
+ void SetCallbackActive( TBool aActive );
+
+ /**
+ * Set location in the screen, where the battery pane is
+ * to be drawn.
+ * @param aLocation Drawing location
+ */
+ void SetLocation( TPoint aLocation );
+
+ /**
+ * Set battery strength.
+ * @param aStrength Battery strength
+ */
+ void SetBatteryStrength( TInt aStrength );
+
+ /**
+ * Start the recharging animation
+ */
+ void StartRecharging();
+
+ /**
+ * Stop the recharging animation
+ */
+ void StopRecharging();
+
+ /**
+ * Get battery pane's rectangle
+ * @return rectangle
+ */
+ TRect Rect() const;
+
+ /**
+ * Get rectangle of the animated part of battery pane
+ * @return rectangle
+ */
+ TRect AnimationRect() const;
+
+ /**
+ * Draw the battery pane
+ * @param aGc Graphics context
+ */
+ void Draw( CBitmapContext& aGc ) const;
+ //void Draw( CWindowGc& aGc ) const;
+
+ /**
+ * Handle resource change event
+ * @param aType Type of the resource change
+ */
+ void HandleResourceChange( TInt aType );
+
+ protected:
+ /**
+ * Second phase constructor
+ */
+ void ConstructL();
+
+ private:
+ /**
+ * Constructor.
+ * @param aObserver Battery pane observer
+ * @param aCallbackActive Callback to the observer active
+ */
+ CCamBatteryPaneController(
+ MCamBatteryPaneObserver& aObserver,
+ TBool aCallbackActive );
+
+ /**
+ *
+ * @param aThis Pointer to the object owning the ticker
+ */
+ static TInt TickerCallback( TAny* aThis );
+
+ /**
+ * Changes the (charging) battery strenght value as needed to show the next
+ * frame of the animation.
+ */
+ void UpdateRechargeBatteryStrength();
+
+ /**
+ * Notifies observer of changes in the battery pane,
+ * if iCallbackActive is set
+ */
+ void NotifyObserver();
+
+ /**
+ * Read current status of the properties. Set battery level
+ * and start/stop battery recharging animation accordingly.
+ */
+ void ReadCurrentState();
+
+ /**
+ * Start/stop the charging animation, depending on aStatus value
+ * @param aStatus Value of the charging status property
+ */
+ void HandleChargingStatusChange( TInt aStatus );
+
+ private:
+ // Current battery strength
+ TInt iBatteryStrength;
+
+ // Recharging animation status
+ TBool iRecharging;
+ TInt iRechargeBatteryStrength;
+
+ // Object that handles the actual drawing
+ CCamBatteryPaneDrawer* iDrawer;
+
+ // Recharge animation timer
+ CPeriodic* iTicker;
+
+ // Observer of the battery pane changes
+ MCamBatteryPaneObserver& iObserver;
+ TBool iCallbackActive;
+
+ // Property watchers for battery charging and strength
+ CCamPropertyWatcher* iBatteryStrengthWatcher;
+ CCamPropertyWatcher* iBatteryChargingWatcher;
+
+ TBool iPaused;
+ };
+
+#endif