diff options
author | Ville Voutilainen <ville.voutilainen@qt.io> | 2018-04-26 11:57:16 +0300 |
---|---|---|
committer | Ville Voutilainen <ville.voutilainen@qt.io> | 2018-04-27 09:51:53 +0000 |
commit | 2215248c450b6bd3f728e813f289f099d4301523 (patch) | |
tree | e68b66fa839ce3695b45fca3254e84076185ec1a /src/networksettings/connman/qnetworksettingsuseragent_p.cpp | |
parent | 518749701642b9d93773b5599e9a64ecbc640b9a (diff) |
Add support for wi-fi networks with hidden SSID
Task-number: QTBUG-62661
Change-Id: I894f37d2ac397ca2a10db92b1daec9997a9733bb
Reviewed-by: Teemu Holappa <teemu.holappa@qt.io>
Diffstat (limited to 'src/networksettings/connman/qnetworksettingsuseragent_p.cpp')
-rw-r--r-- | src/networksettings/connman/qnetworksettingsuseragent_p.cpp | 62 |
1 files changed, 46 insertions, 16 deletions
diff --git a/src/networksettings/connman/qnetworksettingsuseragent_p.cpp b/src/networksettings/connman/qnetworksettingsuseragent_p.cpp index e9e8063..5052b74 100644 --- a/src/networksettings/connman/qnetworksettingsuseragent_p.cpp +++ b/src/networksettings/connman/qnetworksettingsuseragent_p.cpp @@ -67,7 +67,10 @@ void QNetworkSettingsUserAgentPrivate::ReportError(const QDBusObjectPath &path, Q_Q(QNetworkSettingsUserAgent); Q_UNUSED(path); Q_UNUSED(param); - emit q->error(); + if (!m_ssid.isEmpty()) + q->requestNextConnection(); + else + emit q->error(); } void QNetworkSettingsUserAgentPrivate::registerAgent() @@ -80,28 +83,55 @@ QVariantMap QNetworkSettingsUserAgentPrivate::RequestInput(const QDBusObjectPath { Q_Q(QNetworkSettingsUserAgent); Q_UNUSED(path); - Q_UNUSED(params); - msg.setDelayedReply(true); - - m_pendingReply = true; - m_pendingMessage = msg; - emit q->showUserCredentialsInput(); - return QVariantMap(); + QVariant name = params[PropertyName]; + if (!name.isValid()) { + m_ssid.clear(); + } + QVariantMap response; + QVariant passPhrase = params[PropertyPassphrase]; + if (name.isValid() && !m_ssid.isEmpty()) { + response[PropertyName] = m_ssid; + } + if (passPhrase.isValid()) { + if (!m_passphrase.isEmpty()) { + response[PropertyPassphrase] = m_passphrase; + } else { + msg.setDelayedReply(true); + m_pendingMessage = msg; + m_pendingReply = true; + emit q->showUserCredentialsInput(); + return QVariantMap(); + } + } + return response; } void QNetworkSettingsUserAgentPrivate::setPassphrase(const QString& passphrase) { m_passphrase = passphrase; - if (!m_pendingReply) - return; + if (m_pendingReply) { + QVariantMap response; + if (!m_ssid.isEmpty()) { + response[PropertyName] = m_ssid; + } + response[PropertyPassphrase] = m_passphrase; + QDBusMessage reply = m_pendingMessage.createReply(); + reply << response; + m_pendingReply = false; + QDBusConnection::systemBus().send(reply); + } +} - QVariantMap response; - response[PropertyPassphrase] = m_passphrase; +void QNetworkSettingsUserAgentPrivate::setSsidAndPassphrase(const QString &ssid, const QString &passphrase) +{ + m_ssid = ssid; + m_passphrase = passphrase; +} - QDBusMessage reply = m_pendingMessage.createReply(); - reply << response; - m_pendingReply = false; - QDBusConnection::systemBus().send(reply); +void QNetworkSettingsUserAgentPrivate::clearConnectionState() +{ + m_passphrase.clear(); + m_ssid.clear(); } QT_END_NAMESPACE |