19#include "BatteryMonitor.h"
21BatteryMonitor::BatteryMonitor()
23 QDBusConnection::systemBus().connect(
"org.freedesktop.UPower",
"/org/freedesktop/UPower/devices/DisplayDevice",
"org.freedesktop.DBus.Properties",
"PropertiesChanged",
this, SLOT(propertiesChanged(QString, QVariantMap, QStringList)));
24 m_iface =
new QDBusInterface(
"org.freedesktop.UPower",
"/org/freedesktop/UPower/devices/DisplayDevice",
"org.freedesktop.DBus.Properties", QDBusConnection::systemBus());
27bool BatteryMonitor::hasBattery()
29 QDBusReply<QDBusVariant> reply;
32 reply = m_iface->call(GET, UPOWER_PROPERTIES,
"Type");
33 state = reply.value().variant().toUInt();
35 if (state == ON_BATTERY) {
36 reply = m_iface->call(GET, UPOWER_PROPERTIES,
"PowerSupply");
37 if (reply.value().variant().toBool())
45uint BatteryMonitor::state()
50 QDBusReply<QDBusVariant> reply = m_iface->call(GET, UPOWER_PROPERTIES,
"State");
51 return reply.value().variant().toUInt();
54bool BatteryMonitor::charging()
56 return state() == CHARGING ? true :
false;
59bool BatteryMonitor::isFullyCharged()
61 if (state() == FULLY_CHARGED)
64 QDBusReply<QDBusVariant> reply = m_iface->call(GET, UPOWER_PROPERTIES,
"Percentage");
65 float percentage = reply.value().variant().toFloat();
67 if (percentage == 100.0 && charging())
73qint64 BatteryMonitor::timeToFull()
78 QDBusReply<QDBusVariant> reply = m_iface->call(GET, UPOWER_PROPERTIES,
"TimeToFull");
79 if (reply.isValid() && charging()) {
80 uint value = reply.value().variant().toUInt();
90void BatteryMonitor::propertiesChanged(QString
string, QVariantMap map, QStringList list)
95 if (map.contains(
"State"))
96 Q_EMIT chargingChanged();
98 if (map.contains(
"TimeToFull") && map.contains(
"Percentage") && charging())
99 Q_EMIT timeToFullChanged();
101 if (map.contains(
"State") || map.contains(
"Percentage"))
102 Q_EMIT fullyChargedChanged();