18#include <QDBusConnection>
30 m_nmIface =
new QDBusInterface(
"org.freedesktop.NetworkManager",
"/org/freedesktop/NetworkManager",
"org.freedesktop.NetworkManager",
31 QDBusConnection::systemBus(),
this);
33 QDBusConnection::systemBus().connect(
"org.freedesktop.NetworkManager",
"/org/freedesktop/NetworkManager",
"org.freedesktop.NetworkManager",
"PropertiesChanged",
34 this, SLOT(onNMPropertiesChanged(QVariantMap)));
37void Status::onNMPropertiesChanged(
const QVariantMap &changedProps)
39 if (changedProps.contains(
"State") || changedProps.contains(
"Connectivity")) {
40 Q_EMIT onlineChanged();
41 Q_EMIT networkIconChanged();
44 if (changedProps.contains(
"PrimaryConnection") || changedProps.contains(
"SpecificObject") || changedProps.contains(
"Strength")) {
45 Q_EMIT networkIconChanged();
49bool Status::online()
const
51 if (!m_nmIface->isValid())
54 return m_nmIface->property(
"State").toUInt() == 70;
57QString Status::networkIcon()
59 QString iconName = QStringLiteral(
"nm-no-connection");
65 const QString primaryConn = m_nmIface->property(
"PrimaryConnection").value<QDBusObjectPath>().path();
66 const QString primaryConnType = m_nmIface->property(
"PrimaryConnectionType").toString();
68 if (primaryConn.isEmpty()) {
69 qWarning() <<
"Empty primary connection";
73 if (primaryConnType ==
"802-11-wireless") {
74 QDBusInterface activeConn(
"org.freedesktop.NetworkManager", primaryConn,
"org.freedesktop.NetworkManager.Connection.Active", QDBusConnection::systemBus());
76 if (activeConn.isValid()) {
77 const QString apPath = activeConn.property(
"SpecificObject").value<QDBusObjectPath>().path();
79 if (apPath.isEmpty()) {
80 qWarning() <<
"No AP path";
84 QDBusConnection::systemBus().connect(
"org.freedesktop.NetworkManager", primaryConn,
"org.freedesktop.NetworkManager.Connection.Active",
"PropertiesChanged",
85 this, SLOT(onNMPropertiesChanged(QVariantMap)));
87 QDBusInterface ap(
"org.freedesktop.NetworkManager", apPath,
"org.freedesktop.NetworkManager.AccessPoint", QDBusConnection::systemBus());
90 qWarning() <<
"Invalid AP";
94 QDBusConnection::systemBus().connect(
"org.freedesktop.NetworkManager", apPath,
"org.freedesktop.NetworkManager.AccessPoint",
"PropertiesChanged",
95 this, SLOT(onNMPropertiesChanged(QVariantMap)));
97 const uint strength = ap.property(
"Strength").toUInt();
98 const uint flags = ap.property(
"Flags").toUInt();
101 iconName =
"nm-signal-00";
102 }
else if (strength <= 25) {
103 iconName =
"nm-signal-25";
104 }
else if (strength <= 50) {
105 iconName =
"nm-signal-50";
106 }
else if (strength <= 75) {
107 iconName =
"nm-signal-75";
108 }
else if (strength <= 100) {
109 iconName =
"nm-signal-100";
113 iconName +=
"-secure";
121void Status::initUPower()
123 m_upowerIface =
new QDBusInterface(
"org.freedesktop.UPower",
"/org/freedesktop/UPower/devices/DisplayDevice",
"org.freedesktop.UPower.Device",
124 QDBusConnection::systemBus(),
this);
125 QDBusConnection::systemBus().connect(
"org.freedesktop.UPower",
"/org/freedesktop/UPower/devices/DisplayDevice",
"org.freedesktop.DBus.Properties",
126 "PropertiesChanged",
this, SLOT(onUPowerPropertiesChanged(QString,QVariantMap,QStringList)));
129void Status::onUPowerPropertiesChanged(
const QString &iface,
const QVariantMap &changedProps,
const QStringList &invalidatedProps)
132 Q_UNUSED(invalidatedProps)
134 if (changedProps.contains(
"IconName")) {
135 Q_EMIT batteryIconChanged();
139QString Status::batteryIcon()
const
141 const QString iconName = m_upowerIface->property(
"IconName").toString();