rendered paste bodyvoid QPowerStatusManager::getStatus()
{
// ac = AC line status
// bs = battery status
// percentRemain = remaining battery life as percent
// secsRe/main = remaining battery life in time units
double batteryLevel = 0;
double batteryFull = 1490000;
bool charging = false;
//QValueSpaceObject vsoBattery("/Accessories/Battery");
// List backlight class subdirectories
QDir iClassBattery( CLASS_BATTERY );
QStringList iDirectory( iClassBattery.entryList() );
QDir iDeviceBattery;
// if a directory is set then battery module is loaded
if (iDirectory.count()==0)
exit;
QString szPath( CLASS_BATTERY );
// Search Main battery
szPath.append( "main-battery/" );
iDeviceBattery.setPath( szPath );
// if exists there is a battery directory
if (iDeviceBattery.exists("status")) {
//Read and return value
QFile file;
QString szFile( CLASS_BATTERY );
szFile.append( "main-battery/status" );
file.setFileName( szFile );
file.open( QIODevice::ReadOnly | QIODevice::Text);
charging = !QString( file.readLine()).contains("Not");
file.close();
}
//x/ if exists there is a battery directory
if (iDeviceBattery.exists("charge_now")) {
//Read and return value
QFile file;
QString szFile( CLASS_BATTERY );
szFile.append( "main-battery/charge_now" );
file.setFileName( szFile );
file.open( QIODevice::ReadOnly | QIODevice::Text);
batteryLevel = QString(file.readLine()).toDouble();
file.close();
}
if (iDeviceBattery.exists("charge_full")) {
QFile file;
QString szFile( CLASS_BATTERY );
szFile.append( "main-battery/charge_full" );
file.setFileName( szFile );
file.open( QIODevice::ReadOnly | QIODevice::Text);
batteryFull = QString(file.readLine()).toDouble();
file.close();
}
if (batteryLevel >= 0) {
if (batteryLevel>batteryFull)
batteryLevel = batteryFull;
ps->percentRemain = (int)(batteryLevel*100) / batteryFull;
if (charging)
ps->ac = QPowerStatus::Online;
else
ps->ac = QPowerStatus::Offline;
if (charging)
ps->bs = QPowerStatus::Charging;
else if (ps->percentRemain <= 10)
ps->bs = QPowerStatus::Critical;
else if (ps->percentRemain <= 30)
ps->bs = QPowerStatus::VeryLow;
else if (ps->percentRemain <= 50)
ps->bs = QPowerStatus::Low;
else if (ps->percentRemain <= 80)
ps->bs = QPowerStatus::High;
else if (ps->percentRemain >= 81)
ps->bs = QPowerStatus::High;
} else {
ps->bs = QPowerStatus::NotPresent;
ps->percentRemain = -1;
ps->secsRemain = -1;
ps->ac = QPowerStatus::Unknown;
ps->percentAccurate = false;
}
}