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

View File

@ -22,26 +22,35 @@ Page {
id: networkManager id: networkManager
} }
function setupDevice(btDeviceInfo) { function connectDevice(btDeviceInfo) {
networkManager.bluetoothDeviceInfo = btDeviceInfo networkManager.bluetoothDeviceInfo = btDeviceInfo
networkManager.connectDevice(); 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 { Connections {
target: networkManager.manager target: networkManager.manager
onInitializedChanged: { onInitializedChanged: {
if (networkManager.manager.initialized) { if (networkManager.manager.initialized) {
if (networkManager.manager.currentConnection) { setupDevice()
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}))
})
}
} else { } else {
pageStack.pop(root) pageStack.pop(root)
} }
@ -85,7 +94,7 @@ Page {
subText: model.address subText: model.address
onClicked: { onClicked: {
root.setupDevice(bluetoothDiscovery.deviceInfos.get(index)) root.connectDevice(bluetoothDiscovery.deviceInfos.get(index))
} }
} }
} }
@ -219,6 +228,8 @@ Page {
onBackPressed: pageStack.pop() onBackPressed: pageStack.pop()
} }
property string deviceName
ColumnLayout { ColumnLayout {
anchors { left: parent.left; right: parent.right; verticalCenter: parent.verticalCenter; margins: app.margins } anchors { left: parent.left; right: parent.right; verticalCenter: parent.verticalCenter; margins: app.margins }
spacing: app.margins spacing: app.margins
@ -227,21 +238,11 @@ Page {
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
running: true running: true
} }
Label {
id: workingMessage
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
text: networkManager.manager.statusText
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
}
Label { Label {
id: initializingMessage id: initializingMessage
Layout.fillWidth: true Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter Layout.alignment: Qt.AlignHCenter
text: networkManager.manager.initializing ? qsTr("Initializing services...") : "" text: qsTr("Connecting to %1").arg(connectingPage.deviceName)
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
} }

View File

@ -10,6 +10,8 @@ Page {
property var networkManagerController: null property var networkManagerController: null
property var nymeaDiscovery: null property var nymeaDiscovery: null
signal done()
header: GuhHeader { header: GuhHeader {
text: qsTr("Wireless network setup") text: qsTr("Wireless network setup")
onBackPressed: { onBackPressed: {
@ -101,6 +103,18 @@ Page {
elide: Text.ElideRight 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 { Button {
id: connectButton id: connectButton
visible: url != "" visible: url != ""
@ -130,8 +144,7 @@ Page {
Layout.leftMargin: app.margins; Layout.rightMargin: app.margins Layout.leftMargin: app.margins; Layout.rightMargin: app.margins
text: qsTr("Close wireless setup") text: qsTr("Close wireless setup")
onClicked: { onClicked: {
pageStack.pop() root.done()
pageStack.pop()
} }
} }
} }