1#include "BatteryMonitor.h"
3BatteryMonitor::BatteryMonitor()
5 QDBusConnection::systemBus().connect(
"org.freedesktop.UPower",
"/org/freedesktop/UPower/devices/DisplayDevice",
"org.freedesktop.DBus.Properties",
"PropertiesChanged",
this, SLOT(propertiesChanged(QString, QVariantMap, QStringList)));
6 m_iface =
new QDBusInterface(
"org.freedesktop.UPower",
"/org/freedesktop/UPower/devices/DisplayDevice",
"org.freedesktop.DBus.Properties", QDBusConnection::systemBus());
9bool BatteryMonitor::hasBattery()
11 QDBusReply<QDBusVariant> reply;
14 reply = m_iface->call(GET, UPOWER_PROPERTIES,
"Type");
15 state = reply.value().variant().toUInt();
17 if (state == ON_BATTERY) {
18 reply = m_iface->call(GET, UPOWER_PROPERTIES,
"PowerSupply");
19 if (reply.value().variant().toBool())
27uint BatteryMonitor::state()
32 QDBusReply<QDBusVariant> reply = m_iface->call(GET, UPOWER_PROPERTIES,
"State");
33 return reply.value().variant().toUInt();
36bool BatteryMonitor::charging()
38 return state() == CHARGING ? true :
false;
41bool BatteryMonitor::isFullyCharged()
43 if (state() == FULLY_CHARGED)
46 QDBusReply<QDBusVariant> reply = m_iface->call(GET, UPOWER_PROPERTIES,
"Percentage");
47 float percentage = reply.value().variant().toFloat();
49 if (percentage == 100.0 && charging())
55qint64 BatteryMonitor::timeToFull()
60 QDBusReply<QDBusVariant> reply = m_iface->call(GET, UPOWER_PROPERTIES,
"TimeToFull");
61 if (reply.isValid() && charging()) {
62 uint value = reply.value().variant().toUInt();
72void BatteryMonitor::propertiesChanged(QString
string, QVariantMap map, QStringList list)
77 if (map.contains(
"State"))
78 Q_EMIT chargingChanged();
80 if (map.contains(
"TimeToFull") && map.contains(
"Percentage") && charging())
81 Q_EMIT timeToFullChanged();
83 if (map.contains(
"State") || map.contains(
"Percentage"))
84 Q_EMIT fullyChargedChanged();