Index: sources/gui/qml/pages/treatment/TreatmentStack.qml =================================================================== diff -u -r9e57e4c990afab0996def98521d4f9fee83f96d8 -re58be51c4aa52938af250db3ee579e98de08542c --- sources/gui/qml/pages/treatment/TreatmentStack.qml (.../TreatmentStack.qml) (revision 9e57e4c990afab0996def98521d4f9fee83f96d8) +++ sources/gui/qml/pages/treatment/TreatmentStack.qml (.../TreatmentStack.qml) (revision e58be51c4aa52938af250db3ee579e98de08542c) @@ -1,26 +1,34 @@ /*! - * + * * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. - * \copyright \n - * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, \n - * IN PART OR IN WHOLE, \n - * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. \n - * - * \file TreatmentStack.qml - * \date 2019/10/21 - * \author Behrouz NematiPour - * + * \copyright + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * \file TreatmentStack.qml + * \author (last) Behrouz NematiPour + * \date (last) 16-Oct-2020 + * \author (original) Behrouz NematiPour + * \date (original) 27-Jan-2020 + * */ // Qt import QtQuick 2.12 -import QtQuick.Controls 2.12 // Project +import Gui.Actions 0.1 +import VTreatmentRanges 0.1 +import VTreatmentAdjustmentSaline 0.1 +import VHDTreatmentStates 0.1 +import VTreatmentAdjustmentUltrafiltrationState 0.1 +import VTreatmentAdjustmentUltrafiltrationEdit 0.1 +import VTreatmentAdjustmentUltrafiltrationConfirm 0.1 // Qml imports import "qrc:/globals" import "qrc:/components" +import "qrc:/pages/treatment/adjustments" /*! * \brief TreatmentStack is the screen @@ -29,8 +37,36 @@ * is selected from the main menu. */ StackItem { id : _root - MainMenu { id: _treatmentMenu - y : -Variables.mainMenuHeight + objectName: "TreatmentStack" + + stackView.initialItem : _treatmentHome + + // Views + VTreatmentRanges { id: vTreatmentRanges } + VTreatmentAdjustmentSaline { id: vTreatmentAdjustmentSaline } + VHDTreatmentStates { id: vHDTreatmentStates } + VTreatmentAdjustmentUltrafiltrationState { id: vTreatmentAdjustmentUltrafiltrationState } + VTreatmentAdjustmentUltrafiltrationEdit { id: vTreatmentAdjustmentUltrafiltrationEdit } + VTreatmentAdjustmentUltrafiltrationConfirm { id: vTreatmentAdjustmentUltrafiltrationConfirm } + + // ultrafiltration state information bar properties + readonly property bool isUFPaused : vHDTreatmentStates.ufPaused + readonly property bool isUFOff : vHDTreatmentStates.ufOff + readonly property bool isUFRunning : vHDTreatmentStates.ufRunning + readonly property bool isUFCompleted : vHDTreatmentStates.ufCompleted + readonly property string ufInfoImageSource : isUFPaused ? "qrc:/images/iPauseGray" : + isUFOff ? "qrc:/images/iOffGray" : + isUFCompleted ? "qrc:/images/iDone" : "" + readonly property string ufInfoText : isUFPaused ? qsTr("Ultrafiltration is paused" ) : + isUFOff ? qsTr("Ultrafiltration is off" ) : + isUFCompleted ? qsTr("Ultrafiltration is completed" ) : "" + readonly property string ufInfoTextColor : isUFPaused ? "gray" : + isUFOff ? "gray" : + isUFCompleted ? "lightgray" : "" + + // Components + MainMenu { id: _treatmentMenu + y : Variables.mainMenuHeight * -1 position : MainMenu.Position.Top hidden : true titles : [ qsTr("Back") , qsTr("Treatment") , qsTr("Trending") , qsTr("Settings") ] @@ -41,6 +77,180 @@ hasLogo : true } - TreatmentHome { id : _treatmentHome } - stackView.initialItem : _treatmentHome + TreatmentHome { id: _treatmentHome + onTreatmentStarted : push( _treatmentStart ) + onTreatmentCreated : vTreatmentCreate.doSelectParameters() + } + + TreatmentStart { id: _treatmentStart + onBackClicked : popToItem(_treatmentHome) + onSectionFlowClicked : { + _treatmentAdjustmentFlow.open() + } + onSectionTimeClicked : { + _treatmentAdjustmentDuration.durationValue = vTreatmentTime.time_Total / 60 // minutes => hours + _treatmentAdjustmentDuration.open() + } + onSectionUltrafiltrationClicked: { + if ( isUFRunning ) { + _treatmentAdjustmentUltrafiltrationStart .open() + } else { + _treatmentAdjustmentUltrafiltrationPaused.open() + } + } + } + + TreatmentCreate { id: _treatmentCreate + onClickedBack : {vTreatmentCreate.doCancelSelectingParameters() } + onClickedContinue : {vTreatmentCreate.doFinishedCreate(); } + } + + TreatmentConfirm { id: _treatmentConfirm + onClickedBack : {vTreatmentCreate.doCancelConfirmParameters() } + onClickedConfirm : {vTreatmentCreate.doFinishedConfirm(); } + } + + TreatmentPrime { id: _treatmentPrime + onClickedBack : {vTreatmentCreate.doRequestPop() } + onClickedContinue : {vTreatmentCreate.doFinishedPrime(); } + } + + TreatmentBegin { id: _treatmentBegin + onClickedBack : {vTreatmentCreate.doRequestPop() } + onClickedStart : {vTreatmentCreate.doStartTreatment(); } + } + + + //// Treatment Adjustment Dialogs + TreatmentAdjustmentFlow { id: _treatmentAdjustmentFlow + onCloseClicked : close() + onConfirmClicked : vTreatmentAdjustmentFlows.doAdjustment(bloodFlowRateValue, dialysateFlowRateValue) + } + TreatmentAdjustmentDuration { id: _treatmentAdjustmentDuration + onCloseClicked : close() + onConfirmClicked : vTreatmentAdjustmentDuration.doAdjustment(durationValue) + } + + TreatmentAdjustmentUltrafiltrationStart { id: _treatmentAdjustmentUltrafiltrationStart + onCloseClicked : close() + onPauseClicked : { + // send pause to HD and wait. + // if accepted close() + // not accepted show error in notification + vTreatmentAdjustmentUltrafiltrationState.doPause() + } + } + + TreatmentAdjustmentUltrafiltrationPaused { id: _treatmentAdjustmentUltrafiltrationPaused + onCloseClicked : close() + onEditClicked : { + close() + _treatmentAdjustmentUltrafiltrationEdit.reset() // reset the slider to minimum value position + _treatmentAdjustmentUltrafiltrationEdit.open() + } + onResumeClicked : { + // send resume to HD and wait. + // if accepted close() + // not accepted show error in notification + vTreatmentAdjustmentUltrafiltrationState.doResume() + } + } + + TreatmentAdjustmentUltrafiltrationEdit { id: _treatmentAdjustmentUltrafiltrationEdit + onBackClicked : { + close() + _treatmentAdjustmentUltrafiltrationPaused.open() + } + onNextClicked : { + // send Volume to HD and wait. + // if accepted close() + // not accepted show error in notification + vTreatmentAdjustmentUltrafiltrationEdit.doAdjustment(vVolume) + } + } + + TreatmentAdjustmentUltrafiltrationConfirm { id: _treatmentAdjustmentUltrafiltrationConfirm + onBackClicked : { + close() + _treatmentAdjustmentUltrafiltrationEdit.open () + } + onConfirmRateClicked : { + vTreatmentAdjustmentUltrafiltrationConfirm.doOptionRate(vVolume) + } + onConfirmDurationClicked: { + vTreatmentAdjustmentUltrafiltrationConfirm.doOptionDuration(vVolume) + } + } + + // ---------- Manages Responses ---------- + Connections { target: vTreatmentAdjustmentDuration + onAdjustmentTriggered : { + if ( vTreatmentAdjustmentDuration.adjustment_Accepted ) { + vTreatmentUltrafiltration.maximum = vTreatmentAdjustmentDuration.ultrafiltration + _treatmentAdjustmentDuration.accept() + } else { + _treatmentAdjustmentDuration.durationValue = vTreatmentAdjustmentDuration.duration; + _treatmentAdjustmentDuration.notification.text = vTreatmentAdjustmentDuration.text(); + } + } + } + + Connections { target: vTreatmentAdjustmentUltrafiltrationState + onAdjustmentTriggered : { + if ( vTreatmentAdjustmentUltrafiltrationState.adjustment_Accepted ) { + if (vHDTreatmentStates.ufPaused) { // handle screen regarding current accepted + _treatmentAdjustmentUltrafiltrationStart .close() + _treatmentAdjustmentUltrafiltrationPaused.open () + } else { + _treatmentAdjustmentUltrafiltrationPaused.close() + } + } + else { + if (vHDTreatmentStates.ufRunning) { // handle error messages regarding current accepted + _treatmentAdjustmentUltrafiltrationStart.notificationText = vTreatmentAdjustmentUltrafiltrationState.adjustment_ReasonText + } else { + _treatmentAdjustmentUltrafiltrationPaused.notificationText = vTreatmentAdjustmentUltrafiltrationState.adjustment_ReasonText + } + } + } + } + + Connections { target: vTreatmentAdjustmentUltrafiltrationEdit + onAdjustmentTriggered : { + if (vTreatmentAdjustmentUltrafiltrationEdit.adjustment_Accepted) { + _treatmentAdjustmentUltrafiltrationConfirm.ultrafiltrationVolume = vTreatmentAdjustmentUltrafiltrationEdit.volume + _treatmentAdjustmentUltrafiltrationConfirm.treatmentDuration = vTreatmentAdjustmentUltrafiltrationEdit.duration + _treatmentAdjustmentUltrafiltrationConfirm.treatmentDurationDiff = vTreatmentAdjustmentUltrafiltrationEdit.durationDiff + _treatmentAdjustmentUltrafiltrationConfirm.ultrafiltrationRate = vTreatmentAdjustmentUltrafiltrationEdit.rate + _treatmentAdjustmentUltrafiltrationConfirm.ultrafiltrationRateDiff = vTreatmentAdjustmentUltrafiltrationEdit.rateDiff + _treatmentAdjustmentUltrafiltrationConfirm.ultrafiltrationRateOld = vTreatmentAdjustmentUltrafiltrationEdit.rateOld + + _treatmentAdjustmentUltrafiltrationEdit .close() + _treatmentAdjustmentUltrafiltrationConfirm.reset() + _treatmentAdjustmentUltrafiltrationConfirm.open () + } else { + _treatmentAdjustmentUltrafiltrationEdit.notification.text = vTreatmentAdjustmentUltrafiltrationEdit.text() + } + } + } + + Connections { target: vTreatmentAdjustmentUltrafiltrationConfirm + onAdjustmentTriggered : { + if (vTreatmentAdjustmentUltrafiltrationConfirm.adjustment_Accepted) { + vTreatmentUltrafiltration.maximum = vTreatmentAdjustmentUltrafiltrationConfirm.volume + _treatmentAdjustmentUltrafiltrationConfirm.close() + } else { + _treatmentAdjustmentUltrafiltrationConfirm.notification.text = vTreatmentAdjustmentUltrafiltrationConfirm.text() + } + } + } + + Connections { target: vTreatmentCreate + onShowCreate : { push(_treatmentCreate) } + onShowConfirm : { push(_treatmentConfirm) } + onShowPrime : { push(_treatmentPrime) } + onShowBegin : { push(_treatmentBegin) } + onPop : { pop() } + onShowTreatmentStart : { push(_treatmentStart) } + } }