26 #include <QDBusConnection>
27 #include <QDBusInterface>
28 #include <QDBusPendingCall>
29 #include <QDBusPendingReply>
34 namespace MediaHubService {
56 m_isWarningActive(false),
59 QDBusConnection connection = QDBusConnection::sessionBus();
60 auto iface =
new QDBusInterface(QStringLiteral(
"org.ayatana.indicator.power"),
61 QStringLiteral(
"/org/ayatana/indicator/power/Battery"),
62 QStringLiteral(
"org.freedesktop.DBus.Properties"),
64 iface->connection().connect(
68 QStringLiteral(
"PropertiesChanged"),
70 SLOT(onPropertiesChanged(QString, QVariantMap, QStringList)));
72 QDBusPendingCall call =
73 iface->asyncCall(QStringLiteral(
"GetAll"),
74 QStringLiteral(
"org.ayatana.indicator.power.Battery"));
75 auto *watcher =
new QDBusPendingCallWatcher(call);
76 QObject::connect(watcher, &QDBusPendingCallWatcher::finished,
77 this, [
this](QDBusPendingCallWatcher *watcher) {
78 QDBusPendingReply<QVariantMap> reply = *watcher;
79 updateProperties(reply.value());
80 watcher->deleteLater();
86 const QVariantMap &changed,
87 const QStringList &invalid)
92 updateProperties(changed);
99 auto i = properties.find(QStringLiteral(
"PowerLevel"));
100 if (i != properties.end()) {
101 auto oldPowerLevel = m_powerLevel;
102 m_powerLevel = powerLevelFromString(i->toString());
103 if (m_powerLevel != oldPowerLevel) {
104 Q_EMIT q->levelChanged();
108 i = properties.find(QStringLiteral(
"IsWarning"));
109 if (i != properties.end()) {
110 bool oldIsWarningActive = m_isWarningActive;
111 m_isWarningActive = i->toBool();
112 if (m_isWarningActive != oldIsWarningActive) {
113 Q_EMIT q->isWarningActiveChanged();
121 bool m_isWarningActive;
138 return d->m_powerLevel;
144 return d->m_isWarningActive;
147 #include "battery_observer.moc"