165 lines
3.8 KiB
QML
165 lines
3.8 KiB
QML
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtQuick.Layouts
|
|
import EVChargerApp
|
|
|
|
Loader {
|
|
id: loader
|
|
|
|
signal closeRequested()
|
|
|
|
property alias url: theDeviceConnection.url
|
|
property alias password: theDeviceConnection.password
|
|
|
|
function backPressed() {
|
|
if (connectionDisturbed.visible) {
|
|
closeRequested()
|
|
return true
|
|
}
|
|
else
|
|
return item.backPressed()
|
|
}
|
|
|
|
ListModel {
|
|
id: collectedMessages
|
|
|
|
function push(message) {
|
|
if (collectedMessages.count >= 15)
|
|
collectedMessages.remove(0);
|
|
collectedMessages.append({message});
|
|
}
|
|
}
|
|
|
|
DeviceConnection {
|
|
id: theDeviceConnection
|
|
|
|
Component.onCompleted: start()
|
|
|
|
settings: theSettings
|
|
|
|
onLogMessage: (message) => collectedMessages.push(message)
|
|
|
|
onAuthRequired: {
|
|
passwordError.visible = false;
|
|
passwordDialog.open();
|
|
}
|
|
onAuthError: function(message) {
|
|
passwordError.visible = true;
|
|
passwordError.text = message;
|
|
passwordDialog.open();
|
|
}
|
|
onAuthImpossible: authImpossibleDialog.open()
|
|
}
|
|
|
|
sourceComponent: Component {
|
|
ConnectingScreen {
|
|
anchors.fill: parent
|
|
|
|
onConnected: loader.sourceComponent = mainScreen;
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: mainScreen
|
|
|
|
MainScreen {
|
|
onCloseRequested: {
|
|
connectionDisturbed.close()
|
|
loader.closeRequested()
|
|
}
|
|
|
|
Connections {
|
|
target: theDeviceConnection
|
|
|
|
function onShowDisturbed() {
|
|
connectionDisturbed.open()
|
|
}
|
|
function onHideDisturbed() {
|
|
connectionDisturbed.close()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
CenteredDialog {
|
|
id: passwordDialog
|
|
|
|
title: qsTr("Password required")
|
|
standardButtons: Dialog.Ok | Dialog.Cancel
|
|
focus: true
|
|
modal: true
|
|
|
|
onAccepted: theDeviceConnection.sendAuth(passwordInput.text)
|
|
onRejected: loader.closeRequested()
|
|
|
|
contentItem: GridLayout {
|
|
property int minimumInputSize: 120
|
|
|
|
id: grid
|
|
|
|
columns: 2
|
|
|
|
Text {
|
|
id: passwordError
|
|
|
|
Layout.columnSpan: 2
|
|
color: "red"
|
|
}
|
|
|
|
Text {
|
|
text: qsTr("Password:")
|
|
Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
|
|
}
|
|
|
|
TextField {
|
|
id: passwordInput
|
|
focus: true
|
|
Layout.fillWidth: true
|
|
Layout.minimumWidth: grid.minimumInputSize
|
|
Layout.alignment: Qt.AlignLeft | Qt.AlignBaseline
|
|
placeholderText: qsTr("Password")
|
|
echoMode: TextInput.PasswordEchoOnEdit
|
|
onAccepted: passwordDialog.accept();
|
|
}
|
|
}
|
|
}
|
|
|
|
CenteredDialog {
|
|
id: authImpossibleDialog
|
|
|
|
title: qsTr("Authentication impossible!")
|
|
standardButtons: Dialog.Ok
|
|
focus: true
|
|
modal: true
|
|
|
|
onAccepted: loader.closeRequested()
|
|
onRejected: loader.closeRequested()
|
|
|
|
contentItem: Text {
|
|
text: qsTr("To use this password remotely a password has to be setup first. This can be done over the AccessPoint.");
|
|
}
|
|
}
|
|
|
|
Popup {
|
|
id: connectionDisturbed
|
|
|
|
parent: Overlay.overlay
|
|
anchors.centerIn: Overlay.overlay
|
|
|
|
// x: 100
|
|
// y: 100
|
|
// width: 200
|
|
// height: 300
|
|
|
|
modal: true
|
|
focus: true
|
|
|
|
closePolicy: Popup.NoAutoClose
|
|
|
|
contentItem: Text {
|
|
text: qsTr("Connection disturbed")
|
|
wrapMode: Text.Wrap
|
|
}
|
|
}
|
|
}
|