coreapplicationuis/SysAp/Src/sysapbatteryinfocontroller.cpp
branchRCL_3
changeset 63 c2c61fdca848
parent 62 924385140d98
--- 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);
+        }