All pastes #487832 Raw Edit

tsdogs

public text v1 · immutable
·published 2007-05-14 17:56 UTC
rendered paste body
void 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;
    }
}