File Use-standard-interface-for-PropertiesChanged-signal-for-NM-1.4.0.patch of Package libNetworkManagerQt4

From 7671424efb02e7194a18a4913da16bc2044a4cb9 Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrulich@redhat.com>
Date: Tue, 6 Sep 2016 16:16:28 +0200
Subject: [PATCH] Use standard o.f.DBus.Properties interface for
 PropertiesChanged signal for NM 1.4.0+

CCBUG:367938
REVIEW:128843
---
 src/accesspoint.cpp      | 13 +++++++++++++
 src/accesspoint_p.h      |  1 +
 src/activeconnection.cpp | 22 ++++++++++++++++++++--
 src/activeconnection_p.h |  4 +++-
 src/adsldevice.cpp       |  5 +++++
 src/bluetoothdevice.cpp  |  5 +++++
 src/bonddevice.cpp       |  5 +++++
 src/bridgedevice.cpp     |  5 +++++
 src/connection.cpp       | 13 +++++++++++++
 src/connection_p.h       |  1 +
 src/device.cpp           |  9 +++++++++
 src/device_p.h           |  1 +
 src/dhcp4config.cpp      | 14 +++++++++++++-
 src/dhcp4config_p.h      |  1 +
 src/dhcp6config.cpp      | 15 ++++++++++++++-
 src/dhcp6config_p.h      |  1 +
 src/genericdevice.cpp    |  5 +++++
 src/gredevice.cpp        |  5 +++++
 src/infinibanddevice.cpp |  5 +++++
 src/macvlandevice.cpp    |  5 +++++
 src/manager.cpp          | 14 +++++++++++++-
 src/manager_p.h          |  1 +
 src/modemdevice.cpp      | 10 ++++++++++
 src/olpcmeshdevice.cpp   |  5 +++++
 src/settings.cpp         | 13 +++++++++++++
 src/settings_p.h         |  1 +
 src/teamdevice.cpp       |  5 +++++
 src/tundevice.cpp        |  5 +++++
 src/vethdevice.cpp       |  5 +++++
 src/vlandevice.cpp       |  5 +++++
 src/vpnconnection.cpp    | 16 ++++++++++++++++
 src/vpnconnection_p.h    |  1 +
 src/wimaxdevice.cpp      |  5 +++++
 src/wireddevice.cpp      |  5 +++++
 src/wirelessdevice.cpp   |  5 +++++
 35 files changed, 225 insertions(+), 6 deletions(-)

diff --git a/accesspoint.cpp b/accesspoint.cpp
index d1abe316..60a284bd 100644
--- a/accesspoint.cpp
+++ b/accesspoint.cpp
@@ -89,8 +91,13 @@ NetworkManager::AccessPoint::AccessPoint(const QString &path, QObject *parent)
         d->maxBitRate = d->iface.maxBitrate();
         // make this a static on WirelessNetworkInterface
         d->mode = convertOperationMode(d->iface.mode());
+#if NM_CHECK_VERSION(1, 4, 0)
+        QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, d->uni, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
         connect(&d->iface, SIGNAL(PropertiesChanged(QVariantMap)),
                 this, SLOT(propertiesChanged(QVariantMap)));
+#endif
     }
 }
 
@@ -188,6 +195,14 @@ NetworkManager::AccessPoint::OperationMode NetworkManager::AccessPoint::convertO
     return ourMode;
 }
 
+void NetworkManager::AccessPoint::dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties)
+{
+    Q_UNUSED(invalidatedProperties);
+    if (interfaceName == QLatin1String("org.freedesktop.NetworkManager.AccessPoint")) {
+        propertiesChanged(properties);
+    }
+}
+
 void NetworkManager::AccessPoint::propertiesChanged(const QVariantMap &properties)
 {
     Q_D(AccessPoint);
diff --git a/accesspoint.h b/accesspoint.h
index bf111c84..c2ab5377 100644
--- a/accesspoint.h
+++ b/accesspoint.h
@@ -170,6 +170,7 @@ public:
     void frequencyChanged(uint frequency);
 
 protected Q_SLOTS:
+    void dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties);
     void propertiesChanged(const QVariantMap &properties);
 
 private:
