fix wifi setup flow

it didn't exit the tool properly in certain circumstances
This commit is contained in:
Michael Zanetti 2018-10-24 13:21:35 +02:00
parent bf1dc9cce0
commit 6580a954ce
3 changed files with 43 additions and 29 deletions

View File

@ -140,7 +140,7 @@ void WirelessSetupManager::loadNetworks()
m_readingResponse = true;
m_inputDataStream.clear();
setStatusText("WifiSetupManager: Loading wifi network list...");
setStatusText("Loading wifi network list...");
m_working = true;
emit workingChanged();
@ -167,7 +167,7 @@ void WirelessSetupManager::loadCurrentConnection()
m_readingResponse = false;
m_inputDataStream.clear();
setStatusText("WifiSetupManager: Loading current connection data");
setStatusText("Loading current connection data");
m_working = true;
emit workingChanged();
@ -191,7 +191,7 @@ void WirelessSetupManager::performWifiScan()
return;
}
setStatusText("WifiSetupManager: Perform refresh...");
setStatusText("Perform refresh...");
m_working = true;
emit workingChanged();

View File

@ -22,26 +22,35 @@ Page {
id: networkManager
}
function setupDevice(btDeviceInfo) {
function connectDevice(btDeviceInfo) {
networkManager.bluetoothDeviceInfo = btDeviceInfo
networkManager.connectDevice();
pageStack.push(connectingPageComponent)
print("**** connecting")
pageStack.push(connectingPageComponent, {deviceName: btDeviceInfo.name})
}
function setupDevice() {
pageStack.pop(root, StackView.Immediate)
if (networkManager.manager.currentConnection) {
print("***** pushing WirelessSetupPage with networkManager:", networkManager)
var page = pageStack.push(Qt.resolvedUrl("WirelessSetupPage.qml"), { networkManagerController: networkManager, nymeaDiscovery: root.nymeaDiscovery } )
page.done.connect(function() {
pageStack.pop(root, StackView.Immediate);
pageStack.pop();
})
} else {
var page = pageStack.push(Qt.resolvedUrl("ConnectWiFiPage.qml"), { networkManagerController: networkManager } )
page.connected.connect(function() {
setupDevice();
})
}
}
Connections {
target: networkManager.manager
onInitializedChanged: {
if (networkManager.manager.initialized) {
if (networkManager.manager.currentConnection) {
print("***** pushing WirelessSetupPage with networkManager:", networkManager)
pageStack.replace(Qt.resolvedUrl("WirelessSetupPage.qml"), { networkManagerController: networkManager, nymeaDiscovery: root.nymeaDiscovery } )
} else {
var page = pageStack.replace(Qt.resolvedUrl("ConnectWiFiPage.qml"), { networkManagerController: networkManager } )
page.connected.connect(function() {
print("connected signal received")
pageStack.replace(page, Qt.resolvedUrl("WirelessSetupPage.qml", {NetworkManagerController: networkManager, nymeaDiscovery: root.nymeaDiscovery}))
})
}
setupDevice()
} else {
pageStack.pop(root)
}
@ -85,7 +94,7 @@ Page {
subText: model.address
onClicked: {
root.setupDevice(bluetoothDiscovery.deviceInfos.get(index))
root.connectDevice(bluetoothDiscovery.deviceInfos.get(index))
}
}
}
@ -219,6 +228,8 @@ Page {
onBackPressed: pageStack.pop()
}
property string deviceName
ColumnLayout {
anchors { left: parent.left; right: parent.right; verticalCenter: parent.verticalCenter; margins: app.margins }
spacing: app.margins
@ -227,21 +238,11 @@ Page {
Layout.alignment: Qt.AlignHCenter
running: true
}
Label {
id: workingMessage
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
text: networkManager.manager.statusText
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
}
Label {
id: initializingMessage
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
text: networkManager.manager.initializing ? qsTr("Initializing services...") : ""
text: qsTr("Connecting to %1").arg(connectingPage.deviceName)
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
}

View File

@ -10,6 +10,8 @@ Page {
property var networkManagerController: null
property var nymeaDiscovery: null
signal done()
header: GuhHeader {
text: qsTr("Wireless network setup")
onBackPressed: {
@ -101,6 +103,18 @@ Page {
elide: Text.ElideRight
}
RowLayout {
Layout.leftMargin: app.margins; Layout.rightMargin: app.margins
visible: !connectButton.visible
spacing: app.margins
Label {
Layout.fillWidth: true
text: qsTr("Waiting for the %1 box to appear in your network.").arg(app.systemName)
wrapMode: Text.WordWrap
}
BusyIndicator { }
}
Button {
id: connectButton
visible: url != ""
@ -130,8 +144,7 @@ Page {
Layout.leftMargin: app.margins; Layout.rightMargin: app.margins
text: qsTr("Close wireless setup")
onClicked: {
pageStack.pop()
pageStack.pop()
root.done()
}
}
}