--- a/coreapplicationuis/SysAp/Src/sysapbatteryinfocontroller.cpp Tue Aug 31 15:24:25 2010 +0300
+++ b/coreapplicationuis/SysAp/Src/sysapbatteryinfocontroller.cpp Wed Sep 01 12:24:48 2010 +0100
@@ -19,8 +19,13 @@
#include <e32debug.h>
#include <e32property.h>
#include <StringLoader.h>
+#include <SysAp.rsg>
#include "bsutil.h"
#include <hwrmpowerstatesdkpskeys.h>
+#include <aknappui.h>
+#include <AknCapServerClient.h>
+#include <AknSgcc.h>
+#include "batterypopupcontrol.h"
#include "sysapbatteryinfocontroller.h"
#include "SysAp.hrh"
@@ -38,8 +43,8 @@
: iBsUtil( NULL ),
iCurrentCapacity( KNotInitialized ),
iThresholdCapacity( aThreshold ),
- iBatteryInfoState( EBatteryInfoAboveThreshold )
- // iBatteryPopup( NULL )
+ iBatteryInfoState( EBatteryInfoAboveThreshold ),
+ iBatteryPopup( NULL )
{
// sanity check, fall back to hard coded default value
const TInt min(0);
@@ -87,7 +92,7 @@
{
TRACES( RDebug::Print( _L("CSysApBatteryInfoController::~CSysApBatteryInfoController") ) );
delete iBsUtil;
- // delete iBatteryPopup;
+ delete iBatteryPopup;
}
// ---------------------------------------------------------------------------
@@ -178,12 +183,48 @@
// CSysApBatteryInfoController::ShowBatteryPreviewPopupL
// ---------------------------------------------------------------------------
//
-void CSysApBatteryInfoController::ShowBatteryPreviewPopupL( TInt /* aCapacity */ )
+void CSysApBatteryInfoController::ShowBatteryPreviewPopupL( TInt aCapacity )
{
- // TRACES( RDebug::Print( _L("CSysApBatteryInfoController::ShowBatteryPreviewPopupL: aCapacity=%d"), aCapacity ) );
+ TRACES( RDebug::Print( _L("CSysApBatteryInfoController::ShowBatteryPreviewPopupL: aCapacity=%d"), aCapacity ) );
+
+ delete iBatteryPopup;
+ iBatteryPopup = NULL;
+ HBufC* popupTextBuf = StringLoader::LoadLC( R_QTN_BATTERY_STATUS_POPUP, aCapacity );
+ iBatteryPopup = CBatteryPopupControl::NewL( *popupTextBuf, KNullDesC );
+ CleanupStack::PopAndDestroy( popupTextBuf );
+
+ // switch layout for showing the battery popup
+ CAknAppUi* appUi = static_cast<CAknAppUi*>(CCoeEnv::Static()->AppUi());
+ CEikStatusPane* statusPane = appUi->StatusPane();
- // delete iBatteryPopup;
- // iBatteryPopup = NULL;
- // preview battery capacity
+ TInt currLayout = statusPane->CurrentLayoutResId();
+
+ RAknUiServer* aknSrv = CAknSgcClient::AknSrv();
+ if ( aknSrv )
+ {
+ statusPane->SwitchLayoutL( aknSrv->StatusPaneResourceId() );
+ }
+ // Trap for switching layout back to current.
+ TRAPD( err, iBatteryPopup->ShowPopUpL() );
+
+ if( err )
+ {
+ TRACES( RDebug::Print( _L("CSysApBatteryInfoController::ShowBatteryPreviewPopupL ShowPopUpL() leaved: %d"), err ) );
+ }
+
+ // restore layout
+ statusPane->SwitchLayoutL( currLayout );
+
+ User::LeaveIfError( err );
}
+
+// ---------------------------------------------------------------------------
+// CSysApBatteryInfoController::IsBatteryInfoAboveThreshold
+// ---------------------------------------------------------------------------
+//
+TBool CSysApBatteryInfoController::IsBatteryInfoAboveThreshold() const
+ {
+ TInt capacity = iBsUtil->GetBatteryCapacity();
+ return ((capacity <= iThresholdCapacity ? EBatteryInfoBelowThreshold : EBatteryInfoAboveThreshold) == EBatteryInfoAboveThreshold);
+ }