diff --git a/activeconnection.cpp b/activeconnection.cpp
index fc8a1ac2..1b66fc56 100644
--- a/activeconnection.cpp
+++ b/activeconnection.cpp
@@ -64,8 +64,13 @@ NetworkManager::ActiveConnection::ActiveConnection(const QString &path, QObject
 {
     Q_D(ActiveConnection);
 
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, d->path, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&d->iface, SIGNAL(PropertiesChanged(QVariantMap)),
             this, SLOT(propertiesChanged(QVariantMap)));
+#endif
 }
 
 NetworkManager::ActiveConnection::ActiveConnection(ActiveConnectionPrivate &dd, QObject *parent)
@@ -73,8 +78,13 @@ NetworkManager::ActiveConnection::ActiveConnection(ActiveConnectionPrivate &dd,
 {
     Q_D(ActiveConnection);
 
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, d->path, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&d->iface, SIGNAL(PropertiesChanged(QVariantMap)),
             this, SLOT(propertiesChanged(QVariantMap)));
+#endif
 }
 
 NetworkManager::ActiveConnection::~ActiveConnection()
@@ -148,9 +158,20 @@ void NetworkManager::ActiveConnectionPrivate::recheckProperties()
     return d->devices;
 }
 
+void NetworkManager::ActiveConnection::dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties)
+{
+    Q_UNUSED(invalidatedProperties);
+
+    if (interfaceName == QLatin1String("org.freedesktop.NetworkManager.Connection.Active")) {
+        propertiesChanged(properties);
+    }
+}
+
 void NetworkManager::ActiveConnection::propertiesChanged(const QVariantMap &properties)
 {
     Q_D(ActiveConnection);
+
+    // qDebug() << Q_FUNC_INFO << properties;
 
     QVariantMap::const_iterator it = properties.constBegin();
     while (it != properties.constEnd()) {
diff --git a/activeconnection.h b/activeconnection.h
index d021437e..60697e6f 100644
--- a/activeconnection.h
+++ b/activeconnection.h
@@ -154,6 +154,7 @@ public:
 
 protected Q_SLOTS:
     void propertiesChanged(const QVariantMap &properties);
+    void dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties);
 
 private:
     Q_DECLARE_PRIVATE(ActiveConnection)
diff --git a/adsldevice.cpp b/adsldevice.cpp
index f07b5e6d..8f9bbff4 100644
--- a/adsldevice.cpp
+++ b/adsldevice.cpp
@@ -57,8 +57,13 @@ NetworkManager::AdslDevice::AdslDevice(const QString &path, QObject *parent)
 
     d->carrier = d->iface.carrier();
 
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, d->uni, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&d->iface, SIGNAL(PropertiesChanged(QVariantMap)),
             this, SLOT(propertiesChanged(QVariantMap)));
+#endif
 }
 
 NetworkManager::AdslDevicePrivate::~AdslDevicePrivate()
diff --git a/bluetoothdevice.cpp b/bluetoothdevice.cpp
index 3ccf276c..eb839e08 100644
--- a/bluetoothdevice.cpp
+++ b/bluetoothdevice.cpp
@@ -37,8 +37,13 @@ NetworkManager::BluetoothDevice::BluetoothDevice(const QString &path, QObject *p
     : ModemDevice(*new BluetoothDevicePrivate(path, this), parent)
 {
     Q_D(BluetoothDevice);
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, d->uni, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&d->btIface, SIGNAL(PropertiesChanged(QVariantMap)),
             this, SLOT(propertiesChanged(QVariantMap)));
+#endif
 }
 
 NetworkManager::BluetoothDevice::~BluetoothDevice()
