Index: sources/gui/qml/pages/pretreatment/PreTreatmentStack.qml =================================================================== diff -u -ra5760947d3ed0d2748ba023a1c25e3c6aa0b1de1 -re6f122cd598d085faa3b1e295317d793a1dd9fcb --- sources/gui/qml/pages/pretreatment/PreTreatmentStack.qml (.../PreTreatmentStack.qml) (revision a5760947d3ed0d2748ba023a1c25e3c6aa0b1de1) +++ sources/gui/qml/pages/pretreatment/PreTreatmentStack.qml (.../PreTreatmentStack.qml) (revision e6f122cd598d085faa3b1e295317d793a1dd9fcb) @@ -20,41 +20,277 @@ // Qml imports import "qrc:/globals" import "qrc:/components" +import "qrc:/compounds" import "qrc:/pages/pretreatment" -import "qrc:/pages/pretreatment/connection" +import "qrc:/pages/pretreatment/create" + /*! - * \brief the pre treatment prime stack screen + * \brief the pre treatment stack screen */ StackItem { id: _root - objectName: "_PreTreatmentStack" + stackView.initialItem : null - stackView.initialItem : null + enum Step { + Concentrates , + Installation , + SelfTests , + Saline , + Prime , + WaterSample , + CreateRx , + DialysateUF , + Connect + } - property int stackStepIndex : 0 + property var stepNames : [] // step name parallel list + property var stepKeys : [] // step enum parallel list + property int stackStepIndex : 0 + readonly property bool isCreateRx : stepKeys[_root.stackStepIndex] === PreTreatmentStack.Step.CreateRx + readonly property bool isDialysteUf : stepKeys[_root.stackStepIndex] === PreTreatmentStack.Step.DialysateUF - PreTreatmentWaterSampleStack{ id: _preTreatmentWaterSampleStack ;objectName: "_preTreatmentWaterSampleStack" } - PreTreatmentConsumablesStack{ id: _preTreatmentConsumablesStack ;objectName: "_preTreatmentConsumablesStack" } - PreTreatmentDisposablesStack{ id: _preTreatmentDisposablesStack ;objectName: "_preTreatmentDisposablesStack" } - PreTreatmentPrimeStack { id: _pretreatmentPrimeStack ;objectName: "_pretreatmentPrimeStack" } - PreTreatmentConnectionStack { id: _pretreatmentConnectionStack ;objectName: "_pretreatmentConnectionStack " } + // testing defeature... update later + property bool enableWaterSample : true - Connections { target: vPreTreatmentStates - function onWaterSampleChanged ( vValue ) { page( _preTreatmentWaterSampleStack , vValue )} - function onSelfTestConsumablesChanged ( vValue ) { page( _preTreatmentConsumablesStack , vValue )} - function onSelfTestNoCartridgeChanged ( vValue ) { page( _preTreatmentDisposablesStack , vValue )} - function onInstallationChanged ( vValue ) { page( _preTreatmentDisposablesStack , vValue )} // DEBUG: Experimental : console.debug("vinstallation " - function onSelfTestDryChanged ( vValue ) { page( _pretreatmentPrimeStack , vValue )} - function onPrimeChanged ( vValue ) { page( _pretreatmentPrimeStack , vValue )} // DEBUG: Experimental : console.debug("vprime " - function onRecirculateChanged ( vValue ) { page( _pretreatmentPrimeStack , vValue )} // DEBUG: Experimental : console.debug("vrecirculate " - function onPatientConnectionChanged ( vValue ) { page( _pretreatmentConnectionStack , vValue )} - } - onVisibleChanged: { if (visible) { + rebuildMap() _mainMenu.hidden = true + _headerBar.titleText = qsTr("Setup Treatment") + _root.stackStepIndex = 0 } else { stackView.initialItem = null + _headerBar.titleText = "" } } + + // dynamically rebuild map πŸ—ΊοΈ when entering pretreatment. + // { step key (enum) : step name (string) } -- decided to use 2 parallel list for better indexing + function rebuildMap() { + let keys = [] // parallel key list of step enum + let values = [] // parallel step name string list + + if ( ! vSettings.advancedMode ) { + keys.push(PreTreatmentStack.Step.Concentrates) + values.push(qsTr("Concentrates")) + } + + keys.push(PreTreatmentStack.Step.Installation) + values.push(qsTr("Installation")) + + keys.push(PreTreatmentStack.Step.SelfTests) + values.push(qsTr("Self-Tests")) + + keys.push(PreTreatmentStack.Step.Saline) + values.push(qsTr("Saline")) + + keys.push(PreTreatmentStack.Step.Prime) + values.push(qsTr("Prime")) + + // TODO update to defeature later.. testing for science πŸ§ͺπŸ”¬ + if (_root.enableWaterSample) { + keys.push(PreTreatmentStack.Step.WaterSample) + values.push(qsTr("Water Sample")) + } + + keys.push(PreTreatmentStack.Step.CreateRx) + values.push(qsTr("Rx")) + + keys.push(PreTreatmentStack.Step.DialysateUF) + values.push(qsTr("Dialysate/UF")) + + keys.push(PreTreatmentStack.Step.Connect) + values.push(qsTr("Connect")) + + // πŸ“‹ reassign to notify bindings + stepKeys = keys + stepNames = values + } + + // clear create rx parameters + function clear(vValue) { if ( ! vValue ) return; _pretreatmentCreate.clear(vValue) } + + // handle ⏭️ confirm clicked on any pretreatment page + function confirmClicked() { + switch ( stepKeys[_root.stackStepIndex] ) { + case PreTreatmentStack.Step.Concentrates: + page ( _pretreatmentInstallation ) + break + case PreTreatmentStack.Step.Installation: + vPreTreatmentAdjustmentDisposablesConfirm.doConfirm() + break + case PreTreatmentStack.Step.SelfTests: + page ( _pretreatmentSaline ) + break + case PreTreatmentStack.Step.Saline: + page ( _pretreatmentPrime ) + break + case PreTreatmentStack.Step.Prime: + if ( enableWaterSample ) { page ( _pretreatmentWaterSample ) } + else { page ( _pretreatmentCreate ) } + break + case PreTreatmentStack.Step.WaterSample: + page ( _pretreatmentCreate ) + break + case PreTreatmentStack.Step.CreateRx: + _pretreatmentCreate.confirmButtonClicked() + if ( vTreatmentCreate.parametersValidated ) { page ( _pretreatmentDialysateUf ) } + break + case PreTreatmentStack.Step.DialysateUF: + page ( _pretreatmentConnect ) + break + case PreTreatmentStack.Step.Connect: + // TODO Some FW request to enter Treatment mode + break + default: + break + } + } + + // handle πŸ”™ back clicked on any pretreatment page + function backClicked() { + switch ( stepKeys[_root.stackStepIndex] ) { + case PreTreatmentStack.Step.Concentrates: + vPreTreatmentAdjustmentInitTreatment.doCancel() // request standby + break + case PreTreatmentStack.Step.Installation: + if ( vSettings.advancedMode ) { vPreTreatmentAdjustmentInitTreatment.doCancel() } + else { page ( _pretreatmentConcentrates ) } + break + case PreTreatmentStack.Step.SelfTests: + page ( _pretreatmentInstallation ) + break + case PreTreatmentStack.Step.Saline: + page ( _pretreatmentSelfTests ) + break + case PreTreatmentStack.Step.Prime: + page ( _pretreatmentSaline ) + break + case PreTreatmentStack.Step.WaterSample: + page ( _pretreatmentPrime ) + break + case PreTreatmentStack.Step.CreateRx: + if ( enableWaterSample ) { page ( _pretreatmentWaterSample ) } + else { page ( _pretreatmentPrime ) } + break + case PreTreatmentStack.Step.DialysateUF: + // πŸ™…β€β™‚οΈ No going back + break + case PreTreatmentStack.Step.Connect: + page ( _pretreatmentDialysateUf ) + break + default: + break + } + } + + // handle text for the confirm button on any pretreatment page + function confirmButtonText() { + switch ( stepKeys[_root.stackStepIndex] ) { + case PreTreatmentStack.Step.Concentrates: + return qsTr("Next") + case PreTreatmentStack.Step.Installation: + return qsTr("Auto-Load") + case PreTreatmentStack.Step.CreateRx: + return vTreatmentCreate.parametersValidated + ? qsTr("CONFIRM") + : qsTr("VALIDATE") + default: + return qsTr("Next") + } + } + + // Header + StepNavigationTitleBar { id: _titleBar + stepIndex : _root.stackStepIndex + anchors { + top : _root.top + left : parent.left + right : parent.right + leftMargin : Variables.defaultMargin * 2 + rightMargin : anchors.leftMargin + } + confirmText.text: confirmButtonText() + confirmVisible : true + confirmEnabled : _root.isCreateRx ? _pretreatmentCreate.confirmReady() : true + backVisible : _root.isCreateRx ? ! vTreatmentCreate.parametersValidated : ! _root.isDialysteUf + width : _root.width + stepNames : _root.stepNames + onBackClicked : _root.backClicked() + onConfirmClicked: _root.confirmClicked() + } + + // Pages + PreTreatmentBase { id: _pretreatmentConcentrates + instructionBased : true + onVisibleChanged : if (visible) { _root.stackStepIndex = stepKeys.indexOf(PreTreatmentStack.Step.Concentrates); updateModel() } + } + + PreTreatmentBase { id: _pretreatmentInstallation + instructionBased : true + onVisibleChanged : if (visible) { _root.stackStepIndex = stepKeys.indexOf(PreTreatmentStack.Step.Installation); updateModel() } + } + + PreTreatmentBase { id: _pretreatmentSelfTests + onVisibleChanged : if (visible) { _root.stackStepIndex = stepKeys.indexOf(PreTreatmentStack.Step.SelfTests); } + } + + PreTreatmentBase { id: _pretreatmentSaline + onVisibleChanged : if (visible) { _root.stackStepIndex = stepKeys.indexOf(PreTreatmentStack.Step.Saline); } + } + + PreTreatmentBase { id: _pretreatmentPrime + onVisibleChanged : if (visible) { _root.stackStepIndex = stepKeys.indexOf(PreTreatmentStack.Step.Prime); } + } + + PreTreatmentBase { id: _pretreatmentWaterSample + onVisibleChanged : if (visible) { _root.stackStepIndex = stepKeys.indexOf(PreTreatmentStack.Step.WaterSample); } + } + + PreTreatmentCreate { id: _pretreatmentCreate + onVisibleChanged : if (visible) { _root.stackStepIndex = stepKeys.indexOf(PreTreatmentStack.Step.CreateRx) } + } + + PreTreatmentBase { id: _pretreatmentDialysateUf + onVisibleChanged : if (visible) { _root.stackStepIndex = stepKeys.indexOf(PreTreatmentStack.Step.DialysateUF); } + } + + PreTreatmentBase { id: _pretreatmentConnect + onVisibleChanged : if (visible) { _root.stackStepIndex = stepKeys.indexOf(PreTreatmentStack.Step.Connect); } + } + + // Slots + Connections { target: vPreTreatmentAdjustmentDisposablesConfirm + function onAdjustmentTriggered ( vValue ) { + if ( vPreTreatmentAdjustmentDisposablesConfirm.adjustment_Accepted ) { + _pretreatmentInstallation.informationText = "" + page ( _pretreatmentSelfTests ) + } else { + _pretreatmentInstallation.informationText = vPreTreatmentAdjustmentDisposablesConfirm.text() + } + } + } + + Connections { target: vTDOpMode + function onPreTreatmentChanged( vValue ) { if ( vSettings.advancedMode ) { page ( _pretreatmentInstallation , vValue )} + else { page ( _pretreatmentConcentrates , vValue )} + } + } + + // TODO in pre treatment story --- Clean up in pre treatment story +// PreTreatmentWaterSampleStack{ id: _preTreatmentWaterSampleStack ;objectName: "_preTreatmentWaterSampleStack" } +// PreTreatmentConsumablesStack{ id: _preTreatmentConsumablesStack ;objectName: "_preTreatmentConsumablesStack" } +// PreTreatmentPrimeStack { id: _pretreatmentPrimeStack ;objectName: "_pretreatmentPrimeStack" } +// PreTreatmentConnectionStack { id: _pretreatmentConnectionStack ;objectName: "_pretreatmentConnectionStack " } + +// Connections { target: vPreTreatmentStates +// function onWaterSampleChanged ( vValue ) { page( _preTreatmentWaterSampleStack , vValue )} +// function onSelfTestConsumablesChanged ( vValue ) { page( _preTreatmentConsumablesStack , vValue )} +// function onSelfTestNoCartridgeChanged ( vValue ) { page( _preTreatmentDisposablesStack , vValue )} +// function onInstallationChanged ( vValue ) { page( _preTreatmentDisposablesStack , vValue )} // DEBUG: Experimental : console.debug("vinstallation " +// function onSelfTestDryChanged ( vValue ) { page( _pretreatmentPrimeStack , vValue )} +// function onPrimeChanged ( vValue ) { page( _pretreatmentPrimeStack , vValue )} // DEBUG: Experimental : console.debug("vprime " +// function onRecirculateChanged ( vValue ) { page( _pretreatmentPrimeStack , vValue )} // DEBUG: Experimental : console.debug("vrecirculate " +// function onPatientConnectionChanged ( vValue ) { page( _pretreatmentConnectionStack , vValue )} +// } }