mirror of
https://github.com/arcan1s/awesome-widgets.git
synced 2025-04-24 15:37:23 +00:00
improve battery support
This commit is contained in:
parent
41deb8ef72
commit
aa0a4b417d
@ -1,6 +1,7 @@
|
||||
Ver.2.3.2:
|
||||
* improve quotes support, e.g. fix plasma crash
|
||||
* rewrite main widget to signal-slot update model
|
||||
* improve battery calculation for system which has several batteries
|
||||
|
||||
Ver.2.3.1:
|
||||
- fix bug with no updates from configuration UI
|
||||
|
@ -289,9 +289,10 @@ QStringList AWKeys::dictKeys(const bool sorted)
|
||||
// battery
|
||||
allKeys.append(QString("ac"));
|
||||
QStringList allBatteryDevices = QDir(QString("/sys/class/power_supply"))
|
||||
.entryList(QDir::Dirs | QDir::NoDotAndDotDot,
|
||||
.entryList(QStringList() << QString("BAT*"),
|
||||
QDir::Dirs | QDir::NoDotAndDotDot,
|
||||
QDir::Name);
|
||||
for (int i=allBatteryDevices.filter(QRegExp(QString("BAT.*"))).count()-1; i>=0; i--)
|
||||
for (int i=allBatteryDevices.count()-1; i>=0; i--)
|
||||
allKeys.append(QString("bat%1").arg(i));
|
||||
allKeys.append(QString("bat"));
|
||||
// player
|
||||
|
@ -311,34 +311,36 @@ QVariantMap ExtendedSysMon::getBattery(const QString acpiPath)
|
||||
QVariantMap battery;
|
||||
battery[QString("ac")] = false;
|
||||
battery[QString("bat")] = 0;
|
||||
QFile acFile(acpiPath + QString("/AC/online"));
|
||||
|
||||
// adaptor
|
||||
QFile acFile(QString("%1/AC/online").arg(acpiPath));
|
||||
if (acFile.open(QIODevice::ReadOnly)) {
|
||||
if (QString(acFile.readLine()).trimmed().toInt() == 1)
|
||||
battery[QString("ac")] = true;
|
||||
}
|
||||
acFile.close();
|
||||
|
||||
// batterites
|
||||
QStringList allDevices = QDir(acpiPath).entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name);
|
||||
QStringList batDevices;
|
||||
QRegExp batRegexp = QRegExp(QString("BAT.*"));
|
||||
for (int i=0; i<allDevices.count(); i++)
|
||||
if (allDevices[i].contains(batRegexp))
|
||||
batDevices.append(allDevices[i]);
|
||||
float currentLevel = 0.0;
|
||||
float fullLevel = 0.0;
|
||||
QStringList batDevices = QDir(acpiPath).entryList(QStringList() << QString("BAT*"),
|
||||
QDir::Dirs | QDir::NoDotAndDotDot,
|
||||
QDir::Name);
|
||||
for (int i=0; i<batDevices.count(); i++) {
|
||||
QFile batFile(QString("%1/%2/capacity").arg(acpiPath).arg(batDevices[i]));
|
||||
if (batFile.open(QIODevice::ReadOnly))
|
||||
battery[QString("bat%1").arg(i)] = QString(batFile.readLine()).trimmed().toInt();
|
||||
batFile.close();
|
||||
QFile currentLevelFile(QString("%1/%2/energy_now").arg(acpiPath).arg(batDevices[i]));
|
||||
QFile fullLevelFile(QString("%1/%2/energy_full").arg(acpiPath).arg(batDevices[i]));
|
||||
if ((currentLevelFile.open(QIODevice::ReadOnly)) &&
|
||||
(fullLevelFile.open(QIODevice::ReadOnly))) {
|
||||
float batCurrent = QString(currentLevelFile.readLine()).trimmed().toFloat();
|
||||
float batFull = QString(fullLevelFile.readLine()).trimmed().toFloat();
|
||||
battery[QString("bat%1").arg(i)] = 100 * batCurrent / batFull;
|
||||
currentLevel += batCurrent;
|
||||
fullLevel += batFull;
|
||||
}
|
||||
currentLevelFile.close();
|
||||
fullLevelFile.close();
|
||||
}
|
||||
float number = 0.0;
|
||||
float average = 0.0;
|
||||
for (int i=0; i<battery.keys().count(); i++) {
|
||||
if (battery.keys()[i] == QString("ac")) continue;
|
||||
if (battery.keys()[i] == QString("bat")) continue;
|
||||
average += battery[battery.keys()[i]].toInt();
|
||||
number++;
|
||||
}
|
||||
battery[QString("bat")] = int(average / number);
|
||||
battery[QString("bat")] = 100 * currentLevel / fullLevel;
|
||||
|
||||
return battery;
|
||||
}
|
||||
@ -663,11 +665,8 @@ bool ExtendedSysMon::updateSourceEvent(const QString &source)
|
||||
|
||||
if (source == QString("battery")) {
|
||||
QVariantMap battery = getBattery(configuration[QString("ACPIPATH")]);
|
||||
setData(source, QString("ac"), battery[QString("ac")].toBool());
|
||||
for (int i=0; i<battery.keys().count(); i++) {
|
||||
if (battery.keys()[i] == QString("ac")) continue;
|
||||
setData(source, battery.keys()[i], battery[battery.keys()[i]].toInt());
|
||||
}
|
||||
for (int i=0; i<battery.keys().count(); i++)
|
||||
setData(source, battery.keys()[i], battery[battery.keys()[i]]);
|
||||
} else if (source == QString("custom")) {
|
||||
for (int i=0; i<externalScripts.count(); i++)
|
||||
setData(source, externalScripts[i]->tag(), externalScripts[i]->run());
|
||||
|
Loading…
Reference in New Issue
Block a user