diff --git a/bonddevice.cpp b/bonddevice.cpp
index d9798b04..6d1899f4 100644
--- a/bonddevice.cpp
+++ b/bonddevice.cpp
@@ -63,8 +63,13 @@ NetworkManager::BondDevice::BondDevice(const QString &path, QObject *parent):
     }
     d->slaves = list;
 
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, d->uni, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&d->iface, SIGNAL(PropertiesChanged(QVariantMap)),
             this, SLOT(propertiesChanged(QVariantMap)));
+#endif
 }
 
 NetworkManager::BondDevicePrivate::~BondDevicePrivate()
diff --git a/bridgedevice.cpp b/bridgedevice.cpp
index f345ad5a..3c347afb 100644
--- a/bridgedevice.cpp
+++ b/bridgedevice.cpp
@@ -64,8 +64,13 @@ NetworkManager::BridgeDevice::BridgeDevice(const QString &path, QObject *parent)
     }
     d->slaves = list;
 
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, d->uni, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&d->iface, SIGNAL(PropertiesChanged(QVariantMap)),
             this, SLOT(propertiesChanged(QVariantMap)));
+#endif
 }
 
 NetworkManager::BridgeDevice::~BridgeDevice()
diff --git a/device.cpp b/device.cpp
index f7bc7e61..57538eb1 100644
--- a/device.cpp
+++ b/device.cpp
@@ -192,6 +192,7 @@ void NetworkManager::Device::propertyChanged(const QString &property, con
 {
     Q_D(Device);
 
+    // qDebug() << property  << " - " << value;
     if (property == QLatin1String("ActiveConnection")) {
         // FIXME workaround, because NM doesn't emit correct value
         // d->activeConnection = value.value<QDBusObjectPath>.path();
@@ -494,6 +495,14 @@ void NetworkManager::DevicePrivate::deviceStateChanged(uint newState, uint oldSt
     emit stateChanged(d->connectionState, NetworkManager::DevicePrivate::convertState(old_state), NetworkManager::DevicePrivate::convertReason(reason));
 }
 
+void NetworkManager::Device::dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties)
+{
+    Q_UNUSED(invalidatedProperties);
+    if (interfaceName.contains(QLatin1String("org.freedesktop.NetworkManager.Device"))) {
+        propertiesChanged(properties);
+    }
+}
+
 void NetworkManager::Device::propertiesChanged(const QVariantMap &properties)
 {
     Q_D(Device);
diff --git a/device.h b/device.h
index da85faf4..4e8750f0 100644
--- a/device.h
+++ b/device.h
@@ -456,6 +456,7 @@ public:
 
 protected Q_SLOTS:
     void deviceStateChanged(uint, uint, uint);
+    void dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties);
     void propertiesChanged(const QVariantMap &properties);
 
 private:
diff --git a/dhcp4config.cpp b/dhcp4config.cpp
index efcd98db..c52cc00d 100644
--- a/dhcp4config.cpp
+++ b/dhcp4config.cpp
@@ -39,8 +39,13 @@ NetworkManager::Dhcp4Config::Dhcp4Config(const QString &path, QObject *owner)
     : d_ptr(new Dhcp4ConfigPrivate(path, owner))
 {
     Q_D(Dhcp4Config);
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, d->myPath, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&d->dhcp4Iface, SIGNAL(PropertiesChanged(QVariantMap)),
             SLOT(dhcp4PropertiesChanged(QVariantMap)));
+#endif
     d->properties = d->dhcp4Iface.options();
 }
 
@@ -71,6 +75,13 @@ QString NetworkManager::Dhcp4Config::optionValue(const QString &key) const
     return value;
 }
 
