diff -r 8b2d6d0384b0 -r d9aefe59d544 camerauis/cameraapp/generic/src/cambatterypanecontroller.cpp --- a/camerauis/cameraapp/generic/src/cambatterypanecontroller.cpp Tue Feb 02 00:01:39 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,466 +0,0 @@ -/* -* Copyright (c) 2007-2009 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: Implemantation 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. - -* -* -*/ - - -#include "cambatterypanecontroller.h" - -#include -#include // RProperty -#include // P&S keys -#include // KEikColorResourceChange -#include // KAknsMessageSkinChange - -#include "cambatterypanedrawer.h" -#include "CamPropertyWatcher.h" -#include "CamUtility.h" -#include "CamAppUi.h" - - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::CCamBatteryPaneController -// --------------------------------------------------------------------------- -// -CCamBatteryPaneController::CCamBatteryPaneController( - MCamBatteryPaneObserver& aObserver, TBool aCallbackActive ) : - iObserver( aObserver ), iCallbackActive( aCallbackActive ) - { - } - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::~CCamBatteryPaneController -// --------------------------------------------------------------------------- -// -CCamBatteryPaneController::~CCamBatteryPaneController() - { - PRINT ( _L("Camera => ~CCamBatteryPaneController") ); - - if (iTicker) - { - iTicker->Cancel(); - } - delete iTicker; - delete iDrawer; - delete iBatteryStrengthWatcher; - delete iBatteryChargingWatcher; - - PRINT ( _L("Camera <= ~CCamBatteryPaneController") ); - } - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::NewL -// --------------------------------------------------------------------------- -// -CCamBatteryPaneController* CCamBatteryPaneController::NewL( - MCamBatteryPaneObserver& aObserver, - TBool aCallbackActive ) - { - PRINT ( _L("Camera => CCamBatteryPaneController::NewL") ); - - CCamBatteryPaneController* self = new (ELeave) CCamBatteryPaneController( - aObserver, aCallbackActive ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); // self - PRINT ( _L("Camera <= CCamBatteryPaneController::NewL") ); - return self; - } - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::ConstructL -// --------------------------------------------------------------------------- -// -void CCamBatteryPaneController::ConstructL() - { - PRINT ( _L("Camera => CCamBatteryPaneController::ConstructL") ); - - iDrawer = CCamBatteryPaneDrawer::NewL(); - iTicker = CPeriodic::NewL( CActive::EPriorityHigh ); - - // Construct property watchers for battery level and charging status - iBatteryStrengthWatcher = CCamPropertyWatcher::NewL( *this, KPSUidHWRMPowerState, KHWRMBatteryLevel ); - iBatteryChargingWatcher = CCamPropertyWatcher::NewL( *this, KPSUidHWRMPowerState, KHWRMChargingStatus ); - - // Subscribe to the properties - iBatteryStrengthWatcher->Subscribe(); - iBatteryChargingWatcher->Subscribe(); - - // Read initial values for battery level and charging status - ReadCurrentState(); - - PRINT ( _L( "Camera <= CCamBatteryPaneController::ConstructL" ) ); - } - - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::Pause -// --------------------------------------------------------------------------- -// -void CCamBatteryPaneController::Pause( TBool aPause ) - { - PRINT1 ( _L("Camera => CCamBatteryPaneController::Pause( %d)"), aPause ); - if( aPause ) - { - // Pause battery pane controller - if( !iPaused ) - { - // Prevent callbacks - TBool oldCbState = iCallbackActive; - iCallbackActive = EFalse; - // Stop recharging - if( iRecharging ) - { - StopRecharging(); - } - // Cancel notifications of battery events - iBatteryStrengthWatcher->Cancel(); - iBatteryChargingWatcher->Cancel(); - iPaused = ETrue; - // Restore callback state - iCallbackActive = oldCbState; - } - } - else - { - // Restart battery pane controller - if( iPaused ) - { - // Re-subscribe to battery events - iBatteryStrengthWatcher->Subscribe(); - iBatteryChargingWatcher->Subscribe(); - ReadCurrentState(); - iPaused = EFalse; - } - } - PRINT( _L("Camera <= CCamBatteryPaneController::Pause") ); - } - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::SetCallbackActive -// --------------------------------------------------------------------------- -// -void CCamBatteryPaneController::SetCallbackActive( TBool aActive ) - { - iCallbackActive = aActive; - } - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::SetBatteryStrength -// --------------------------------------------------------------------------- -// -void CCamBatteryPaneController::SetBatteryStrength( TInt aStrength ) - { - PRINT( _L("Camera => CCamBatteryPaneController::SetBatteryStrength") ); - - // Drawer uses battery strength for indexing a table, so make - // sure it stays within valid boundaries - if( aStrength > KMaxBatteryStrength ) - { - iBatteryStrength = KMaxBatteryStrength; - } - else if( aStrength < KMinBatteryStrength ) - { - iBatteryStrength = KMinBatteryStrength; - } - else - { - iBatteryStrength = aStrength; - } - - if( !iRecharging ) - { - iDrawer->SetBatteryStrength( iBatteryStrength ); - NotifyObserver(); - } - - PRINT( _L("Camera <= CCamBatteryPaneController::SetBatteryStrength") ); - } - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::SetLocation -// --------------------------------------------------------------------------- -// -void CCamBatteryPaneController::SetLocation( TPoint aLocation ) - { - iDrawer->SetLocation( aLocation ); - } - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::Rect -// --------------------------------------------------------------------------- -// -TRect CCamBatteryPaneController::Rect() const - { - return iDrawer->Rect(); - } - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::Draw -// --------------------------------------------------------------------------- -// -void CCamBatteryPaneController::Draw( CBitmapContext& aGc ) const -//void CCamBatteryPaneController::Draw( CWindowGc& aGc ) const - { - CCamAppUi* appUi = static_cast(CEikonEnv::Static()->AppUi()); - - // When battery recharge animation runs over, indicator needs clearing - // PostCap view has redraw functions of its own, so it doesn't need this - if ( iRechargeBatteryStrength == 0 && - iRecharging && - !appUi->IsBurstEnabled() && - appUi->CurrentViewState() != ECamViewStatePostCapture && - !(appUi->IsSecondCameraEnabled() && appUi->IsQwerty2ndCamera() ) ) - { - iDrawer->ClearBattery( aGc ); - } - - iDrawer->Draw( aGc ); - } - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::StartRecharging -// --------------------------------------------------------------------------- -// -void CCamBatteryPaneController::StartRecharging() - { - PRINT( _L("Camera => CCamBatteryPaneController::StartRecharging") ); - - // Stop current timer - iTicker->Cancel(); - - // Initialize - iRecharging = ETrue; - iRechargeBatteryStrength = KMinBatteryStrength; - - // Give initial strength value to drawer and notify observer - iDrawer->SetBatteryStrength( iRechargeBatteryStrength ); - NotifyObserver(); - - // Start the animation - iTicker->Start( KBatteryRechargeTick, KBatteryRechargeTick, TCallBack(TickerCallback, this) ); - - PRINT( _L("Camera => CCamBatteryPaneController::StartRecharging") ); - } - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::StopRecharging -// --------------------------------------------------------------------------- -// -void CCamBatteryPaneController::StopRecharging() - { - PRINT( _L("Camera => CCamBatteryPaneController::StopRecharging") ); - - // Stop the timer and give the original battery - // strength to drawer class - iTicker->Cancel(); - iRecharging = EFalse; - iDrawer->SetBatteryStrength( iBatteryStrength ); - NotifyObserver(); - - PRINT( _L("Camera <= CCamBatteryPaneController::StopRecharging") ); - } - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::NotifyObserver -// --------------------------------------------------------------------------- -// -void CCamBatteryPaneController::NotifyObserver() - { - if( iCallbackActive ) - { - iObserver.BatteryPaneUpdated(); - } - } - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::UpdateRechargeBatteryStrength -// --------------------------------------------------------------------------- -// -void CCamBatteryPaneController::UpdateRechargeBatteryStrength() - { - PRINT( _L("Camera => CCamBatteryPaneController::UpdateRechargeBatteryStrength") ); - - iRechargeBatteryStrength++; - if( iRechargeBatteryStrength > KMaxBatteryStrength ) - { - iRechargeBatteryStrength = KMinBatteryStrength; - } - iDrawer->SetBatteryStrength( iRechargeBatteryStrength ); - - NotifyObserver(); - - PRINT( _L("Camera <= CCamBatteryPaneController::UpdateRechargeBatteryStrength") ); - } - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::TickerCallback -// --------------------------------------------------------------------------- -// -TInt CCamBatteryPaneController::TickerCallback( TAny* aThis ) - { - CCamBatteryPaneController* self = static_cast( aThis ); - if( self ) - { - self->UpdateRechargeBatteryStrength(); - } - return ETrue; - } - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::ReadCurrentState -// --------------------------------------------------------------------------- -// -void CCamBatteryPaneController::ReadCurrentState() - { - PRINT( _L("Camera => CCamBatteryPaneController::ReadCurrentState") ); - - TInt batteryStrength = 0; - TInt chargingStatus = 0; - TInt err = KErrNone; - - // Disable callbacks to avoid two separate callbacks for charging - // status and battery level - TBool callbackActive = iCallbackActive; - iCallbackActive = EFalse; - - // Get the battery strength - err = iBatteryStrengthWatcher->Get( batteryStrength ); - if( KErrNone == err && -1 != batteryStrength ) - { - // We got an acceptable value - SetBatteryStrength( batteryStrength ); - } - else - { - // Default to lowest value - SetBatteryStrength( KMinBatteryStrength ); - } - - // Get current recharging state - err = iBatteryChargingWatcher->Get( chargingStatus ); - if ( KErrNone == err ) - { - HandleChargingStatusChange( chargingStatus ); - } - else - { - StopRecharging(); - } - - // Restore callbacks and notify the observer - iCallbackActive = callbackActive; - NotifyObserver(); - - PRINT( _L("Camera <= CCamBatteryPaneController::ReadCurrentState") ); - } - - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::HandleChargingStatusChange -// --------------------------------------------------------------------------- -// -void CCamBatteryPaneController::HandleChargingStatusChange( TInt aStatus ) - { - PRINT( _L("Camera => CCamBatteryPaneController::HandleChargingStatusChange") ); - - if( EChargingStatusCharging == aStatus || - EChargingStatusAlmostComplete == aStatus || - EChargingStatusChargingContinued == aStatus ) - { - // The battery is being recharged - - if( !iRecharging ) - { - // Start the recharging animation - StartRecharging(); - } - } - else - { - // The battery is currently not being recharged - if( iRecharging ) - { - // Stop the recharging animation - StopRecharging(); - } - } - - PRINT( _L("Camera <= CCamBatteryPaneController::HandleChargingStatusChange") ); - } - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::HandlePropertyChangedL -// --------------------------------------------------------------------------- -// -void CCamBatteryPaneController::HandlePropertyChangedL( const TUid& aCategory, const TUint aKey ) - { - PRINT( _L("Camera => CCamBatteryPaneController::HandlePropertyChangedL") ); - - TInt value; - if( KPSUidHWRMPowerState == aCategory && KHWRMBatteryLevel == aKey ) - { - TInt err = iBatteryStrengthWatcher->Get( value ); - if( KErrNone == err && -1 != value ) - { - SetBatteryStrength( value ); - } - } - else if( KPSUidHWRMPowerState == aCategory && KHWRMChargingStatus == aKey ) - { - TInt err = iBatteryChargingWatcher->Get( value ); - if( KErrNone == err && -1 != value ) - { - HandleChargingStatusChange( value ); - } - } - else - { - // Do nothing. For Lint. - } - - PRINT( _L("Camera <= CCamBatteryPaneController::HandlePropertyChangedL") ); - } - -// --------------------------------------------------------------------------- -// CCamBatteryPaneController::HandleResourceChange -// --------------------------------------------------------------------------- -// -void CCamBatteryPaneController::HandleResourceChange( TInt aType ) - { - PRINT( _L("Camera => CCamBatteryPaneController::HandleResourceChange") ); - - if( KAknsMessageSkinChange == aType || - KEikColorResourceChange == aType ) - { - iDrawer->HandleResourceChange( aType ); - } - - PRINT( _L("Camera <= CCamBatteryPaneController::HandleResourceChange") ); - } - -// End of file -