Index: leahi.qrc =================================================================== diff -u -r0fc6d1c6c65ba935d7e5f0bc56130e99deada039 -rd5e9940fa96373f6cc118dfa9761d95f361689a5 --- leahi.qrc (.../leahi.qrc) (revision 0fc6d1c6c65ba935d7e5f0bc56130e99deada039) +++ leahi.qrc (.../leahi.qrc) (revision d5e9940fa96373f6cc118dfa9761d95f361689a5) @@ -270,6 +270,8 @@ sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentFlow.qml sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentBase.qml sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentDuration.qml + sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentDurationEdit.qml + sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentDurationConfirm.qml sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentSaline.qml sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentUltrafiltration.qml sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentUltrafiltrationStart.qml Index: sources/gui/qml/pages/treatment/TreatmentStack.qml =================================================================== diff -u -r0fc6d1c6c65ba935d7e5f0bc56130e99deada039 -rd5e9940fa96373f6cc118dfa9761d95f361689a5 --- sources/gui/qml/pages/treatment/TreatmentStack.qml (.../TreatmentStack.qml) (revision 0fc6d1c6c65ba935d7e5f0bc56130e99deada039) +++ sources/gui/qml/pages/treatment/TreatmentStack.qml (.../TreatmentStack.qml) (revision d5e9940fa96373f6cc118dfa9761d95f361689a5) @@ -77,8 +77,6 @@ _treatmentAdjustmentSaline.open() } function onSectionTimeClicked ( vValue ) { - //DEBUG: console.log("time total minutes: " + vTreatmentTime.time_Total / 60 ) - _treatmentAdjustmentDuration.setDurationValue(vTreatmentTime.time_Total / 60) // minutes => hours _treatmentAdjustmentDuration.open() } function onSectionUltrafiltrationClicked ( vValue ) { Index: sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentDuration.qml =================================================================== diff -u -ra5760947d3ed0d2748ba023a1c25e3c6aa0b1de1 -rd5e9940fa96373f6cc118dfa9761d95f361689a5 --- sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentDuration.qml (.../TreatmentAdjustmentDuration.qml) (revision a5760947d3ed0d2748ba023a1c25e3c6aa0b1de1) +++ sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentDuration.qml (.../TreatmentAdjustmentDuration.qml) (revision d5e9940fa96373f6cc118dfa9761d95f361689a5) @@ -15,6 +15,7 @@ // Qt import QtQuick 2.12 +import QtQuick.Controls 2.12 // StackView // Project @@ -27,78 +28,57 @@ * To adjust the treatment duration */ TreatmentAdjustmentBase { id: _root - contentItem.objectName: "TreatmentAdjustmentDuration" //SquishQt testability + objectName: "_TreatmentAdjustmentDuration" // SquishQt testability - readonly property real durationValue : _durationSlider.value - readonly property alias durationMinimum : _durationSlider.minimum - readonly property alias durationMaximum : _durationSlider.maximum - readonly property alias durationStep : _durationSlider.step + closeVisible : true + confirmVisible : false + backVisible : _treatmentDurationStack.stackView.depth > 1 - readonly property alias currentTime : _currentTimeText.seconds - readonly property alias durationTime : _durationText.seconds + onAboutToShow : { _treatmentDurationStack.reset() } + onClosed : { _treatmentDurationStack.reset() } + onBackClicked : { _treatmentDurationStack.pop() } - property int textWidth : 200 + StackItem { id: _treatmentDurationStack + objectName : "_treatmentDurationStack" + anchors { + top: parent.top + bottom: notification.top + left: parent.left + right: parent.right + } + visible : true + stackView { + initialItem : _treatmentAdjustmentDurationEdit + popEnter : null + popExit : null + pushEnter : null + pushExit : null + } - // Due to how the slider is set up, a setter function is needed to set the slider value - function setDurationValue(value) { - _durationSlider.reset(value) - } + TreatmentAdjustmentDurationEdit { id: _treatmentAdjustmentDurationEdit + objectName: "_treatmentAdjustmentDurationEdit" + visible: false - titleText: qsTr("TREATMENT DURATION") + StackView.onActivating : { + _root.titleText = qsTr("Edit Treatment Duration") + _root.notificationText = "" + } - Item { id : _container - readonly property int sideMarginSize: Variables.headerButtonsMargin + Variables.confirmButtonWidth/2 - _durationSliderArrows.width/2 // Centers on the confirmButton - width : _root.width - height : 200 - anchors.centerIn: parent - - TimeText { id: _currentTimeText - seconds: vTreatmentTime.time_Elapsed - secondsVisible: true - textPixelSize: Fonts.fontPixelDurationCurTime - anchors.horizontalCenter: parent.horizontalCenter - anchors.top: _container.top - anchors.bottom: _durationSlider.top - anchors.bottomMargin: 65 + onContinueClicked : function(vDuration) { + // send duration to TD and wait. + // if accepted moves to confirm screen, otherwise show error in notification + // vTreatmentAdjustmentDurationEdit.doAdjustment(vDuration) + } } - Slider { id : _durationSlider - // The distance from parent's right side to the rightmost of slider - with slider arrows and spacings considered - readonly property int sliderAndArrowSpacing : Variables.sliderAdjustButtonSpacing + _durationSlider.handler.width/2 - readonly property int distanceFromSide : _durationSlider.sliderAndArrowSpacing + _durationSliderArrows.width + _container.sideMarginSize - width : _container.width - (distanceFromSide * 2) // determine the size of slider to center - minimum : vTreatmentRanges.treatmentRanges_Duration_Min // in Minutes - maximum : vTreatmentRanges.treatmentRanges_Duration_Max // in Minutes - step : Variables.durationResolution - stepSnap : true - minText.visible : false - maxText.visible : false - ticks : true - anchors.right : _durationSliderArrows.left - anchors.rightMargin : _durationSlider.sliderAndArrowSpacing - anchors.bottom : _container.bottom + TreatmentAdjustmentDurationConfirm { id: _treatmentAdjustmentDurationConfirm + objectName: "_treatmentAdjustmentDurationConfirm" + visible: false - TimeText { id: _durationText - seconds: 60 * _durationSlider.value // in Minutes => to Seconds - secondsVisible: false - textPixelSize: Fonts.fontPixelDurationAdjTime - textWeight: Font.Medium - anchors { - top : _durationSlider.handler.bottom - topMargin : 10 - horizontalCenter: _durationSlider.handler.horizontalCenter - } + StackView.onActivating : { + _root.titleText = qsTr("Confirm Treatment Duration") + _root.notificationText = "" } } - SliderArrows{ id: _durationSliderArrows - visible : true - anchors.verticalCenter : _durationSlider.verticalCenter - anchors.right : _container.right - anchors.rightMargin : _container.sideMarginSize - - onIncrementValue : _durationSlider.incrementValue(true) - onDecrementValue : _durationSlider.decrementValue(true) - } } - } Index: sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentDurationConfirm.qml =================================================================== diff -u --- sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentDurationConfirm.qml (revision 0) +++ sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentDurationConfirm.qml (revision d5e9940fa96373f6cc118dfa9761d95f361689a5) @@ -0,0 +1,118 @@ +/*! + * + * Copyright (c) 2020-2024 Diality Inc. - All Rights Reserved. + * \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 TreatmentAdjustmentDurationConfirm.qml + * \author (last) Stephen Quong + * \date (last) 11-Nov-2025 + * \author (original) Stephen Quong + * \date (original) 11-Nov-2025 + * + */ + +// Qt +import QtQuick 2.12 + +// Project + +// Qml imports +import "qrc:/globals" +import "qrc:/components" +import "qrc:/compounds" + +/*! + * \brief TreatmentAdjustmentDurationConfirm.qml is the screen + * to confirm the treatment duration + */ +Item { id: _root + objectName: "_TreatmentAdjustmentDurationConfirm" + + signal confirmVolumeClicked(int vDuration) + + function reset() { + // _volumeGoalAdjuster.value = _private.setVolume + } + + component LabelUnitText: LabelUnitContainer { id: _labelUnitText + objectName : "_labelUnitText" + + property alias valueText: _labelUnitContainerText.text + + width : (_infoArea.width - (_infoRow.spacing * 2)) / 3 + height : Variables.adjustmentLabelUnitContainerHeight + titleFontPixelSize : Fonts.fontPixelContainerTitleSmall + unitText : Variables.unitTextDialCond + unitFontPixelSize : Fonts.fontPixelContainerUnitSmall + + contentItem: Text { id: _labelUnitContainerText + objectName : "_labelUnitContainerText" + anchors.centerIn : parent + width : contentWidth + height : contentHeight + color : Colors.ufVolumeGoalText + font.pixelSize : Fonts.fontPixelValueControl + } + } + + Item { id: _infoArea + objectName: "_infoArea" + anchors { + top: parent.top + bottom: _confirmButton.top + left: parent.left + leftMargin: Variables.defaultMargin * 2 + right: parent.right + rightMargin : anchors.leftMargin + } + + Row { id: _infoRow + objectName: "_infoRow" + anchors.centerIn: parent + spacing: Variables.defaultMargin * 2 + + LabelUnitText { id: _ufVolumeGoal + objectName : "_ufVolumeGoal" + text : qsTr("UF Volume Goal") + unitText : Variables.unitVolume + valueText : "--" + } + + LabelUnitText { id: _ufNewRate + objectName : "_ufNewRate" + text : qsTr("New UF Rate") + unitText : Variables.unitTextRate + valueText : "--" + } + + LabelUnitText { id: _newTreatmentDuration + objectName : "_newTreatmentDuration" + text : qsTr("New Treatment Duration") + unitText : Variables.unitTextDuration + valueText : "--" + } + } + } + + TouchRect { id: _confirmButton + objectName : "_confirmButton" + anchors { + bottom : parent.bottom + bottomMargin : Variables.defaultMargin + horizontalCenter: parent.horizontalCenter + } + width : Variables.defaultButtonWidth + height : Variables.defaultButtonHeight + text { + text : qsTr("Confirm") + font.weight : Font.Medium + } + isDefault : true + + onClicked : { + _root.confirmClicked() + } + } +} Index: sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentDurationEdit.qml =================================================================== diff -u --- sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentDurationEdit.qml (revision 0) +++ sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentDurationEdit.qml (revision d5e9940fa96373f6cc118dfa9761d95f361689a5) @@ -0,0 +1,169 @@ +/*! + * + * Copyright (c) 2020-2024 Diality Inc. - All Rights Reserved. + * \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 TreatmentAdjustmentDurationEdit.qml + * \author (last) Stephen Quong + * \date (last) 11-Nov-2025 + * \author (original) Stephen Quong + * \date (original) 11-Nov-2025 + * + */ + +// Qt +import QtQuick 2.12 + +// Project + +// Qml imports +import "qrc:/globals" +import "qrc:/components" +import "qrc:/compounds" + +/*! + * \brief TreatmentAdjustmentDurationEdit.qml is the screen + * to edit the treatment duration + */ +Item { id: _root + objectName: "_TreatmentAdjustmentDurationEdit" + + signal continueClicked(int vDuration) + + function reset() { + _newTreatmentDuration.value = vTreatmentTime.time_Total + } + + component LabelUnitText: LabelUnitContainer { id: _labelUnitText + objectName : "_labelUnitText" + + property alias valueText: _labelUnitContainerText.text + + width : 500 + height : Variables.adjustmentLabelUnitContainerHeight + titleFontPixelSize : Fonts.fontPixelContainerTitleSmall + unitText : Variables.unitTextDialCond + unitFontPixelSize : Fonts.fontPixelContainerUnitSmall + + contentItem: Text { id: _labelUnitContainerText + objectName : "_labelUnitContainerText" + anchors.centerIn : parent + width : contentWidth + height : contentHeight + color : Colors.offWhite + font.pixelSize : Fonts.fontPixelValueControl + } + } + + Row { id: _infoRow + objectName: "_infoRow" + anchors { + top: parent.top + topMargin: Variables.defaultMargin * 2 + horizontalCenter: parent.horizontalCenter + } + spacing: Variables.defaultMargin + + Column { id: _infoLeftColumn + objectName: "_infoLeftColumn" + spacing: Variables.defaultMargin + + LabelUnitText { id: _ufVolumeRemoved + objectName : "_ufVolumeRemoved" + text : qsTr("UF Volume Removed") + unitText : Variables.unitVolume + valueText : "-- --" + } + + LabelUnitText { id: _timeElapsed + objectName : "_timeElapsed" + text : qsTr("Time Elapsed") + unitText : Variables.unitTextDuration + valueText : "-- --" + } + } + + Column { id: _infoRightColumn + objectName: "_infoRightColumn" + spacing: Variables.defaultMargin + + LabelUnitText { id: _ufVolumeGoal + objectName : "_ufVolumeGoal" + text : qsTr("UF Volume Goal") + unitText : Variables.unitVolume + valueText : "-- --" + } + + LabelUnitText { id: _treatmentDuration + objectName : "_treatmentDuration" + text : qsTr("Treatment Duration") + unitText : Variables.unitTextDuration + valueText : "-- --" + } + } + } + + Rectangle { id: _divider + objectName: "_divider" + anchors { + top: _infoRow.bottom + topMargin: Variables.defaultMargin * 3 + left: parent.left + leftMargin: 50 + right: parent.right + rightMargin: anchors.leftMargin + } + height: 2 + color: Colors.panelBorderColor + + } + + LabelUnitValueAdjuster { id: _newTreatmentDuration + objectName : "_newTreatmentDuration" + anchors { + top: _divider.bottom + topMargin: _divider.anchors.topMargin + horizontalCenter: parent.horizontalCenter + } + text : qsTr("New Treatment Duration") + titleFontPixelSize : Fonts.fontPixelContainerTitleSmall + unitText : Variables.unitTextDuration + unitFontPixelSize : Fonts.fontPixelContainerUnitSmall + minimum : vTreatmentRanges.treatmentRanges_Duration_Min + maximum : vTreatmentRanges.treatmentRanges_Duration_Max + // value : { value = _private.treatmentDuration } // set without binding + + onMinimumChanged: { + if (value < minimum) { + value = minimum + } + } + onMaximumChanged: { + if (value > maximum) { + value = maximum + } + } + } + + TouchRect { id: _continueButton + objectName : "_continueButton" + anchors { + bottom : parent.bottom + bottomMargin : Variables.defaultMargin + horizontalCenter: parent.horizontalCenter + } + width : Variables.defaultButtonWidth + height : Variables.defaultButtonHeight + text { + text : qsTr("Continue") + font.weight : Font.Medium + } + isDefault : true + + onClicked : { + _root.continueClicked(_newTreatmentDuration.value) + } + } +} Index: sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentFlow.qml =================================================================== diff -u -ra5760947d3ed0d2748ba023a1c25e3c6aa0b1de1 -rd5e9940fa96373f6cc118dfa9761d95f361689a5 --- sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentFlow.qml (.../TreatmentAdjustmentFlow.qml) (revision a5760947d3ed0d2748ba023a1c25e3c6aa0b1de1) +++ sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentFlow.qml (.../TreatmentAdjustmentFlow.qml) (revision d5e9940fa96373f6cc118dfa9761d95f361689a5) @@ -21,125 +21,220 @@ // Qml imports import "qrc:/globals" import "qrc:/components" +import "qrc:/compounds" /*! * \brief TreatmentAdjustmentFlow.qml is the screen * To adjust the treatment blood/dialysate flow */ TreatmentAdjustmentBase { id: _root - contentItem.objectName: "TreatmentAdjustmentFlow" //SquishQt testability + objectName: "_TreatmentAdjustmentFlow" // SquishQt testability - property alias bloodFlowRateValue : _bloodFlowSlider.value - property alias bloodFlowRateMinimum : _bloodFlowSlider.minimum - property alias bloodFlowRateMaximum : _bloodFlowSlider.maximum - property alias bloodFlowRateStep : _bloodFlowSlider.step + QtObject { id: _private + objectName: "_private" + readonly property int containerWidth: (_root.width - (Variables.defaultMargin * 5))/2 + readonly property int titleFontPixelSize: Fonts.fontPixelContainerTitleSmall + readonly property int unitFontPixelSize: Fonts.fontPixelContainerUnitSmall + } - property alias dialysateFlowRateValue : _dialysateFlowSlider.value - property alias dialysateFlowRateMinimum : _dialysateFlowSlider.minimum - property alias dialysateFlowRateMaximum : _dialysateFlowSlider.maximum - property alias dialysateFlowRateStep : _dialysateFlowSlider.step + titleText: qsTr("Treatment Parameters") - property int textWidth : 200 + contentItem: Item { id: _contentItem + objectName: "_contentItem" - titleText: qsTr("FLOWS") + Item { id: _contentArea + objectName: "_contentArea" + anchors { + top: parent.top + bottom: _confirmButton.top + left: parent.left + leftMargin: Variables.defaultMargin * 2 + right: parent.right + rightMargin: anchors.leftMargin + } - // Note : The slider values are not bound and will be set by user freely - // and will be used to be sent for adjustment - // if accepted will not changed and - // if rejected then will be reset to the values passed by adjustment response + Row { id: _controlRow + objectName: "_controlRow" + anchors.centerIn: parent + spacing: Variables.defaultMargin - // reset the flow values to the current flow values - function currentFlows() { - _bloodFlowSlider.reset ( vTreatmentBloodFlow. bloodFlow_PresFlow ) - _dialysateFlowSlider.reset ( vTreatmentDialysateFlow.dialysateFlow_PresFlow ) - } + Column { id: _controlLeftColumn + objectName: "_controlLeftColumn" + spacing: Variables.defaultMargin - // reset the flow values to the values of the adjustment response - function resetFlows() { - _bloodFlowSlider.reset ( vTreatmentAdjustmentFlows. bloodFlow_FlowSetPoint ) - _dialysateFlowSlider.reset ( vTreatmentAdjustmentFlows.dialysateFlow_FlowSetPoint ) - } + LabelUnitValueAdjuster { id: _bloodFlowRate + objectName : "_bloodFlowRate" + width : _private.containerWidth + text : qsTr("Blood Flow Rate") + titleFontPixelSize : _private.titleFontPixelSize + unitText : Variables.unitTextFlowRate + unitFontPixelSize : _private.unitFontPixelSize + minimum : vTreatmentRanges.arterialPressureLimitWindowMin + maximum : vTreatmentRanges.arterialPressureLimitWindowMax + step : vTreatmentRanges.arterialPressureLimitWindowRes + value : { value = vTreatmentRanges.arterialPressureLimitWindowDef } // set without binding + } - onAboutToShow: { - // TODO : When Testing data on Setting screen is removed - // This needs to be moved into the Treatment______.qml - currentFlows() - } + LabelUnitValueAdjuster { id: _dialysateFlowRate + objectName : "_dialysateFlowRate" + width : _private.containerWidth + text : qsTr("Dialysate Flow Rate") + titleFontPixelSize : _private.titleFontPixelSize + unitText : Variables.unitTextFlowRate + unitFontPixelSize : _private.unitFontPixelSize + minimum : vTreatmentRanges.venousPressureLimitWindowMin + maximum : vTreatmentRanges.venousPressureLimitWindowMax + step : vTreatmentRanges.venousPressureLimitWindowRes + value : { value = vTreatmentRanges.venousPressureLimitWindowDef } // set without binding + } - Connections { target: vTreatmentAdjustmentFlows - function onAdjustmentTriggered ( vValue ) { - if ( vTreatmentAdjustmentFlows.adjustment_Accepted ) { - accept() - } else { - resetFlows() - console.debug(vTreatmentAdjustmentFlows.text()) - notification.text = vTreatmentAdjustmentFlows.text() + LabelUnitValueAdjuster { id: _dialysateTemperature + objectName : "_dialysateTemperature" + width : _private.containerWidth + text : qsTr("Dialysate Temperature") + titleFontPixelSize : _private.titleFontPixelSize + unitText : Variables.unitTextTemperature + unitFontPixelSize : _private.unitFontPixelSize + minimum : vTreatmentRanges.venousPressureLimitAsymtrcMin + maximum : vTreatmentRanges.venousPressureLimitAsymtrcMax + step : vTreatmentRanges.venousPressureLimitAsymtrcRes + value : { value = vTreatmentRanges.venousPressureLimitAsymtrcDef } // set without binding + } + } + + Column { id: _controlRightColumn + objectName: "_controlRightColumn" + spacing: Variables.defaultMargin + + LabelUnitContainer { id: _acidConcentrate + objectName : "_acidConcentrate" + width : _private.containerWidth + height : Variables.adjustmentLabelUnitContainerHeight + text : qsTr("Acid Concentrate") + titleFontPixelSize : _private.titleFontPixelSize + unitFontPixelSize : _private.unitFontPixelSize + showEdit : true + // onEditClicked : _acidConcentrateAdjustment.open() + // valid : ! vTreatmentCreate.acidConcentrateRejectReason + + contentItem: BaseComboBox { id: _acidConcentrateComboBox + objectName : "_acidConcentrateComboBox" + anchors { + topMargin : Variables.defaultMargin / 2 + bottomMargin: anchors.topMargin + leftMargin : Variables.defaultMargin * 2 + rightMargin : anchors.leftMargin + } + isActive : vTreatmentCreate.acidConcentrateSet + currentIndex : vTreatmentCreate.acidConcentrate + model : vTreatmentRanges.acidConcentrateOptions + onClear : { + vTreatmentRanges.doClearAcidConcentrate(vTreatmentCreate.acidConcentrateSet) + vTreatmentCreate.acidConcentrateSet = false + } + + onActivated : { + if ( ! _acidConcentrate.valid ) { vTreatmentCreate.acidConcentrateRejectReason = Variables.noRejectReason } + vTreatmentCreate.acidConcentrate = _acidConcentrateComboBox.currentIndex + vTreatmentCreate.acidConcentrateSet = true + } + } + } + + LabelUnitContainer { id: _bicarbonateConcentrate + objectName : "_bicarbonateConcentrate" + width : _private.containerWidth + height : Variables.adjustmentLabelUnitContainerHeight + text : qsTr("Bicarbonate Concentrate") + titleFontPixelSize : _private.titleFontPixelSize + unitFontPixelSize : _private.unitFontPixelSize + + contentItem: BaseComboBox { id: _bicarbonateConcentrateComboBox + objectName : "_bicarbonateConcentrateComboBox" + anchors { + topMargin : Variables.defaultMargin / 2 + bottomMargin: anchors.topMargin + leftMargin : Variables.defaultMargin * 2 + rightMargin : anchors.leftMargin + } + isActive : vTreatmentCreate.bicarbonateConcentrateSet + currentIndex : vTreatmentCreate.bicarbonateConcentrate + model : vTreatmentRanges.bicarbonateConcentrateOptions + onClear : vTreatmentCreate.bicarbonateConcentrateSet = false + onActivated : { + if ( ! _bicarbonateConcentrate.valid ) { vTreatmentCreate.bicarbonateConcentrateRejectReason = Variables.noRejectReason } + vTreatmentCreate.bicarbonateConcentrate = _bicarbonateConcentrateComboBox.currentIndex + vTreatmentCreate.bicarbonateConcentrateSet = true + } + } + } + + LabelUnitContainer { id: _theoreticalConductivity + objectName : "_theoreticalConductivity" + width : _private.containerWidth + height : Variables.adjustmentLabelUnitContainerHeight + text : qsTr("Theoretical Conductivity") + titleFontPixelSize : _private.titleFontPixelSize + unitText : Variables.unitTextDialCond + unitFontPixelSize : _private.unitFontPixelSize + + contentItem: Text { id: _theoreticalConductivityText + objectName : "_theoreticalConductivityText" + anchors.centerIn : parent + width : contentWidth + height : contentHeight + color : Colors.offWhite + font.pixelSize : Fonts.fontPixelValueControl + text : "--" + } + } + + LabelUnitContainer { id: _independentConductivity + objectName : "_independentConductivity" + width : _private.containerWidth + height : Variables.adjustmentLabelUnitContainerHeight + text : qsTr("Independent Conductivity Reading") + titleFontPixelSize : _private.titleFontPixelSize + unitText : Variables.unitTextDialCond + unitFontPixelSize : _private.unitFontPixelSize + + contentItem: Text { id: _independentConductivityText + objectName : "_independentConductivityText" + anchors.centerIn : parent + width : contentWidth + height : contentHeight + color : Colors.offWhite + font.pixelSize : Fonts.fontPixelValueControl + text : "--" + } + } + } } } - } - Column { id : _flowsColumn - spacing: 100 - anchors.centerIn: parent - Row { id : _bloodFlowRow - spacing: 50 - anchors.horizontalCenter: parent.horizontalCenter - TextRect { id: _bloodFlowTextRect - anchors.top: parent.top - anchors.topMargin: 25 - width: textWidth - title: qsTr("Blood Flow Rate") - label: _bloodFlowSlider.value - extra: Variables.unitTextFlowRate - labelFont.weight: Font.ExtraLight + TouchRect { id: _confirmButton + objectName : "_confirmButton" + anchors { + bottom : parent.bottom + horizontalCenter: parent.horizontalCenter } - Slider { id : _bloodFlowSlider - anchors.verticalCenter: parent.verticalCenter - width : 600 - minimum : Variables.bloodFlowMin - maximum : Variables.bloodFlowMax - decimal : Variables.bloodFlowPrecision - unit : Variables.unitTextFlowRate - step : Variables.bloodFlowResolution - ticks : true + width : Variables.defaultButtonWidth + height : Variables.defaultButtonHeight + text { + text : qsTr("Confirm") + font.weight : Font.Medium } - SliderArrows{ id:_bloodFlowSliderArrows - anchors.verticalCenter : _bloodFlowSlider.verticalCenter - onIncrementValue : _bloodFlowSlider.incrementValue(true) - onDecrementValue : _bloodFlowSlider.decrementValue(true) + isDefault : true + + onClicked : { + _root.onConfirmClicked() } } - Line { - anchors.horizontalCenter: parent.horizontalCenter - length : _root.width - 100 - color : Colors.separatorLine - } - Row { id : _dialysateInletFlowRow - spacing: 50 - anchors.horizontalCenter: parent.horizontalCenter - TextRect { id: _dialysateInletFlowTextRect - anchors.top: parent.top - anchors.topMargin: 25 - width: textWidth - title: qsTr("Dialysate Flow Rate") - label: _dialysateFlowSlider.value - extra: Variables.unitTextFlowRate - labelFont.weight: Font.ExtraLight - } - Slider { id : _dialysateFlowSlider - anchors.verticalCenter: parent.verticalCenter - width : 600 - minimum : vTreatmentRanges.treatmentRanges_Dialysate_Flow_Min - maximum : vTreatmentRanges.treatmentRanges_Dialysate_Flow_Max - unit : Variables.unitTextFlowRate - step : Variables.dialysateFlowResolution - ticks : true - } - SliderArrows{ id:_dialysateFlowSliderArrows - anchors.verticalCenter : _dialysateFlowSlider.verticalCenter - onIncrementValue : _dialysateFlowSlider.incrementValue(true) - onDecrementValue : _dialysateFlowSlider.decrementValue(true) - } - } } + + footer: Item { id: _footerItem + objectName : "_footerItem" + width : parent.width + height : Variables.notificationHeight + } } Index: sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentPressuresLimits.qml =================================================================== diff -u -r0fc6d1c6c65ba935d7e5f0bc56130e99deada039 -rd5e9940fa96373f6cc118dfa9761d95f361689a5 --- sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentPressuresLimits.qml (.../TreatmentAdjustmentPressuresLimits.qml) (revision 0fc6d1c6c65ba935d7e5f0bc56130e99deada039) +++ sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentPressuresLimits.qml (.../TreatmentAdjustmentPressuresLimits.qml) (revision d5e9940fa96373f6cc118dfa9761d95f361689a5) @@ -28,7 +28,7 @@ * To adjust the treatment inline blood pressure ranges of Arterial and venous */ TreatmentAdjustmentBase { id: _root - objectName: "_TreatmentAdjustmentPressures" //SquishQt testability + objectName: "_TreatmentAdjustmentPressures" // SquishQt testability readonly property alias arterialPressureLimitWindow : _arterialWindow.value readonly property alias venousPressureLimitWindow : _venousWindow.value Index: sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentSaline.qml =================================================================== diff -u -r0fc6d1c6c65ba935d7e5f0bc56130e99deada039 -rd5e9940fa96373f6cc118dfa9761d95f361689a5 --- sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentSaline.qml (.../TreatmentAdjustmentSaline.qml) (revision 0fc6d1c6c65ba935d7e5f0bc56130e99deada039) +++ sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentSaline.qml (.../TreatmentAdjustmentSaline.qml) (revision d5e9940fa96373f6cc118dfa9761d95f361689a5) @@ -24,11 +24,11 @@ import "qrc:/compounds" /*! - * \brief TreatmentAdjustmentSaine.qml is the screen + * \brief TreatmentAdjustmentSaline.qml is the screen * To adjust the treatment saline */ TreatmentAdjustmentBase { id: _root - objectName: "_TreatmentAdjustmentSaline" //SquishQt testability + objectName: "_TreatmentAdjustmentSaline" // SquishQt testability readonly property alias fluidBolusVolume: _fluidBolusVolume.value