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:
|
Ver.2.3.2:
|
||||||
* improve quotes support, e.g. fix plasma crash
|
* improve quotes support, e.g. fix plasma crash
|
||||||
* rewrite main widget to signal-slot update model
|
* rewrite main widget to signal-slot update model
|
||||||
|
* improve battery calculation for system which has several batteries
|
||||||
|
|
||||||
Ver.2.3.1:
|
Ver.2.3.1:
|
||||||
- fix bug with no updates from configuration UI
|
- fix bug with no updates from configuration UI
|
||||||
|
@ -289,9 +289,10 @@ QStringList AWKeys::dictKeys(const bool sorted)
|
|||||||
// battery
|
// battery
|
||||||
allKeys.append(QString("ac"));
|
allKeys.append(QString("ac"));
|
||||||
QStringList allBatteryDevices = QDir(QString("/sys/class/power_supply"))
|
QStringList allBatteryDevices = QDir(QString("/sys/class/power_supply"))
|
||||||
.entryList(QDir::Dirs | QDir::NoDotAndDotDot,
|
.entryList(QStringList() << QString("BAT*"),
|
||||||
|
QDir::Dirs | QDir::NoDotAndDotDot,
|
||||||
QDir::Name);
|
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%1").arg(i));
|
||||||
allKeys.append(QString("bat"));
|
allKeys.append(QString("bat"));
|
||||||
// player
|
// player
|
||||||
|
@ -311,34 +311,36 @@ QVariantMap ExtendedSysMon::getBattery(const QString acpiPath)
|
|||||||
QVariantMap battery;
|
QVariantMap battery;
|
||||||
battery[QString("ac")] = false;
|
battery[QString("ac")] = false;
|
||||||
battery[QString("bat")] = 0;
|
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 (acFile.open(QIODevice::ReadOnly)) {
|
||||||
if (QString(acFile.readLine()).trimmed().toInt() == 1)
|
if (QString(acFile.readLine()).trimmed().toInt() == 1)
|
||||||
battery[QString("ac")] = true;
|
battery[QString("ac")] = true;
|
||||||
}
|
}
|
||||||
acFile.close();
|
acFile.close();
|
||||||
|
|
||||||
// batterites
|
// batterites
|
||||||
QStringList allDevices = QDir(acpiPath).entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name);
|
float currentLevel = 0.0;
|
||||||
QStringList batDevices;
|
float fullLevel = 0.0;
|
||||||
QRegExp batRegexp = QRegExp(QString("BAT.*"));
|
QStringList batDevices = QDir(acpiPath).entryList(QStringList() << QString("BAT*"),
|
||||||
for (int i=0; i<allDevices.count(); i++)
|
QDir::Dirs | QDir::NoDotAndDotDot,
|
||||||
if (allDevices[i].contains(batRegexp))
|
QDir::Name);
|
||||||
batDevices.append(allDevices[i]);
|
|
||||||
for (int i=0; i<batDevices.count(); i++) {
|
for (int i=0; i<batDevices.count(); i++) {
|
||||||
QFile batFile(QString("%1/%2/capacity").arg(acpiPath).arg(batDevices[i]));
|
QFile currentLevelFile(QString("%1/%2/energy_now").arg(acpiPath).arg(batDevices[i]));
|
||||||
if (batFile.open(QIODevice::ReadOnly))
|
QFile fullLevelFile(QString("%1/%2/energy_full").arg(acpiPath).arg(batDevices[i]));
|
||||||
battery[QString("bat%1").arg(i)] = QString(batFile.readLine()).trimmed().toInt();
|
if ((currentLevelFile.open(QIODevice::ReadOnly)) &&
|
||||||
batFile.close();
|
(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;
|
battery[QString("bat")] = 100 * currentLevel / fullLevel;
|
||||||
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);
|
|
||||||
|
|
||||||
return battery;
|
return battery;
|
||||||
}
|
}
|
||||||
@ -663,11 +665,8 @@ bool ExtendedSysMon::updateSourceEvent(const QString &source)
|
|||||||
|
|
||||||
if (source == QString("battery")) {
|
if (source == QString("battery")) {
|
||||||
QVariantMap battery = getBattery(configuration[QString("ACPIPATH")]);
|
QVariantMap battery = getBattery(configuration[QString("ACPIPATH")]);
|
||||||
setData(source, QString("ac"), battery[QString("ac")].toBool());
|
for (int i=0; i<battery.keys().count(); i++)
|
||||||
for (int i=0; i<battery.keys().count(); i++) {
|
setData(source, battery.keys()[i], battery[battery.keys()[i]]);
|
||||||
if (battery.keys()[i] == QString("ac")) continue;
|
|
||||||
setData(source, battery.keys()[i], battery[battery.keys()[i]].toInt());
|
|
||||||
}
|
|
||||||
} else if (source == QString("custom")) {
|
} else if (source == QString("custom")) {
|
||||||
for (int i=0; i<externalScripts.count(); i++)
|
for (int i=0; i<externalScripts.count(); i++)
|
||||||
setData(source, externalScripts[i]->tag(), externalScripts[i]->run());
|
setData(source, externalScripts[i]->tag(), externalScripts[i]->run());
|
||||||
|
Loading…
Reference in New Issue
Block a user