+void NetworkManager::Dhcp4Config::dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties)
+{
+    Q_UNUSED(invalidatedProperties);
+    if (interfaceName == QLatin1String("org.freedesktop.NetworkManager.DHCP4Config")) {
+        dhcp4PropertiesChanged(properties);
+    }
+}
 
 void NetworkManager::Dhcp4Config::dhcp4PropertiesChanged(const QVariantMap &properties)
 {
diff --git a/dhcp4config.h b/dhcp4config.h
index ce5563c3..74402085 100644
--- a/dhcp4config.h
+++ b/dhcp4config.h
@@ -53,6 +53,7 @@ public:
     void optionsChanged(const QVariantMap &);
 
 protected Q_SLOTS:
+    void dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties);
     void dhcp4PropertiesChanged(const QVariantMap &);
 
 private:
diff --git a/dhcp6config.cpp b/dhcp6config.cpp
index 4f0a3b64..c0a4d2aa 100644
--- a/dhcp6config.cpp
+++ b/dhcp6config.cpp
@@ -39,8 +39,13 @@ NetworkManager::Dhcp6Config::Dhcp6Config(const QString &path, QObject *owner)
     : d_ptr(new Dhcp6ConfigPrivate(path, owner))
 {
     Q_D(Dhcp6Config);
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, d->myPath, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&d->dhcp6Iface, SIGNAL(PropertiesChanged(QVariantMap)),
             SLOT(dhcp6PropertiesChanged(QVariantMap)));
+#endif
     d->properties = d->dhcp6Iface.options();
 }
 
@@ -71,6 +76,14 @@ QString NetworkManager::Dhcp6Config::optionValue(const QString &key) const
     return value;
 }
 
+void NetworkManager::Dhcp6Config::dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties)
+{
+    Q_UNUSED(invalidatedProperties);
+    if (interfaceName == QLatin1String("org.freedesktop.NetworkManager.DHCP6Config")) {
+        dhcp6PropertiesChanged(properties);
+    }
+}
+
 
 void NetworkManager::Dhcp6Config::dhcp6PropertiesChanged(const QVariantMap &properties)
 {
diff --git a/dhcp6config.h b/dhcp6config.h
index 093f234b..83acacb4 100644
--- a/dhcp6config.h
+++ b/dhcp6config.h
@@ -53,6 +53,7 @@ public:
     void optionsChanged(const QVariantMap &);
 
 protected Q_SLOTS:
+    void dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties);
     void dhcp6PropertiesChanged(const QVariantMap &);
 
 private:
diff --git a/infinibanddevice.cpp b/infinibanddevice.cpp
index 15b35754..9bfa76f0 100644
--- a/infinibanddevice.cpp
+++ b/infinibanddevice.cpp
@@ -59,8 +59,13 @@ NetworkManager::InfinibandDevice::InfinibandDevice(const QString &path, QObject
     d->carrier = d->iface.carrier();
     d->hwAddress = d->iface.hwAddress();
 
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, d->uni, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&d->iface, SIGNAL(PropertiesChanged(QVariantMap)),
             this, SLOT(propertiesChanged(QVariantMap)));
+#endif
 }
 
 NetworkManager::InfinibandDevicePrivate::~InfinibandDevicePrivate()
diff --git a/manager.cpp b/manager.cpp
index 01723d7b..d2f706e7 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -53,9 +53,12 @@
 
 #include "nmdebug.h"
 
+#define DBUS_PROPERTIES  "org.freedesktop.DBus.Properties"
+
 const QString NetworkManager::NetworkManagerPrivate::DBUS_SERVICE(QString::fromLatin1(NM_DBUS_SERVICE));
 const QString NetworkManager::NetworkManagerPrivate::DBUS_DAEMON_PATH(QString::fromLatin1(NM_DBUS_PATH));
 const QString NetworkManager::NetworkManagerPrivate::DBUS_SETTINGS_PATH(QString::fromLatin1(NM_DBUS_PATH_SETTINGS));
+const QString NetworkManager::NetworkManagerPrivate::FDO_DBUS_PROPERTIES(QString::fromLatin1(DBUS_PROPERTIES));
 
 NM_GLOBAL_STATIC(NetworkManager::NetworkManagerPrivate, globalNetworkManager)
 
