diff options
Diffstat (limited to 'src/plugins/bearer/connman/qconnmanengine.cpp')
-rw-r--r-- | src/plugins/bearer/connman/qconnmanengine.cpp | 45 |
1 files changed, 13 insertions, 32 deletions
diff --git a/src/plugins/bearer/connman/qconnmanengine.cpp b/src/plugins/bearer/connman/qconnmanengine.cpp index e85949afb6..6ea34b17f5 100644 --- a/src/plugins/bearer/connman/qconnmanengine.cpp +++ b/src/plugins/bearer/connman/qconnmanengine.cpp @@ -150,20 +150,7 @@ void QConnmanEngine::connectToId(const QString &id) if(!serv.isValid()) { emit connectionError(id, QBearerEngineImpl::InterfaceLookupError); } else { - if(serv.getType() != "cellular") { - - serv.connect(); - } else { - QOfonoManagerInterface ofonoManager(0); - QString modemPath = ofonoManager.currentModem().path(); - QOfonoDataConnectionManagerInterface dc(modemPath,0); - foreach (const QDBusObjectPath &dcPath,dc.getPrimaryContexts()) { - if(dcPath.path().contains(servicePath.section("_",-1))) { - QOfonoConnectionContextInterface primaryContext(dcPath.path(),0); - primaryContext.setActive(true); - } - } - } + serv.connect(); } } @@ -175,19 +162,7 @@ void QConnmanEngine::disconnectFromId(const QString &id) if(!serv.isValid()) { emit connectionError(id, DisconnectionError); } else { - if(serv.getType() != "cellular") { - serv.disconnect(); - } else { - QOfonoManagerInterface ofonoManager(0); - QString modemPath = ofonoManager.currentModem().path(); - QOfonoDataConnectionManagerInterface dc(modemPath,0); - foreach (const QDBusObjectPath &dcPath,dc.getPrimaryContexts()) { - if(dcPath.path().contains(servicePath.section("_",-1))) { - QOfonoConnectionContextInterface primaryContext(dcPath.path(),0); - primaryContext.setActive(false); - } - } - } + serv.disconnect(); } } @@ -292,7 +267,8 @@ QNetworkConfigurationManager::Capabilities QConnmanEngine::capabilities() const { return QNetworkConfigurationManager::ForcedRoaming | QNetworkConfigurationManager::DataStatistics | - QNetworkConfigurationManager::CanStartAndStopInterfaces; + QNetworkConfigurationManager::CanStartAndStopInterfaces | + QNetworkConfigurationManager::NetworkSessionRequired; } QNetworkSessionPrivate *QConnmanEngine::createSessionBackend() @@ -374,7 +350,7 @@ void QConnmanEngine::configurationChange(const QString &id) QMutexLocker locker(&mutex); if (accessPointConfigurations.contains(id)) { - + bool changed = false; QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(id); QString servicePath = serviceFromId(id); @@ -392,17 +368,21 @@ void QConnmanEngine::configurationChange(const QString &id) if (ptr->name != networkName) { ptr->name = networkName; + changed = true; } if (ptr->state != curState) { ptr->state = curState; + changed = true; } ptr->mutex.unlock(); - locker.unlock(); - emit configurationChanged(ptr); - locker.relock(); + if (changed) { + locker.unlock(); + emit configurationChanged(ptr); + locker.relock(); + } } locker.unlock(); @@ -515,6 +495,7 @@ void QConnmanEngine::removeConfiguration(const QString &id) serviceNetworks.removeOne(service); QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.take(id); + foundConfigurations.removeOne(ptr.data()); locker.unlock(); emit configurationRemoved(ptr); locker.relock(); |