summaryrefslogtreecommitdiffstats
path: root/src/networksettings/connman
diff options
context:
space:
mode:
Diffstat (limited to 'src/networksettings/connman')
-rw-r--r--src/networksettings/connman/qnetworksettingsinterface_p.cpp1
-rw-r--r--src/networksettings/connman/qnetworksettingsinterface_p.h2
-rw-r--r--src/networksettings/connman/qnetworksettingsmanager_p.cpp73
-rw-r--r--src/networksettings/connman/qnetworksettingsmanager_p.h7
-rw-r--r--src/networksettings/connman/qnetworksettingsservice_p.cpp1
-rw-r--r--src/networksettings/connman/qnetworksettingsservice_p.h5
-rw-r--r--src/networksettings/connman/qnetworksettingsuseragent_p.h2
7 files changed, 61 insertions, 30 deletions
diff --git a/src/networksettings/connman/qnetworksettingsinterface_p.cpp b/src/networksettings/connman/qnetworksettingsinterface_p.cpp
index 3525aa7..83ab73a 100644
--- a/src/networksettings/connman/qnetworksettingsinterface_p.cpp
+++ b/src/networksettings/connman/qnetworksettingsinterface_p.cpp
@@ -33,6 +33,7 @@
QNetworkSettingsInterfacePrivate::QNetworkSettingsInterfacePrivate(QNetworkSettingsInterface* parent)
: QObject(parent)
+ , m_technology(Q_NULLPTR)
,q_ptr(parent)
{
diff --git a/src/networksettings/connman/qnetworksettingsinterface_p.h b/src/networksettings/connman/qnetworksettingsinterface_p.h
index 7f5ee7b..eabe610 100644
--- a/src/networksettings/connman/qnetworksettingsinterface_p.h
+++ b/src/networksettings/connman/qnetworksettingsinterface_p.h
@@ -66,7 +66,7 @@ class ConnmanSettingsInterface : public QNetworkSettingsInterface
{
Q_OBJECT
public:
- ConnmanSettingsInterface(const QString& path, const QVariantMap& properties, QObject *parent = nullptr)
+ ConnmanSettingsInterface(const QString& path, const QVariantMap& properties, QObject *parent = Q_NULLPTR)
:QNetworkSettingsInterface(parent)
{
if (d_ptr)
diff --git a/src/networksettings/connman/qnetworksettingsmanager_p.cpp b/src/networksettings/connman/qnetworksettingsmanager_p.cpp
index 875be9b..22e8005 100644
--- a/src/networksettings/connman/qnetworksettingsmanager_p.cpp
+++ b/src/networksettings/connman/qnetworksettingsmanager_p.cpp
@@ -37,6 +37,11 @@
QNetworkSettingsManagerPrivate::QNetworkSettingsManagerPrivate(QNetworkSettingsManager *parent)
:QObject(parent)
,q_ptr(parent)
+ , m_interfaceModel(Q_NULLPTR)
+ , m_serviceModel(Q_NULLPTR)
+ , m_serviceFilter(Q_NULLPTR)
+ , m_manager(Q_NULLPTR)
+ , m_agent(Q_NULLPTR)
{
qDBusRegisterMetaType<ConnmanMapStruct>();
qDBusRegisterMetaType<ConnmanMapStructList>();
@@ -54,13 +59,13 @@ QNetworkSettingsManagerPrivate::QNetworkSettingsManagerPrivate(QNetworkSettingsM
//List technologies
QDBusPendingReply<ConnmanMapStructList> reply = m_manager->GetTechnologies();
QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this);
- connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)),
- this, SLOT(getTechnologiesFinished(QDBusPendingCallWatcher*)));
+ connect(watcher, &QDBusPendingCallWatcher::finished,
+ this, &QNetworkSettingsManagerPrivate::getTechnologiesFinished);
reply = m_manager->GetServices();
watcher = new QDBusPendingCallWatcher(reply, this);
- connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)),
- this, SLOT(getServicesFinished(QDBusPendingCallWatcher*)));
+ connect(watcher, &QDBusPendingCallWatcher::finished,
+ this, &QNetworkSettingsManagerPrivate::getServicesFinished);
connect(m_manager, &NetConnmanManagerInterface::ServicesChanged, this, &QNetworkSettingsManagerPrivate::onServicesChanged);
@@ -93,25 +98,7 @@ void QNetworkSettingsManagerPrivate::getServicesFinished(QDBusPendingCallWatcher
foreach (const ConnmanMapStruct &object, reply.value()) {
const QString servicePath = object.objectPath.path();
- QNetworkSettingsService *service = new QNetworkSettingsService(servicePath, this);
- m_serviceModel->append(service);
-
- //Update status property
- QString n = qdbus_cast<QString>(object.propertyMap[PropertyName]);
- QString t = qdbus_cast<QString>(object.propertyMap[PropertyType]);
- QString s = qdbus_cast<QString>(object.propertyMap[PropertyState]);
-
- QNetworkSettingsType type;
- t >> type;
- QNetworkSettingsState state;
- s >> state;
-
- foreach (QNetworkSettingsInterface* item, m_interfaceModel.getModel()) {
- ConnmanSettingsInterface* technology = qobject_cast<ConnmanSettingsInterface*>(item);
- if (technology->name() == n && technology->type() == type.type()) {
- technology->setState(state.state());
- }
- }
+ handleNewService(servicePath);
}
emit q->servicesChanged();
}
@@ -156,9 +143,26 @@ void QNetworkSettingsManagerPrivate::onServicesChanged(ConnmanMapStructList chan
if (!found)
newServices.append(map.objectPath.path());
}
+
foreach (QString newService, newServices) {
- QNetworkSettingsService *service = new QNetworkSettingsService(newService, this);
+ handleNewService(newService);
+ }
+}
+
+void QNetworkSettingsManagerPrivate::handleNewService(const QString &servicePath)
+{
+ Q_Q(QNetworkSettingsManager);
+
+ QNetworkSettingsService *service = new QNetworkSettingsService(servicePath, this);
+
+ if (service->name().length() > 0 && service->type() != QNetworkSettingsType::Unknown) {
m_serviceModel->append(service);
+ emit q->servicesChanged();
+ }
+ else {
+ //Service name or type not set, wait for update
+ connect(service, &QNetworkSettingsService::nameChanged, this, &QNetworkSettingsManagerPrivate::serviceReady);
+ connect(service, &QNetworkSettingsService::typeChanged, this, &QNetworkSettingsManagerPrivate::serviceReady);
}
}
@@ -166,3 +170,24 @@ void QNetworkSettingsManagerPrivate::setUserAgent(QNetworkSettingsUserAgent *age
{
m_agent = agent;
}
+
+void QNetworkSettingsManagerPrivate::serviceReady()
+{
+ Q_Q(QNetworkSettingsManager);
+
+ QNetworkSettingsService* service = qobject_cast<QNetworkSettingsService*>(sender());
+ if (service->name().length() > 0 && service->type() != QNetworkSettingsType::Unknown) {
+ service->disconnect(this);
+ m_serviceModel->append(service);
+ emit q->servicesChanged();
+
+ //Update the interface state accordingly
+ foreach (QNetworkSettingsInterface* item, m_interfaceModel.getModel()) {
+ ConnmanSettingsInterface* technology = qobject_cast<ConnmanSettingsInterface*>(item);
+ if (technology->name() == service->name() && technology->type() == service->type()) {
+ technology->setState(technology->state());
+ }
+ }
+
+ }
+}
diff --git a/src/networksettings/connman/qnetworksettingsmanager_p.h b/src/networksettings/connman/qnetworksettingsmanager_p.h
index cb42654..b6e23ab 100644
--- a/src/networksettings/connman/qnetworksettingsmanager_p.h
+++ b/src/networksettings/connman/qnetworksettingsmanager_p.h
@@ -38,6 +38,7 @@
class NetConnmanManagerInterface;
class QNetworkSettingsServiceModel;
class QNetworkSettingsServiceFilter;
+class QNetworkSettingsService;
class QNetworkSettingsManagerPrivate : public QObject
{
@@ -47,13 +48,15 @@ public:
explicit QNetworkSettingsManagerPrivate(QNetworkSettingsManager *parent);
QNetworkSettingsManager *q_ptr;
void setUserAgent(QNetworkSettingsUserAgent *agent);
- QNetworkSettingsUserAgent *getUserAgent() {return m_agent;}
+ QNetworkSettingsUserAgent *userAgent() {return m_agent;}
public slots:
void getServicesFinished(QDBusPendingCallWatcher *watcher);
void getTechnologiesFinished(QDBusPendingCallWatcher *watcher);
void requestInput(const QString& service, const QString& type);
void onServicesChanged(ConnmanMapStructList changed, const QList<QDBusObjectPath> &removed);
-
+ void serviceReady();
+private:
+ void handleNewService(const QString& servicePath);
protected:
QNetworkSettingsInterfaceModel m_interfaceModel;
QNetworkSettingsServiceModel *m_serviceModel;
diff --git a/src/networksettings/connman/qnetworksettingsservice_p.cpp b/src/networksettings/connman/qnetworksettingsservice_p.cpp
index 8a7b2cf..e8aabff 100644
--- a/src/networksettings/connman/qnetworksettingsservice_p.cpp
+++ b/src/networksettings/connman/qnetworksettingsservice_p.cpp
@@ -362,6 +362,7 @@ void QNetworkSettingsServicePrivate::updateProperty(const QString& key, const QV
else if (key == PropertyType) {
QString value = qdbus_cast<QString>(val);
value >> m_type;
+ emit q->typeChanged();
}
else if (key == PropertyStrength) {
m_wifiConfig.setSignalStrength(val.toInt());
diff --git a/src/networksettings/connman/qnetworksettingsservice_p.h b/src/networksettings/connman/qnetworksettingsservice_p.h
index e9166d7..58adbb9 100644
--- a/src/networksettings/connman/qnetworksettingsservice_p.h
+++ b/src/networksettings/connman/qnetworksettingsservice_p.h
@@ -29,10 +29,11 @@
#ifndef QNETWORKSETTINGSSERVICEPRIVATE_H
#define QNETWORKSETTINGSSERVICEPRIVATE_H
-#include <QtDBus>
#include "qnetworksettingsservice.h"
#include "qnetworksettings.h"
+class QDBusPendingCallWatcher;
+class QDBusVariant;
class NetConnmanServiceInterface;
class QNetworkSettingsServicePrivate : public QObject
@@ -40,7 +41,7 @@ class QNetworkSettingsServicePrivate : public QObject
Q_OBJECT
Q_DECLARE_PUBLIC(QNetworkSettingsService)
public:
- QNetworkSettingsServicePrivate(const QString& aPath, QNetworkSettingsService *parent = nullptr);
+ QNetworkSettingsServicePrivate(const QString& aPath, QNetworkSettingsService *parent = Q_NULLPTR);
QNetworkSettingsService *q_ptr;
private slots:
diff --git a/src/networksettings/connman/qnetworksettingsuseragent_p.h b/src/networksettings/connman/qnetworksettingsuseragent_p.h
index ecce5ae..ff8c1d0 100644
--- a/src/networksettings/connman/qnetworksettingsuseragent_p.h
+++ b/src/networksettings/connman/qnetworksettingsuseragent_p.h
@@ -50,7 +50,7 @@ class QNetworkSettingsUserAgentPrivate : public QDBusAbstractAdaptor
Q_CLASSINFO("D-Bus Interface", "net.connman.Agent")
Q_DECLARE_PUBLIC(QNetworkSettingsUserAgent)
public:
- QNetworkSettingsUserAgentPrivate(QNetworkSettingsUserAgent *parent = nullptr);
+ QNetworkSettingsUserAgentPrivate(QNetworkSettingsUserAgent *parent = Q_NULLPTR);
void setUserCredentials(const QString& aUsername, const QString& aPassword);
void cancel();
void release();