summaryrefslogtreecommitdiffstats
path: root/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp
diff options
context:
space:
mode:
authorLorn Potter <lorn.potter@jollamobile.com>2014-10-20 11:31:00 +1000
committerLorn Potter <lorn.potter@gmail.com>2014-10-27 05:32:58 +0100
commit0ca0ecdb32b3d7df76fe9782d04493ebe0da0a9e (patch)
tree2df1907b38e1c7c5bd81108835155ba8d73673d5 /src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp
parent6c308e6f1de8f6dfe1938dfbfec55a6881de898a (diff)
Make networkmanager bearer backend work better
This fixes QNetworkConfigurations when user: - configures new AP - deletes connection configuration - switches wifi AP Change-Id: I38c543c6de7b61f49d7ac96fa05f7a6fc4fba70f Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
Diffstat (limited to 'src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp')
-rw-r--r--src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp137
1 files changed, 88 insertions, 49 deletions
diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp
index d154f1187e..f249ac6100 100644
--- a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp
+++ b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp
@@ -322,18 +322,31 @@ bool QNetworkManagerInterfaceDevice::setConnections()
if(!isValid() )
return false;
- bool allOk = false;
+ bool allOk = true;
delete nmDBusHelper;
nmDBusHelper = new QNmDBusHelper(this);
connect(nmDBusHelper,SIGNAL(pathForStateChanged(QString,quint32)),
this, SIGNAL(stateChanged(QString,quint32)));
+
if (QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE),
d->path,
QLatin1String(NM_DBUS_INTERFACE_DEVICE),
QLatin1String("StateChanged"),
nmDBusHelper,SLOT(deviceStateChanged(quint32)))) {
- allOk = true;
+ allOk = false;
+ }
+
+ connect(nmDBusHelper, SIGNAL(pathForConnectionsChanged(QStringList)),
+ this,SIGNAL(connectionsChanged(QStringList)));
+
+ if (QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE),
+ d->path,
+ QLatin1String(NM_DBUS_INTERFACE_ACCESS_POINT),
+ QLatin1String("PropertiesChanged"),
+ nmDBusHelper,SLOT(slotPropertiesChanged(QMap<QString,QVariant>))) ) {
+ allOk = false;
}
+
return allOk;
}
@@ -414,18 +427,18 @@ bool QNetworkManagerInterfaceDeviceWired::setConnections()
if(!isValid() )
return false;
- bool allOk = false;
+ bool allOk = true;
delete nmDBusHelper;
nmDBusHelper = new QNmDBusHelper(this);
connect(nmDBusHelper, SIGNAL(pathForPropertiesChanged(QString,QMap<QString,QVariant>)),
this,SIGNAL(propertiesChanged(QString,QMap<QString,QVariant>)));
- if (QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE),
+ if (!QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE),
d->path,
QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRED),
QLatin1String("PropertiesChanged"),
nmDBusHelper,SLOT(slotPropertiesChanged(QMap<QString,QVariant>))) ) {
- allOk = true;
+ allOk = false;
}
return allOk;
}
@@ -491,44 +504,50 @@ bool QNetworkManagerInterfaceDeviceWireless::setConnections()
return false;
QDBusConnection dbusConnection = QDBusConnection::systemBus();
- bool allOk = false;
+ bool allOk = true;
delete nmDBusHelper;
nmDBusHelper = new QNmDBusHelper(this);
connect(nmDBusHelper, SIGNAL(pathForPropertiesChanged(QString,QMap<QString,QVariant>)),
this,SIGNAL(propertiesChanged(QString,QMap<QString,QVariant>)));
- connect(nmDBusHelper, SIGNAL(pathForAccessPointAdded(QString,QDBusObjectPath)),
- this,SIGNAL(accessPointAdded(QString,QDBusObjectPath)));
+ connect(nmDBusHelper, SIGNAL(pathForAccessPointAdded(QString)),
+ this,SIGNAL(accessPointAdded(QString)));
- connect(nmDBusHelper, SIGNAL(pathForAccessPointRemoved(QString,QDBusObjectPath)),
- this,SIGNAL(accessPointRemoved(QString,QDBusObjectPath)));
+ connect(nmDBusHelper, SIGNAL(pathForAccessPointRemoved(QString)),
+ this,SIGNAL(accessPointRemoved(QString)));
- if (dbusConnection.connect(QLatin1String(NM_DBUS_SERVICE),
+ if (!dbusConnection.connect(QLatin1String(NM_DBUS_SERVICE),
d->path,
QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRELESS),
QLatin1String("AccessPointAdded"),
nmDBusHelper, SLOT(slotAccessPointAdded(QDBusObjectPath)))) {
- allOk = true;
+ allOk = false;
}
- if (dbusConnection.connect(QLatin1String(NM_DBUS_SERVICE),
+ if (!dbusConnection.connect(QLatin1String(NM_DBUS_SERVICE),
d->path,
QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRELESS),
QLatin1String("AccessPointRemoved"),
nmDBusHelper, SLOT(slotAccessPointRemoved(QDBusObjectPath)))) {
- allOk = true;
+ allOk = false;
}
- if (dbusConnection.connect(QLatin1String(NM_DBUS_SERVICE),
+ if (!dbusConnection.connect(QLatin1String(NM_DBUS_SERVICE),
d->path,
QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRELESS),
QLatin1String("PropertiesChanged"),
nmDBusHelper,SLOT(slotPropertiesChanged(QMap<QString,QVariant>)))) {
- allOk = true;
+ allOk = false;
+ }
+ if (!dbusConnection.connect(QLatin1String(NM_DBUS_SERVICE),
+ d->path,
+ QLatin1String(NM_DBUS_INTERFACE_DEVICE_WIRELESS),
+ QLatin1String("ScanDone"),
+ this, SLOT(scanIsDone()))) {
+ allOk = false;
}
-
return allOk;
}
@@ -568,6 +587,17 @@ quint32 QNetworkManagerInterfaceDeviceWireless::wirelessCapabilities() const
return d->connectionInterface->property("WirelelessCapabilities").toUInt();
}
+void QNetworkManagerInterfaceDeviceWireless::scanIsDone()
+{
+ Q_EMIT scanDone();
+}
+
+void QNetworkManagerInterfaceDeviceWireless::requestScan()
+{
+ d->connectionInterface->asyncCall(QLatin1String("RequestScan"));
+}
+
+
class QNetworkManagerInterfaceDeviceModemPrivate
{
public:
@@ -609,18 +639,18 @@ bool QNetworkManagerInterfaceDeviceModem::setConnections()
if (!isValid() )
return false;
- bool allOk = false;
+ bool allOk = true;
delete nmDBusHelper;
nmDBusHelper = new QNmDBusHelper(this);
connect(nmDBusHelper, SIGNAL(pathForPropertiesChanged(QString,QMap<QString,QVariant>)),
this,SIGNAL(propertiesChanged(QString,QMap<QString,QVariant>)));
- if (QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE),
+ if (!QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE),
d->path,
QLatin1String(NM_DBUS_INTERFACE_DEVICE_MODEM),
QLatin1String("PropertiesChanged"),
nmDBusHelper,SLOT(slotDevicePropertiesChanged(QMap<QString,QVariant>))) ) {
- allOk = true;
+ allOk = false;
}
return allOk;
}
@@ -640,9 +670,6 @@ quint32 QNetworkManagerInterfaceDeviceModem::currentCapabilities() const
return d->connectionInterface->property("CurrentCapabilities").toUInt();
}
-
-
-
class QNetworkManagerSettingsPrivate
{
public:
@@ -680,12 +707,14 @@ bool QNetworkManagerSettings::isValid()
bool QNetworkManagerSettings::setConnections()
{
- bool allOk = false;
+ bool allOk = true;
- if (QDBusConnection::systemBus().connect(d->path, QLatin1String(NM_DBUS_PATH_SETTINGS),
- QLatin1String(NM_DBUS_IFACE_SETTINGS), QLatin1String("NewConnection"),
- this, SIGNAL(newConnection(QDBusObjectPath)))) {
- allOk = true;
+ if (!QDBusConnection::systemBus().connect(d->path,
+ QLatin1String(NM_DBUS_PATH_SETTINGS),
+ QLatin1String(NM_DBUS_IFACE_SETTINGS),
+ QLatin1String("NewConnection"),
+ this, SIGNAL(newConnection(QDBusObjectPath)))) {
+ allOk = false;
}
return allOk;
@@ -697,6 +726,14 @@ QList <QDBusObjectPath> QNetworkManagerSettings::listConnections()
return reply.value();
}
+QString QNetworkManagerSettings::getConnectionByUuid(const QString &uuid)
+{
+ QList<QVariant> argumentList;
+ argumentList << QVariant::fromValue(uuid);
+ QDBusReply<QDBusObjectPath > reply = d->connectionInterface->callWithArgumentList(QDBus::Block,QLatin1String("GetConnectionByUuid"), argumentList);
+ return reply.value().path();
+}
+
QDBusInterface *QNetworkManagerSettings::connectionInterface() const
{
return d->connectionInterface;
@@ -750,13 +787,13 @@ bool QNetworkManagerSettingsConnection::setConnections()
return false;
QDBusConnection dbusConnection = QDBusConnection::systemBus();
- bool allOk = false;
- if (dbusConnection.connect(d->service, d->path,
- QLatin1String(NM_DBUS_IFACE_SETTINGS_CONNECTION), QLatin1String("Updated"),
- this, SIGNAL(updated(QNmSettingsMap)))) {
- allOk = true;
- } else {
- QDBusError error = dbusConnection.lastError();
+ bool allOk = true;
+ if (!dbusConnection.connect(d->service,
+ d->path,
+ QLatin1String(NM_DBUS_IFACE_SETTINGS_CONNECTION),
+ QLatin1String("Updated"),
+ this, SIGNAL(updated()))) {
+ allOk = false;
}
delete nmDBusHelper;
@@ -764,12 +801,13 @@ bool QNetworkManagerSettingsConnection::setConnections()
connect(nmDBusHelper, SIGNAL(pathForSettingsRemoved(QString)),
this,SIGNAL(removed(QString)));
- if (dbusConnection.connect(d->service, d->path,
- QLatin1String(NM_DBUS_IFACE_SETTINGS_CONNECTION), QLatin1String("Removed"),
- nmDBusHelper, SIGNAL(slotSettingsRemoved()))) {
- allOk = true;
+ if (!dbusConnection.connect(d->service,
+ d->path,
+ QLatin1String(NM_DBUS_IFACE_SETTINGS_CONNECTION),
+ QLatin1String("Removed"),
+ nmDBusHelper, SIGNAL(slotSettingsRemoved()))) {
+ allOk = false;
}
-
return allOk;
}
@@ -791,9 +829,9 @@ NMDeviceType QNetworkManagerSettingsConnection::getType()
d->settingsMap.value(QLatin1String("connection")).value(QLatin1String("type")).toString();
if (devType == QLatin1String("802-3-ethernet"))
- return DEVICE_TYPE_802_3_ETHERNET;
+ return DEVICE_TYPE_ETHERNET;
else if (devType == QLatin1String("802-11-wireless"))
- return DEVICE_TYPE_802_11_WIRELESS;
+ return DEVICE_TYPE_WIFI;
else
return DEVICE_TYPE_UNKNOWN;
}
@@ -840,10 +878,10 @@ QString QNetworkManagerSettingsConnection::getMacAddress()
{
NMDeviceType type = getType();
- if (type == DEVICE_TYPE_802_3_ETHERNET) {
+ if (type == DEVICE_TYPE_ETHERNET) {
return d->settingsMap.value(QLatin1String("802-3-ethernet"))
.value(QLatin1String("mac-address")).toString();
- } else if (type == DEVICE_TYPE_802_11_WIRELESS) {
+ } else if (type == DEVICE_TYPE_WIFI) {
return d->settingsMap.value(QLatin1String("802-11-wireless"))
.value(QLatin1String("mac-address")).toString();
} else {
@@ -853,7 +891,7 @@ QString QNetworkManagerSettingsConnection::getMacAddress()
QStringList QNetworkManagerSettingsConnection::getSeenBssids()
{
- if (getType() == DEVICE_TYPE_802_11_WIRELESS) {
+ if (getType() == DEVICE_TYPE_WIFI) {
return d->settingsMap.value(QLatin1String("802-11-wireless"))
.value(QLatin1String("seen-bssids")).toStringList();
} else {
@@ -901,17 +939,18 @@ bool QNetworkManagerConnectionActive::setConnections()
if(!isValid() )
return false;
- bool allOk = false;
+ bool allOk = true;
delete nmDBusHelper;
nmDBusHelper = new QNmDBusHelper(this);
connect(nmDBusHelper, SIGNAL(pathForPropertiesChanged(QString,QMap<QString,QVariant>)),
this,SIGNAL(propertiesChanged(QString,QMap<QString,QVariant>)));
- if (QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE),
+
+ if (!QDBusConnection::systemBus().connect(QLatin1String(NM_DBUS_SERVICE),
d->path,
QLatin1String(NM_DBUS_INTERFACE_ACTIVE_CONNECTION),
QLatin1String("PropertiesChanged"),
- nmDBusHelper,SLOT(slotPropertiesChanged(QMap<QString,QVariant>))) ) {
- allOk = true;
+ nmDBusHelper,SLOT(activeConnectionPropertiesChanged(QMap<QString,QVariant>))) ) {
+ allOk = false;
}
return allOk;