@@ -97,7 +100,12 @@ NetworkManager::NetworkManagerPrivate::NetworkManagerPrivate()
 {
     connect(&iface, SIGNAL(DeviceAdded(QDBusObjectPath)), SLOT(onDeviceAdded(QDBusObjectPath)), Qt::UniqueConnection);
     connect(&iface, SIGNAL(DeviceRemoved(QDBusObjectPath)), SLOT(onDeviceRemoved(QDBusObjectPath)), Qt::UniqueConnection);
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, NetworkManagerPrivate::DBUS_DAEMON_PATH, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&iface, SIGNAL(PropertiesChanged(QVariantMap)), SLOT(propertiesChanged(QVariantMap)), Qt::UniqueConnection);
+#endif
 
     qDBusRegisterMetaType<UIntList>();
     qDBusRegisterMetaType<UIntListList>();
@@ -580,6 +588,14 @@ void NetworkManager::NetworkManagerPrivate::stateChanged(uint state)
     }
 }
 
+void NetworkManager::NetworkManagerPrivate::dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties)
+{
+    Q_UNUSED(invalidatedProperties);
+    if (interfaceName == QLatin1String("org.freedesktop.NetworkManager")) {
+        propertiesChanged(properties);
+    }
+}
+
 void NetworkManager::NetworkManagerPrivate::propertiesChanged(const QVariantMap &changedProperties)
 {
     QVariantMap::const_iterator it = changedProperties.constBegin();
diff --git a/manager_p.h b/manager_p.h
index d0a9d8c1..50c3c341 100644
--- a/manager_p.h
+++ b/manager_p.h
@@ -43,6 +43,7 @@ public:
     static const QString DBUS_SERVICE;
     static const QString DBUS_DAEMON_PATH;
     static const QString DBUS_SETTINGS_PATH;
+    static const QString FDO_DBUS_PROPERTIES;
 
     NetworkManagerPrivate();
     ~NetworkManagerPrivate();
@@ -121,6 +121,7 @@ protected Q_SLOTS:
     void init();
     void onDeviceAdded(const QDBusObjectPath &state);
     void onDeviceRemoved(const QDBusObjectPath &state);
+    void dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties);
     void propertiesChanged(const QVariantMap &changedProperties);
     void daemonRegistered();
     void daemonUnregistered();
diff --git a/modemdevice.cpp b/modemdevice.cpp
index 89394f02..4bb4a234 100644
--- a/modemdevice.cpp
+++ b/modemdevice.cpp
@@ -65,8 +65,13 @@ NetworkManager::ModemDevice::ModemDevice(const QString &path, QObject *parent)
 #if WITH_MODEMMANAGERQT
     d->m_modemUdi = getUdiForModemManager();
 #endif
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, d->uni, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&d->modemIface, SIGNAL(PropertiesChanged(QVariantMap)),
             this, SLOT(propertiesChanged(QVariantMap)));
+#endif
 }
 
 NetworkManager::ModemDevice::ModemDevice(NetworkManager::ModemDevicePrivate &dd, QObject *parent)
@@ -81,8 +86,13 @@ NetworkManager::ModemDevice::ModemDevice(NetworkManager::ModemDevicePrivate &dd,
 #if WITH_MODEMMANAGERQT
     d->m_modemUdi = getUdiForModemManager();
 #endif
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, d->uni, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&d->modemIface, SIGNAL(PropertiesChanged(QVariantMap)),
             this, SLOT(propertiesChanged(QVariantMap)));
+#endif
 }
 
 NetworkManager::ModemDevice::~ModemDevice()
diff --git a/olpcmeshdevice.cpp b/olpcmeshdevice.cpp
index 286a080b..6f1212da 100644
--- a/olpcmeshdevice.cpp
+++ b/olpcmeshdevice.cpp
@@ -40,8 +40,13 @@ NetworkManager::OlpcMeshDevice::OlpcMeshDevice(const QString &path, QObject *par
     d->activeChannel = d->iface.activeChannel();
     d->companion = d->iface.companion().path();
 
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, d->uni, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&d->iface, SIGNAL(PropertiesChanged(QVariantMap)),
             this, SLOT(propertiesChanged(QVariantMap)));
