summaryrefslogtreecommitdiffstats
path: root/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp
diff options
context:
space:
mode:
authorLorn Potter <lorn.potter@jollamobile.com>2014-10-07 17:18:09 +1000
committerLorn Potter <lorn.potter@gmail.com>2014-10-21 01:01:12 +0200
commit520b10be4cab66f3f66d3692d0bbbef57eff09e1 (patch)
tree48efd3fc95f7d26435cc07e313635ad98f35b96a /src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp
parent151061ad4af9d1b844f0b029b4e84a3577487048 (diff)
Add better mobile connections to QtBearer NetworkManager backend.
Task-number: QTBUG-41807 Change-Id: Ifb5904d4887111416b4bb1a32d6d056029186f5c Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
Diffstat (limited to 'src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp')
-rw-r--r--src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp39
1 files changed, 30 insertions, 9 deletions
diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp
index 105531c7f1..ec5666d36c 100644
--- a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp
+++ b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp
@@ -67,10 +67,6 @@ QNetworkManagerEngine::QNetworkManagerEngine(QObject *parent)
this, SLOT(deviceAdded(QDBusObjectPath)));
connect(interface, SIGNAL(deviceRemoved(QDBusObjectPath)),
this, SLOT(deviceRemoved(QDBusObjectPath)));
-#if 0
- connect(interface, SIGNAL(stateChanged(QString,quint32)),
- this, SIGNAL(configurationsChanged()));
-#endif
connect(interface, SIGNAL(activationFinished(QDBusPendingCallWatcher*)),
this, SLOT(activationFinished(QDBusPendingCallWatcher*)));
connect(interface, SIGNAL(propertiesChanged(QString,QMap<QString,QVariant>)),
@@ -586,7 +582,7 @@ void QNetworkManagerEngine::newAccessPoint(const QString &path, const QDBusObjec
ptr->isValid = true;
ptr->id = objectPath.path();
ptr->type = QNetworkConfiguration::InternetAccessPoint;
- if(accessPoint->flags() == NM_802_11_AP_FLAGS_PRIVACY) {
+ if (accessPoint->flags() == NM_802_11_AP_FLAGS_PRIVACY) {
ptr->purpose = QNetworkConfiguration::PrivatePurpose;
} else {
ptr->purpose = QNetworkConfiguration::PublicPurpose;
@@ -724,7 +720,7 @@ QNetworkConfigurationPrivate *QNetworkManagerEngine::parseConnection(const QStri
const QString connectionSsid = map.value("802-11-wireless").value("ssid").toString();
const QString connectionSecurity = map.value("802-11-wireless").value("security").toString();
- if(!connectionSecurity.isEmpty()) {
+ if (!connectionSecurity.isEmpty()) {
cpPriv->purpose = QNetworkConfiguration::PrivatePurpose;
} else {
cpPriv->purpose = QNetworkConfiguration::PublicPurpose;
@@ -749,9 +745,34 @@ QNetworkConfigurationPrivate *QNetworkManagerEngine::parseConnection(const QStri
break;
}
}
- } else if (connectionType == "gsm") {
- cpPriv->bearerType = QNetworkConfiguration::Bearer2G;
- } else if (connectionType == "cdma") {
+ } else if (connectionType == QLatin1String("gsm")) {
+
+ foreach (const QDBusObjectPath &devicePath, interface->getDevices()) {
+ QNetworkManagerInterfaceDevice device(devicePath.path());
+
+ if (device.deviceType() == DEVICE_TYPE_GSM) {
+ QNetworkManagerInterfaceDeviceModem deviceModem(device.connectionInterface()->path(),this);
+ switch (deviceModem.currentCapabilities()) {
+ case 2:
+ cpPriv->bearerType = QNetworkConfiguration::Bearer2G;
+ break;
+ case 4:
+ cpPriv->bearerType = QNetworkConfiguration::Bearer3G;
+ break;
+ case 8:
+ cpPriv->bearerType = QNetworkConfiguration::Bearer4G;
+ break;
+ default:
+ cpPriv->bearerType = QNetworkConfiguration::BearerUnknown;
+ break;
+ };
+ }
+ }
+
+ cpPriv->purpose = QNetworkConfiguration::PrivatePurpose;
+ cpPriv->state |= QNetworkConfiguration::Discovered;
+ } else if (connectionType == QLatin1String("cdma")) {
+ cpPriv->purpose = QNetworkConfiguration::PrivatePurpose;
cpPriv->bearerType = QNetworkConfiguration::BearerCDMA2000;
}