00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #include "batteryinfoprivate.h"
00040 #include "batteryinfowrapper.h"
00041
00046 BatteryInfoPrivate::BatteryInfoPrivate(BatteryInfoWrapper *wrapper)
00047 : CActive(CActive::EPriorityStandard), q_ptr(wrapper),
00048 iTelephony(NULL), iBatteryInfoV1Pckg(iBatteryInfoV1)
00049 {
00050 CActiveScheduler::Add(this);
00051 }
00052
00056 void BatteryInfoPrivate::RequestBatteryInfo()
00057 {
00058 ASSERT(!IsActive());
00059 int err = CreateCTelephony();
00060 if ( err )
00061 {
00062 emit (q_ptr->errorOccured(err));
00063 }
00064 else
00065 {
00066 iTelephony->GetBatteryInfo(iStatus, iBatteryInfoV1Pckg);
00067 SetActive();
00068 }
00069 }
00070
00076 int BatteryInfoPrivate::CreateCTelephony()
00077 {
00078 int err = 0;
00079 if( !iTelephony )
00080 {
00081 TRAP(err, iTelephony = CTelephony::NewL());
00082 }
00083 return err;
00084 }
00085
00086
00090 void BatteryInfoPrivate::RunL()
00091 {
00092 CTelephony::TBatteryInfoV1 BatteryInfo = iBatteryInfoV1;
00093
00094 if( iStatus == KErrNone ) {
00095
00096 iTelephony->NotifyChange(iStatus, CTelephony::EBatteryInfoChange, iBatteryInfoV1Pckg );
00097 QString text = QString::number(iBatteryInfoV1.iChargeLevel);
00098
00099 emit (q_ptr->batteryInfoUpdated(text));
00100 } else {
00101
00102 CTelephony::TBatteryStatus batteryStatus = BatteryInfo.iStatus;
00103 switch (batteryStatus)
00104 {
00105 case CTelephony::EPowerStatusUnknown:
00106 emit (q_ptr->errorOccured(CTelephony::EPowerStatusUnknown));
00107 break;
00108 case CTelephony::EPoweredByBattery:
00109 emit (q_ptr->errorOccured(CTelephony::EPoweredByBattery));
00110 break;
00111 case CTelephony::EBatteryConnectedButExternallyPowered:
00112 emit (q_ptr->errorOccured(CTelephony::EBatteryConnectedButExternallyPowered));
00113 break;
00114 case CTelephony::ENoBatteryConnected:
00115 emit (q_ptr->errorOccured(CTelephony::ENoBatteryConnected));
00116 break;
00117 case CTelephony::EPowerFault:
00118 emit (q_ptr->errorOccured(CTelephony::EPowerFault));
00119 break;
00120 default:
00121 emit (q_ptr->errorOccured(iStatus.Int()));
00122 }
00123 }
00124 }
00125
00129 void BatteryInfoPrivate::DoCancel()
00130 {
00131
00132 iTelephony->CancelAsync(CTelephony::EBatteryInfoChangeCancel);
00133 }