+#endif
 }
 
 NetworkManager::OlpcMeshDevice::~OlpcMeshDevice()
diff --git a/settings.cpp b/settings.cpp
index f75b86ab..90e72678 100644
--- a/settings.cpp
+++ b/settings.cpp
@@ -49,7 +49,12 @@ NetworkManager::SettingsPrivate::SettingsPrivate()
 
 void NetworkManager::SettingsPrivate::init()
 {
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, NetworkManagerPrivate::DBUS_SETTINGS_PATH, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&iface, SIGNAL(PropertiesChanged(QVariantMap)), this, SLOT(propertiesChanged(QVariantMap)));
+#endif
     connect(&iface, SIGNAL(NewConnection(QDBusObjectPath)), this, SLOT(onConnectionAdded(QDBusObjectPath)));
 
     QDBusPendingReply<QList<QDBusObjectPath> > reply = iface.ListConnections();
@@ -149,6 +154,14 @@ void NetworkManager::SettingsPrivate::saveHostname(const QString &hostname)
     iface.SaveHostname(hostname);
 }
 
+void NetworkManager::SettingsPrivate::dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties)
+{
+    Q_UNUSED(invalidatedProperties);
+    if (interfaceName == QLatin1String("org.freedesktop.NetworkManager.Settings")) {
+        propertiesChanged(properties);
+    }
+}
+
 void NetworkManager::SettingsPrivate::propertiesChanged(const QVariantMap &properties)
 {
     QVariantMap::const_iterator it = properties.constBegin();
diff --git a/vlandevice.cpp b/vlandevice.cpp
index 415dec97..fdfa2971 100644
--- a/vlandevice.cpp
+++ b/vlandevice.cpp
@@ -60,8 +60,13 @@ NetworkManager::VlanDevice::VlanDevice(const QString &path, QObject *parent)
     d->hwAddress = d->iface.hwAddress();
     d->vlanId = d->iface.vlanId();
 
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, d->uni, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&d->iface, SIGNAL(PropertiesChanged(QVariantMap)),
             this, SLOT(propertiesChanged(QVariantMap)));
+#endif
 }
 
 NetworkManager::VlanDevicePrivate::~VlanDevicePrivate()
diff --git a/settings_p.h b/settings_p.h
index 466d0a75..df0dc086 100644
--- a/settings_p.h
+++ b/settings_p.h
@@ -54,6 +54,7 @@ protected Q_SLOTS:
 protected Q_SLOTS:
     void onConnectionAdded(const QDBusObjectPath &);
     void onConnectionRemoved(const QString &);
+    void dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties);
     void propertiesChanged(const QVariantMap &properties);
     void onConnectionAddArrived(QDBusPendingCallWatcher *);
     void initNotifier();
diff --git a/vpnconnection.cpp b/vpnconnection.cpp
index d2d17e49..5dee6fc2 100644
--- a/vpnconnection.cpp
+++ b/vpnconnection.cpp
@@ -54,8 +54,13 @@ NetworkManager::VpnConnection::VpnConnection(const QString &path, QObject *paren
     Q_D(VpnConnection);
     d->banner = d->iface.banner();
     d->state = NetworkManager::VpnConnectionPrivate::convertVpnConnectionState(d->iface.vpnState());
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, d->path, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&d->iface, SIGNAL(PropertiesChanged(QVariantMap)),
             this, SLOT(propertiesChanged(QVariantMap)));
+#endif
     connect(&d->iface, SIGNAL(VpnStateChanged(uint,uint)),
             this, SLOT(vpnStateChanged(uint,uint)));
 }
@@ -77,6 +82,17 @@ NetworkManager::VpnConnection::State NetworkManager::VpnConnection::state() cons
     return d->state;
 }
 
