From d911547fa765cfccbdc2e5389e795681ee7c9c3a Mon Sep 17 00:00:00 2001 From: Kimmo Ollila Date: Tue, 7 Jun 2016 16:03:38 +0300 Subject: Fixed connman backend crashes and changed it as default. Change-Id: I65c6f4bf1e89c8f26b7c83a0d911813e7941c5a1 Reviewed-by: Teemu Holappa --- src/networksettings/connman/connman_manager.xml | 10 ++++---- src/networksettings/connman/connmancommon.cpp | 4 ++-- src/networksettings/connman/connmancommon.h | 12 +++++----- .../connman/qnetworksettingsmanager_p.cpp | 27 ++++++++++++++-------- .../connman/qnetworksettingsmanager_p.h | 5 ++-- .../connman/qnetworksettingsservice_p.cpp | 4 ++-- src/networksettings/networksettings.pro | 6 ++--- 7 files changed, 39 insertions(+), 29 deletions(-) (limited to 'src/networksettings') diff --git a/src/networksettings/connman/connman_manager.xml b/src/networksettings/connman/connman_manager.xml index 5c52b27..c6ed244 100644 --- a/src/networksettings/connman/connman_manager.xml +++ b/src/networksettings/connman/connman_manager.xml @@ -14,17 +14,17 @@ - + - + - + @@ -90,13 +90,13 @@ - + - + diff --git a/src/networksettings/connman/connmancommon.cpp b/src/networksettings/connman/connmancommon.cpp index 90ab9ee..f609f22 100644 --- a/src/networksettings/connman/connmancommon.cpp +++ b/src/networksettings/connman/connmancommon.cpp @@ -29,7 +29,7 @@ #include "connmancommon.h" //Conversion operations for datatypes -const QDBusArgument &operator>>(const QDBusArgument &argument, ConnmanMap &obj) +const QDBusArgument &operator>>(const QDBusArgument &argument, ConnmanMapStruct &obj) { argument.beginStructure(); argument >> obj.objectPath >> obj.propertyMap; @@ -37,7 +37,7 @@ const QDBusArgument &operator>>(const QDBusArgument &argument, ConnmanMap &obj) return argument; } -QDBusArgument &operator<<(QDBusArgument &argument, const ConnmanMap &obj) +QDBusArgument &operator<<(QDBusArgument &argument, const ConnmanMapStruct &obj) { argument.beginStructure(); argument << obj.objectPath << obj.propertyMap; diff --git a/src/networksettings/connman/connmancommon.h b/src/networksettings/connman/connmancommon.h index 7748455..b50a11d 100644 --- a/src/networksettings/connman/connmancommon.h +++ b/src/networksettings/connman/connmancommon.h @@ -50,21 +50,21 @@ #define AttributeDisconnect QStringLiteral("disconnect") #define AttributeOneline QStringLiteral("online") -struct ConnmanMap { +struct ConnmanMapStruct { QDBusObjectPath objectPath; QVariantMap propertyMap; }; -QDBusArgument &operator<<(QDBusArgument &argument, const ConnmanMap &obj); -const QDBusArgument &operator>>(const QDBusArgument &argument, ConnmanMap &obj); +QDBusArgument &operator<<(QDBusArgument &argument, const ConnmanMapStruct &obj); +const QDBusArgument &operator>>(const QDBusArgument &argument, ConnmanMapStruct &obj); const QString &operator>>(const QString &argument, QNetworkSettingsType &obj); const QString &operator>>(const QString &argument, QNetworkSettingsState &obj); -typedef QList ConnmanMapList; +typedef QList ConnmanMapStructList; -Q_DECLARE_METATYPE( ConnmanMap ) -Q_DECLARE_METATYPE( ConnmanMapList ) +Q_DECLARE_METATYPE( ConnmanMapStruct ) +Q_DECLARE_METATYPE( ConnmanMapStructList ) #endif // CONNMANCOMMON_H diff --git a/src/networksettings/connman/qnetworksettingsmanager_p.cpp b/src/networksettings/connman/qnetworksettingsmanager_p.cpp index f77b331..125d242 100644 --- a/src/networksettings/connman/qnetworksettingsmanager_p.cpp +++ b/src/networksettings/connman/qnetworksettingsmanager_p.cpp @@ -32,11 +32,18 @@ #include "qnetworksettingsinterface.h" #include "qnetworksettingsinterface_p.h" #include "qnetworksettingsservicemodel.h" +#include "qnetworksettingsuseragent.h" QNetworkSettingsManagerPrivate::QNetworkSettingsManagerPrivate(QNetworkSettingsManager *parent) :QObject(parent) ,q_ptr(parent) { + qDBusRegisterMetaType(); + qDBusRegisterMetaType(); + + QNetworkSettingsUserAgent* userAgent = new QNetworkSettingsUserAgent(this); + this->setUserAgent(userAgent); + m_serviceModel = new QNetworkSettingsServiceModel(this); m_serviceFilter = new QNetworkSettingsServiceFilter(this); m_serviceFilter->setSourceModel(m_serviceModel); @@ -45,7 +52,7 @@ QNetworkSettingsManagerPrivate::QNetworkSettingsManagerPrivate(QNetworkSettingsM if (m_manager->isValid()) { //List technologies - QDBusPendingReply reply = m_manager->GetTechnologies(); + QDBusPendingReply reply = m_manager->GetTechnologies(); QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this); connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), this, SLOT(getTechnologiesFinished(QDBusPendingCallWatcher*))); @@ -55,7 +62,7 @@ QNetworkSettingsManagerPrivate::QNetworkSettingsManagerPrivate(QNetworkSettingsM connect(watcher, SIGNAL(finished(QDBusPendingCallWatcher*)), this, SLOT(getServicesFinished(QDBusPendingCallWatcher*))); - connect(m_manager, &NetConnmanManagerInterface::ServicesChanged, this, &QNetworkSettingsManagerPrivate::servicesChanged); + connect(m_manager, &NetConnmanManagerInterface::ServicesChanged, this, &QNetworkSettingsManagerPrivate::onServicesChanged); m_manager->RegisterAgent(QDBusObjectPath(AgentPath)); } @@ -72,17 +79,19 @@ void QNetworkSettingsManagerPrivate::requestInput(const QString& service, const if (servicePtr->id() == service) emit servicePtr->showCrendentialInput(); } + m_agent->showUserCredentialsInput(); } void QNetworkSettingsManagerPrivate::getServicesFinished(QDBusPendingCallWatcher *watcher) { Q_Q(QNetworkSettingsManager); - QDBusPendingReply reply = *watcher; + QDBusPendingReply reply = *watcher; watcher->deleteLater(); + if (reply.isError()) return; - foreach (const ConnmanMap &object, reply.value()) { + foreach (const ConnmanMapStruct &object, reply.value()) { const QString servicePath = object.objectPath.path(); QNetworkSettingsService *service = new QNetworkSettingsService(servicePath, this); m_serviceModel->append(service); @@ -111,12 +120,12 @@ void QNetworkSettingsManagerPrivate::getTechnologiesFinished(QDBusPendingCallWat { Q_Q(QNetworkSettingsManager); - QDBusPendingReply reply = *watcher; + QDBusPendingReply reply = *watcher; watcher->deleteLater(); if (reply.isError()) return; - foreach (const ConnmanMap &object, reply.value()) { + foreach (const ConnmanMapStruct &object, reply.value()) { ConnmanSettingsInterface *item = new ConnmanSettingsInterface(object.objectPath.path(), object.propertyMap, this); if (item->type() == QNetworkSettingsType::Wired) { @@ -129,7 +138,7 @@ void QNetworkSettingsManagerPrivate::getTechnologiesFinished(QDBusPendingCallWat } } -void QNetworkSettingsManagerPrivate::servicesChanged(ConnmanMapList changed, const QList &removed) +void QNetworkSettingsManagerPrivate::onServicesChanged(ConnmanMapStructList changed, const QList &removed) { foreach (QDBusObjectPath path, removed) { QList serviceList = m_serviceModel->getModel(); @@ -141,7 +150,7 @@ void QNetworkSettingsManagerPrivate::servicesChanged(ConnmanMapList changed, con } QStringList newServices; - foreach (ConnmanMap map, changed) { + foreach (ConnmanMapStruct map, changed) { bool found = false; foreach (QNetworkSettingsService* service, m_serviceModel->getModel()) { if (service->id() == map.objectPath.path()) { @@ -160,5 +169,5 @@ void QNetworkSettingsManagerPrivate::servicesChanged(ConnmanMapList changed, con void QNetworkSettingsManagerPrivate::setUserAgent(QNetworkSettingsUserAgent *agent) { - Q_UNUSED(agent); + m_agent = agent; } diff --git a/src/networksettings/connman/qnetworksettingsmanager_p.h b/src/networksettings/connman/qnetworksettingsmanager_p.h index 37a57dd..cb42654 100644 --- a/src/networksettings/connman/qnetworksettingsmanager_p.h +++ b/src/networksettings/connman/qnetworksettingsmanager_p.h @@ -47,12 +47,12 @@ public: explicit QNetworkSettingsManagerPrivate(QNetworkSettingsManager *parent); QNetworkSettingsManager *q_ptr; void setUserAgent(QNetworkSettingsUserAgent *agent); - + QNetworkSettingsUserAgent *getUserAgent() {return m_agent;} public slots: void getServicesFinished(QDBusPendingCallWatcher *watcher); void getTechnologiesFinished(QDBusPendingCallWatcher *watcher); void requestInput(const QString& service, const QString& type); - void servicesChanged(ConnmanMapList changed, const QList &removed); + void onServicesChanged(ConnmanMapStructList changed, const QList &removed); protected: QNetworkSettingsInterfaceModel m_interfaceModel; @@ -60,6 +60,7 @@ protected: QNetworkSettingsServiceFilter *m_serviceFilter; private: NetConnmanManagerInterface *m_manager; + QNetworkSettingsUserAgent *m_agent; }; #endif // QNETWORKSETTINGSMANAGERPRIVATE_H diff --git a/src/networksettings/connman/qnetworksettingsservice_p.cpp b/src/networksettings/connman/qnetworksettingsservice_p.cpp index c7ac462..8a7b2cf 100644 --- a/src/networksettings/connman/qnetworksettingsservice_p.cpp +++ b/src/networksettings/connman/qnetworksettingsservice_p.cpp @@ -239,8 +239,8 @@ QNetworkSettingsServicePrivate::QNetworkSettingsServicePrivate(const QString& id ,q_ptr(parent) ,m_id(id) { - qDBusRegisterMetaType(); - qDBusRegisterMetaType(); + qDBusRegisterMetaType(); + qDBusRegisterMetaType(); m_service = new NetConnmanServiceInterface(QStringLiteral("net.connman"), m_id, QDBusConnection::systemBus(), this); diff --git a/src/networksettings/networksettings.pro b/src/networksettings/networksettings.pro index 7220625..9ae1bb3 100644 --- a/src/networksettings/networksettings.pro +++ b/src/networksettings/networksettings.pro @@ -9,11 +9,11 @@ QT = core network MODULE = networksettings load(qt_module) -connman { - include(connman.pri) +wpasupplicant { + include(wpasupplicant.pri) } else { - include(wpasupplicant.pri) + include(connman.pri) } # Input -- cgit v1.2.3