Preserve Wi-Fi password input during scans
This commit is contained in:
@@ -42,6 +42,7 @@ Panel {
|
|||||||
property string failureSsid: ""
|
property string failureSsid: ""
|
||||||
property string failureReason: ""
|
property string failureReason: ""
|
||||||
property string passwordSsid: ""
|
property string passwordSsid: ""
|
||||||
|
property string passwordText: ""
|
||||||
|
|
||||||
// True while any wifi action is mid-flight. Rows
|
// True while any wifi action is mid-flight. Rows
|
||||||
// disable themselves on this so clicks on the other rows don't silently
|
// disable themselves on this so clicks on the other rows don't silently
|
||||||
@@ -122,6 +123,7 @@ Panel {
|
|||||||
// the inline-editor case where focus was handed off to a child.
|
// the inline-editor case where focus was handed off to a child.
|
||||||
onPasswordSsidChanged: {
|
onPasswordSsidChanged: {
|
||||||
if (passwordSsid === "" && opened) {
|
if (passwordSsid === "" && opened) {
|
||||||
|
passwordText = ""
|
||||||
Qt.callLater(function() { if (keyCatcher) keyCatcher.forceActiveFocus() })
|
Qt.callLater(function() { if (keyCatcher) keyCatcher.forceActiveFocus() })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -133,6 +135,12 @@ Panel {
|
|||||||
if (wifiNetworks.length === 0) {
|
if (wifiNetworks.length === 0) {
|
||||||
selectedIndex = -1
|
selectedIndex = -1
|
||||||
if (focusSection === "wifi") focusSection = "dns"
|
if (focusSection === "wifi") focusSection = "dns"
|
||||||
|
} else if (passwordSsid !== "") {
|
||||||
|
var passwordIndex = wifiIndexForSsid(passwordSsid)
|
||||||
|
if (passwordIndex >= 0) {
|
||||||
|
selectedIndex = passwordIndex
|
||||||
|
focusSection = "wifi"
|
||||||
|
}
|
||||||
} else if (selectedIndex >= wifiNetworks.length) {
|
} else if (selectedIndex >= wifiNetworks.length) {
|
||||||
selectedIndex = wifiNetworks.length - 1
|
selectedIndex = wifiNetworks.length - 1
|
||||||
} else if (selectedIndex < 0 && opened) {
|
} else if (selectedIndex < 0 && opened) {
|
||||||
@@ -161,7 +169,7 @@ Panel {
|
|||||||
var net = wifiNetworks[selectedIndex]
|
var net = wifiNetworks[selectedIndex]
|
||||||
if (!net) return
|
if (!net) return
|
||||||
if (net.connected) { disconnect(net.network); return }
|
if (net.connected) { disconnect(net.network); return }
|
||||||
if (isProtected(net.security) && !net.known) { passwordSsid = net.ssid; return }
|
if (isProtected(net.security) && !net.known) { openPasswordPrompt(net.ssid); return }
|
||||||
connectKnown(net.ssid)
|
connectKnown(net.ssid)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -330,6 +338,11 @@ Panel {
|
|||||||
return security !== WifiSecurityType.Open
|
return security !== WifiSecurityType.Open
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function openPasswordPrompt(ssid) {
|
||||||
|
if (passwordSsid !== ssid) passwordText = ""
|
||||||
|
passwordSsid = ssid
|
||||||
|
}
|
||||||
|
|
||||||
function networkForSsid(ssid) {
|
function networkForSsid(ssid) {
|
||||||
var networks = wifiNetworkObjects || []
|
var networks = wifiNetworkObjects || []
|
||||||
for (var i = 0; i < networks.length; i++) {
|
for (var i = 0; i < networks.length; i++) {
|
||||||
@@ -338,6 +351,13 @@ Panel {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function wifiIndexForSsid(ssid) {
|
||||||
|
for (var i = 0; i < wifiNetworks.length; i++) {
|
||||||
|
if (wifiNetworks[i] && wifiNetworks[i].ssid === ssid) return i
|
||||||
|
}
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
|
||||||
function runNetworkAction(kind, network, callback) {
|
function runNetworkAction(kind, network, callback) {
|
||||||
if (actionKind !== "" || !network) return
|
if (actionKind !== "" || !network) return
|
||||||
var ssid = network.name || ""
|
var ssid = network.name || ""
|
||||||
@@ -902,7 +922,7 @@ Panel {
|
|||||||
target: row.net ? row.net.network : null
|
target: row.net ? row.net.network : null
|
||||||
function onConnectionFailed(reason) {
|
function onConnectionFailed(reason) {
|
||||||
root.failNetworkAction(row.net.network, reason)
|
root.failNetworkAction(row.net.network, reason)
|
||||||
if (reason === ConnectionFailReason.NoSecrets) root.passwordSsid = row.net.ssid
|
if (reason === ConnectionFailReason.NoSecrets) root.openPasswordPrompt(row.net.ssid)
|
||||||
}
|
}
|
||||||
function onConnectedChanged() {
|
function onConnectedChanged() {
|
||||||
if (row.net) root.checkActionCompletion(row.net.network)
|
if (row.net) root.checkActionCompletion(row.net.network)
|
||||||
@@ -963,7 +983,7 @@ Panel {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (row.isProtected && !row.isKnown) {
|
if (row.isProtected && !row.isKnown) {
|
||||||
root.passwordSsid = row.net.ssid
|
root.openPasswordPrompt(row.net.ssid)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
root.connectKnown(row.net.ssid)
|
root.connectKnown(row.net.ssid)
|
||||||
@@ -1097,11 +1117,13 @@ Panel {
|
|||||||
horizontalPadding: Style.spacing.controlGap
|
horizontalPadding: Style.spacing.controlGap
|
||||||
verticalPadding: Style.spacing.controlPaddingY
|
verticalPadding: Style.spacing.controlPaddingY
|
||||||
enabled: !row.isBusy
|
enabled: !row.isBusy
|
||||||
|
text: row.isPasswordOpen ? root.passwordText : ""
|
||||||
|
|
||||||
onAccepted: {
|
onAccepted: {
|
||||||
if (!root.busy && row.net && text.length > 0) root.connectWithPassphrase(row.net.ssid, text)
|
if (!root.busy && row.net && text.length > 0) root.connectWithPassphrase(row.net.ssid, text)
|
||||||
}
|
}
|
||||||
Keys.onEscapePressed: { root.passwordSsid = ""; text = "" }
|
onTextChanged: if (row.isPasswordOpen && text !== root.passwordText) root.passwordText = text
|
||||||
|
Keys.onEscapePressed: { root.passwordSsid = ""; root.passwordText = "" }
|
||||||
|
|
||||||
onVisibleChanged: if (visible) Qt.callLater(forceActiveFocus)
|
onVisibleChanged: if (visible) Qt.callLater(forceActiveFocus)
|
||||||
Component.onCompleted: if (visible) Qt.callLater(forceActiveFocus)
|
Component.onCompleted: if (visible) Qt.callLater(forceActiveFocus)
|
||||||
@@ -1143,7 +1165,7 @@ Panel {
|
|||||||
tooltipText: "Connect"
|
tooltipText: "Connect"
|
||||||
foreground: root.bar.foreground
|
foreground: root.bar.foreground
|
||||||
fontFamily: root.bar.fontFamily
|
fontFamily: root.bar.fontFamily
|
||||||
onClicked: if (row.net) root.connectWithPassphrase(row.net.ssid, pwField.text)
|
onClicked: if (row.net) root.connectWithPassphrase(row.net.ssid, root.passwordText)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user