+void NetworkManager::VpnConnection::dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties)
+{
+    Q_UNUSED(invalidatedProperties);
+
+    if (interfaceName == QLatin1String("org.freedesktop.NetworkManager.VPN.Connection")) {
+        propertiesChanged(properties);
+    } else {
+        ActiveConnection::propertiesChanged(properties);
+    }
+}
+
 void NetworkManager::VpnConnection::propertiesChanged(const QVariantMap &properties)
 {
     Q_D(VpnConnection);
diff --git a/vpnconnection.h b/vpnconnection.h
index 25ba589e..a8195ad3 100644
--- a/vpnconnection.h
+++ b/vpnconnection.h
@@ -112,6 +112,7 @@ public:
     void stateChanged(NetworkManager::VpnConnection::State state, NetworkManager::VpnConnection::StateChangeReason reason);
 
 protected Q_SLOTS:
+    void dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties);
     void propertiesChanged(const QVariantMap &properties);
     void vpnStateChanged(uint state, uint reason);
 
diff --git a/wimaxdevice.cpp b/wimaxdevice.cpp
index daec0a6c..6118f2f4 100644
--- a/wimaxdevice.cpp
+++ b/wimaxdevice.cpp
@@ -45,8 +45,13 @@ NetworkManager::WimaxDevice::WimaxDevice(const QString &path, QObject *parent)
     d->rssi = d->wimaxIface.rssi();
     d->txPower = d->wimaxIface.txPower();
 
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, d->uni, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&d->wimaxIface, SIGNAL(PropertiesChanged(QVariantMap)),
             this, SLOT(propertiesChanged(QVariantMap)));
+#endif
     connect(&d->wimaxIface, SIGNAL(NspAdded(QDBusObjectPath)),
             this, SLOT(nspAdded(QDBusObjectPath)));
     connect(&d->wimaxIface, SIGNAL(NspRemoved(QDBusObjectPath)),
diff --git a/wireddevice.cpp b/wireddevice.cpp
index af147b12..66bb649b 100644
--- a/wireddevice.cpp
+++ b/wireddevice.cpp
@@ -46,8 +46,13 @@ NetworkManager::WiredDevice::WiredDevice(const QString &path, QObject *parent)
     d->permanentHardwareAddress = d->wiredIface.permHwAddress();
     d->bitrate = d->wiredIface.speed() * 1000;
     d->carrier = d->wiredIface.carrier();
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, d->uni, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&d->wiredIface, SIGNAL(PropertiesChanged(QVariantMap)),
             this, SLOT(propertiesChanged(QVariantMap)));
+#endif
 }
 
 NetworkManager::WiredDevice::~WiredDevice()
diff --git a/wirelessdevice.cpp b/wirelessdevice.cpp
index dad918d6..3f2972b8 100644
--- a/wirelessdevice.cpp
+++ b/wirelessdevice.cpp
@@ -47,8 +47,13 @@ NetworkManager::WirelessDevice::WirelessDevice(const QString &path, QObject *par
     d->bitRate = d->wirelessIface.bitrate();
     d->wirelessCapabilities = convertCapabilities(d->wirelessIface.wirelessCapabilities());
 
+#if NM_CHECK_VERSION(1, 4, 0)
+    QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE, d->uni, NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+                                         QLatin1String("PropertiesChanged"), this, SLOT(dbusPropertiesChanged(QString,QVariantMap,QStringList)));
+#else
     connect(&d->wirelessIface, SIGNAL(PropertiesChanged(QVariantMap)),
             this, SLOT(propertiesChanged(QVariantMap)));
+#endif
     connect(&d->wirelessIface, SIGNAL(AccessPointAdded(QDBusObjectPath)),
             this, SLOT(accessPointAdded(QDBusObjectPath)));
     connect(&d->wirelessIface, SIGNAL(AccessPointRemoved(QDBusObjectPath)),
-- 
GitLab

openSUSE Build Service is sponsored by