From a754a1323234be2feb9945128837875d87c3cc34 Mon Sep 17 00:00:00 2001 From: Sami Nurmenniemi Date: Tue, 7 Nov 2017 15:09:55 +0200 Subject: Fix cancel button on WiFi passphrase screen Task-number: QTBUG-64230 Change-Id: I3859293f2d9422be9a253143544470f39be937ea Reviewed-by: Kari Oikarinen Reviewed-by: Teemu Holappa --- .../connman/qnetworksettingsuseragent_p.cpp | 20 +++- .../connman/qnetworksettingsuseragent_p.h | 2 +- src/settingsui/network/PassphraseEnter.qml | 132 ++++++--------------- 3 files changed, 55 insertions(+), 99 deletions(-) diff --git a/src/networksettings/connman/qnetworksettingsuseragent_p.cpp b/src/networksettings/connman/qnetworksettingsuseragent_p.cpp index 4d6e10b..ede5095 100644 --- a/src/networksettings/connman/qnetworksettingsuseragent_p.cpp +++ b/src/networksettings/connman/qnetworksettingsuseragent_p.cpp @@ -44,8 +44,14 @@ QNetworkSettingsUserAgentPrivate::QNetworkSettingsUserAgentPrivate(QNetworkSetti void QNetworkSettingsUserAgentPrivate::cancel() { // handle method call net.connman.Agent.Cancel + if (!m_pendingReply) + return; + m_pendingReply = false; - QMetaObject::invokeMethod(parent(), "Cancel"); + QDBusMessage errorMessage = m_pendingMessage.createErrorReply( + QStringLiteral("net.connman.Agent.Error.Canceled"), + QStringLiteral("")); + QDBusConnection::systemBus().send(errorMessage); } void QNetworkSettingsUserAgentPrivate::release() @@ -74,8 +80,9 @@ QVariantMap QNetworkSettingsUserAgentPrivate::RequestInput(const QDBusObjectPath Q_UNUSED(path); Q_UNUSED(params); msg.setDelayedReply(true); - m_reply = msg.createReply(); + m_pendingReply = true; + m_pendingMessage = msg; emit q->showUserCredentialsInput(); return QVariantMap(); } @@ -83,9 +90,14 @@ QVariantMap QNetworkSettingsUserAgentPrivate::RequestInput(const QDBusObjectPath void QNetworkSettingsUserAgentPrivate::setPassphrase(const QString& passphrase) { m_passphrase = passphrase; + if (!m_pendingReply) + return; + QVariantMap response; response[PropertyPassphrase] = m_passphrase; - m_reply << response; + + QDBusMessage reply = m_pendingMessage.createReply(); + reply << response; m_pendingReply = false; - QDBusConnection::systemBus().send(m_reply); + QDBusConnection::systemBus().send(reply); } diff --git a/src/networksettings/connman/qnetworksettingsuseragent_p.h b/src/networksettings/connman/qnetworksettingsuseragent_p.h index fb96645..248b9ad 100644 --- a/src/networksettings/connman/qnetworksettingsuseragent_p.h +++ b/src/networksettings/connman/qnetworksettingsuseragent_p.h @@ -72,7 +72,7 @@ public Q_SLOTS: // Dbus methods void registerAgent(); private: QNetworkSettingsUserAgent *q_ptr; - QDBusMessage m_reply; + QDBusMessage m_pendingMessage; bool m_pendingReply; QString m_passphrase; }; diff --git a/src/settingsui/network/PassphraseEnter.qml b/src/settingsui/network/PassphraseEnter.qml index de32d2a..2841745 100644 --- a/src/settingsui/network/PassphraseEnter.qml +++ b/src/settingsui/network/PassphraseEnter.qml @@ -34,106 +34,50 @@ import QtDeviceUtilities.NetworkSettings 1.0 Item { id: root - Row { - id: backRow - anchors.top: parent.top - anchors.left: parent.left - width: parent.width * 0.2 - height: parent.height * 0.035 - Image { - id: passBackIcon - anchors.verticalCenter: parent.verticalCenter - height: parent.height - width: height - fillMode: Image.PreserveAspectFit - source: "../newIcons/back_icon.svg" + Column { + spacing: pluginMain.spacing + anchors.margins: viewSettings.pageMargin - ColorOverlay { - source: passBackIcon - anchors.fill: passBackIcon - color: viewSettings.buttonGreenColor - visible: true - } - MouseArea { - anchors.fill: parent - onClicked: settingsLoader.source = "qrc:/network/NetworkSettings.qml" - } - } Text { - id: backText - anchors.top: parent.top - height: parent.height - anchors.verticalCenter: parent.verticalCenter - verticalAlignment: Text.AlignVCenter - fontSizeMode: Text.Fit - minimumPixelSize: 1 - font.pixelSize: height - color: viewSettings.buttonGreenColor - text: "Back" - MouseArea { - anchors.fill: parent - onClicked: settingsLoader.source = "qrc:/network/NetworkSettings.qml" - } + id: enterPassphraseText + font.pixelSize: pluginMain.subTitleFontSize + font.family: appFont + color: "white" + text: qsTr("Enter Passphrase") } - } - - Text { - id: enterPassphraseText - anchors.top: backRow.bottom - anchors.topMargin: parent.height * 0.05 - anchors.left: parent.left - fontSizeMode: Text.Fit - minimumPixelSize: 1 - font.pixelSize: parent.height * 0.045 - color: "white" - text: qsTr("Enter Passphrase") - } - Rectangle { - id: btmLine - anchors.top: enterPassphraseText.bottom - anchors.topMargin: parent.height * 0.025 - anchors.left: enterPassphraseText.left - width: parent.width * 0.275 - height: parent.height * 0.005 - } - TextField { - id: passField - width: root.width * 0.4 - height: parent.height * 0.075 - anchors.top: btmLine.bottom - anchors.topMargin: parent.height * 0.05 - color: "white" - echoMode: TextInput.Password - background: Rectangle { - color: "transparent" - border.color: passField.focus ? viewSettings.buttonGreenColor : viewSettings.buttonGrayColor - border.width: passField.focus ? width * 0.01 : 2 - } - } - Row { - height: passField.height - anchors.top: passField.bottom - anchors.topMargin: parent.height * 0.025 - spacing: parent.width * 0.025 - QtButton { - id: setButton - height: parent.height - text: qsTr("SET") - onClicked: { - passField.focus = false - NetworkSettingsManager.userAgent.setPassphrase(passField.text) + TextField { + id: passField + width: root.width * 0.4 + height: root.height * 0.075 + color: "white" + echoMode: TextInput.Password + background: Rectangle { + color: "transparent" + border.color: passField.focus ? viewSettings.buttonGreenColor : viewSettings.buttonGrayColor + border.width: passField.focus ? width * 0.01 : 2 } } - QtButton { - id: cancelButton - height: parent.height - text: qsTr("CANCEL") - borderColor: "transparent" - fillColor: viewSettings.buttonGrayColor - onClicked: { - passField.focus = false - passField.clear() + + Row{ + spacing: parent.width * 0.025 + QtButton { + id: setButton + text: qsTr("SET") + onClicked: { + passField.focus = false + NetworkSettingsManager.userAgent.setPassphrase(passField.text) + } + } + QtButton { + id: cancelButton + text: qsTr("CANCEL") + borderColor: "transparent" + fillColor: viewSettings.buttonGrayColor + onClicked: { + NetworkSettingsManager.userAgent.cancelInput() + settingsLoader.source = "qrc:/network/NetworkSettings.qml" + } } } } -- cgit v1.2.3