17#include "BatteryMonitor.h"
19BatteryMonitor::BatteryMonitor()
21 QDBusConnection::systemBus().connect(
"org.freedesktop.UPower",
"/org/freedesktop/UPower/devices/DisplayDevice",
"org.freedesktop.DBus.Properties",
"PropertiesChanged",
this, SLOT(propertiesChanged(QString, QVariantMap, QStringList)));
22 m_iface =
new QDBusInterface(
"org.freedesktop.UPower",
"/org/freedesktop/UPower/devices/DisplayDevice",
"org.freedesktop.DBus.Properties", QDBusConnection::systemBus());
25bool BatteryMonitor::hasBattery()
27 QDBusReply<QDBusVariant> reply;
30 reply = m_iface->call(GET, UPOWER_PROPERTIES,
"Type");
31 state = reply.value().variant().toUInt();
33 if (state == ON_BATTERY) {
34 reply = m_iface->call(GET, UPOWER_PROPERTIES,
"PowerSupply");
35 if (reply.value().variant().toBool())
43uint BatteryMonitor::state()
48 QDBusReply<QDBusVariant> reply = m_iface->call(GET, UPOWER_PROPERTIES,
"State");
49 return reply.value().variant().toUInt();
52bool BatteryMonitor::charging()
54 return state() == CHARGING ? true :
false;
57bool BatteryMonitor::isFullyCharged()
59 if (state() == FULLY_CHARGED)
62 QDBusReply<QDBusVariant> reply = m_iface->call(GET, UPOWER_PROPERTIES,
"Percentage");
63 float percentage = reply.value().variant().toFloat();
65 if (percentage == 100.0 && charging())
71qint64 BatteryMonitor::timeToFull()
76 QDBusReply<QDBusVariant> reply = m_iface->call(GET, UPOWER_PROPERTIES,
"TimeToFull");
77 if (reply.isValid() && charging()) {
78 uint value = reply.value().variant().toUInt();
88void BatteryMonitor::propertiesChanged(QString
string, QVariantMap map, QStringList list)
93 if (map.contains(
"State"))
94 Q_EMIT chargingChanged();
96 if (map.contains(
"TimeToFull") && map.contains(
"Percentage") && charging())
97 Q_EMIT timeToFullChanged();
99 if (map.contains(
"State") || map.contains(
"Percentage"))
100 Q_EMIT fullyChargedChanged();