diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/inc/cambatterypanecontroller.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/inc/cambatterypanecontroller.h Wed Sep 01 12:30:54 2010 +0100 @@ -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 +#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