1/*
2 * \copyright Copyright (c) 2017-2021 Governikus GmbH & Co. KG, Germany
3 */
4
5import QtQuick 2.12
6import QtQuick.Controls 2.12
7
8import Governikus.Type.RemoteServiceModel 1.0
9import Governikus.EnterPasswordView 1.0
10import Governikus.TitleBar 1.0
11import Governikus.Type.ReaderPlugIn 1.0
12import Governikus.Type.NumberModel 1.0
13
14Item {
15	id: controller
16
17	Connections {
18		target: RemoteServiceModel
19		onFireCurrentStateChanged: {
20			switch (RemoteServiceModel.currentState) {
21				case "Initial":
22					break
23				case "StateStartRemoteService":
24					navBar.lockedAndHidden = true
25					setWorkflowStateAndContinue("startRemoteService")
26					break
27				case "StateProcessRemoteMessages":
28					RemoteServiceModel.continueWorkflow()
29					break
30				case "StateEnterPacePasswordRemote":
31					setWorkflowStateAndRequestInput("establishPaceChannelRemote", RemoteServiceModel.getPasswordType())
32					break
33				case "StateEnterNewPacePinRemote":
34					setWorkflowStateAndRequestInput("changePinRemote", "PIN_NEW")
35					break
36				case "FinalState":
37					RemoteServiceModel.continueWorkflow()
38					navBar.lockedAndHidden = false
39					break
40				default:
41					RemoteServiceModel.continueWorkflow()
42			}
43		}
44	}
45
46	function setWorkflowState(pState) {
47		state = pState
48	}
49
50	function setWorkflowStateAndContinue(pState) {
51		setWorkflowState(pState)
52		RemoteServiceModel.continueWorkflow()
53	}
54
55	function setWorkflowStateAndRequestInput(pState, pEnterPinState) {
56		setWorkflowState(pState)
57		if (RemoteServiceModel.isBasicReader && RemoteServiceModel.pinPadModeOn()) {
58			firePushWithProperties(enterPinView, {state: pEnterPinState})
59		} else {
60			RemoteServiceModel.continueWorkflow()
61		}
62	}
63
64	Component {
65		id: enterPinView
66
67		EnterPasswordView {
68			id: passwordView
69
70			enableTransportPinLink: RemoteServiceModel.enableTransportPinLink
71			requestTransportPin: RemoteServiceModel.requestTransportPin
72
73			navigationAction: NavigationAction {
74				state: "cancel"
75				onClicked: {
76					firePop()
77					RemoteServiceModel.cancelPasswordRequest()
78				}
79			}
80
81			onPasswordEntered: {
82				firePop()
83				RemoteServiceModel.continueWorkflow()
84			}
85
86			onChangePinLength: RemoteServiceModel.changePinLength()
87
88			Connections {
89				target: RemoteServiceModel
90				onFireConnectedChanged: if (!RemoteServiceModel.connectedToPairedDevice && passwordView.StackView.visible) firePop()
91			}
92		}
93	}
94}
95