Index: leahi.qrc =================================================================== diff -u -rbea36be2766046e63c4e82539a630b5cee7ce1c6 -r1164ea502e3fabdb55aa41923e0e566505f197ef --- leahi.qrc (.../leahi.qrc) (revision bea36be2766046e63c4e82539a630b5cee7ce1c6) +++ leahi.qrc (.../leahi.qrc) (revision 1164ea502e3fabdb55aa41923e0e566505f197ef) @@ -110,6 +110,8 @@ resources/images/complete_check.png resources/images/Brightness.png resources/images/Volume.png + resources/images/water_sample_fail.png + resources/images/water_sample_pass.png sources/gui/qml/components/MainMenu.qml @@ -175,6 +177,7 @@ sources/gui/qml/components/IdleTimer.qml sources/gui/qml/components/TreatmentCompleteButton.qml sources/gui/qml/components/RangedValue.qml + sources/gui/qml/components/SubStepIndicator.qml sources/gui/qml/components/SDCInfo.qml @@ -249,18 +252,16 @@ sources/gui/qml/pages/pretreatment/PreTreatmentBase.qml sources/gui/qml/pages/pretreatment/PreTreatmentStack.qml - sources/gui/qml/pages/pretreatment/PreTreatmentWaterSampleStack.qml - sources/gui/qml/pages/pretreatment/PreTreatmentConsumablesStack.qml - sources/gui/qml/pages/pretreatment/PreTreatmentPrimeStack.qml + sources/gui/qml/pages/pretreatment/PreTreatmentWaterSample.qml + sources/gui/qml/pages/pretreatment/PreTreatmentSelfTests.qml + sources/gui/qml/pages/pretreatment/PreTreatmentPrime.qml + sources/gui/qml/pages/pretreatment/PreTreatmentInstallStack.qml + sources/gui/qml/pages/pretreatment/PreTreatmentUltrafiltration.qml sources/gui/qml/pages/pretreatment/create/PreTreatmentCreate.qml sources/gui/qml/pages/pretreatment/create/PreTreatmentCreateContent.qml - - sources/gui/qml/pages/pretreatment/connection/PreTreatmentUltrafiltration.qml - sources/gui/qml/pages/pretreatment/connection/PreTreatmentConnectionStack.qml - sources/gui/qml/pages/treatment/TreatmentStack.qml sources/gui/qml/pages/treatment/TreatmentHome.qml @@ -282,15 +283,18 @@ sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentBase.qml sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentBolusVolume.qml - sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentDuration.qml + sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentDurationStack.qml sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentDurationEdit.qml sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentDurationConfirm.qml sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentPressuresLimits.qml sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentSetPoints.qml - sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentUltrafiltration.qml + sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentUltrafiltrationStack.qml sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentUltrafiltrationStart.qml sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentUltrafiltrationEdit.qml sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentUltrafiltrationConfirm.qml + sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentIsolatedUFDurationEdit.qml + sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentIsolatedUFVolumeEdit.qml + sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentIsolatedUFConfirm.qml sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentVitals.qml sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentVitalsInterval.qml Index: sources/gui/qml/components/HeaderBar.qml =================================================================== diff -u -r4a2b83dcb56555861d2c741a8e8894e5b07e24bf -r1164ea502e3fabdb55aa41923e0e566505f197ef --- sources/gui/qml/components/HeaderBar.qml (.../HeaderBar.qml) (revision 4a2b83dcb56555861d2c741a8e8894e5b07e24bf) +++ sources/gui/qml/components/HeaderBar.qml (.../HeaderBar.qml) (revision 1164ea502e3fabdb55aa41923e0e566505f197ef) @@ -26,17 +26,28 @@ MouseArea { id: _mouseArea anchors.fill : parent - // TODO: disable this later. this is only for diagnostic purpose. - onDoubleClicked : { - if ( _GuiView.dryDemoMode ) { - let dryDemoTempID = 99 - let id = vConfirm.id - vConfirm.id = dryDemoTempID - vConfirm.doConfirm( true ) - vConfirm.id = id + property real lastClickTime: 0 + property int doubleClickThreshold: 500 // ms + + // had to implement my own double click because the onDoubleClicked was not user friednly for touch. + // a 500 ms threshold between clicks has bee added + onClicked : { + const now = Date.now() + if (now - _mouseArea.lastClickTime < _mouseArea.doubleClickThreshold) { + if ( _GuiView.dryDemoMode ) { + let dryDemoTempID = 99 + let id = vConfirm.id + vConfirm.id = dryDemoTempID + vConfirm.doConfirm( true ) + vConfirm.id = id + } + else { + _diagnosticsDialog.open() + } + lastClickTime = 0 } else { - _diagnosticsDialog.open() + lastClickTime = now } } } @@ -122,8 +133,16 @@ titlePixelSize : 32 backgroundColor : Colors.transparent highlightHeight : 15 + model : _model isMainTreatment : true onHiddenChanged: { if (hidden) { index = 0 } } + + ListModel { id: _model + ListElement { text: qsTr("Treatment"); visible: true; screen: 0 } // MainMenu.Treatment + ListElement { text: qsTr("Trends"); visible: true; screen: 1 } // MainMenu.Trends + ListElement { text: qsTr("Heparin"); visible: true; screen: 2 } // MainMenu.Heparin + ListElement { text: qsTr("HDF"); visible: false; screen: 3 } // MainMenu.HDF + } } Row { id: _headerButtonRow @@ -142,24 +161,24 @@ onPressed : _endTreatmentDialog.open() } - VitalsButton { id : _vitalsButton + IconButton { id : _prescriptionButton + iconSize : Variables.headerIconDiameter + iconImageSource : "qrc:/images/iPrescription" extraSpace : _headerButtonRow.spacing visible : vTDOpMode.preTreatment || vTDOpMode.inTreatment || vTDOpMode.postTreatment - onPressed : _treatmentAdjustmentVitals.open() + onPressed : _headerbarPrescription.open() } - IconButton { id : _prescriptionButton - iconSize : Variables.headerIconDiameter - iconImageSource : "qrc:/images/iPrescription" + VitalsButton { id : _vitalsButton extraSpace : _headerButtonRow.spacing visible :( vTDOpMode.preTreatment || vTDOpMode.inTreatment || vTDOpMode.postTreatment ) && ! _root.isCreateRx - onPressed : _headerbarPrescription.open() + onPressed : _treatmentAdjustmentVitals.open() } IconButton { id : _wifiButton @@ -170,23 +189,16 @@ onPressed : _headerbarWifi.openDialog(_wifiButton) } - IconButton { id : _cloudSyncButton - iconSize : Variables.headerIconDiameter - iconImageSource : "qrc:/images/iCloudSync" - extraSpace : _headerButtonRow.spacing - enabled : false + // TODO Phase 2 👋👋👋 +// IconButton { id : _cloudSyncButton +// iconSize : Variables.headerIconDiameter +// iconImageSource : "qrc:/images/iCloudSync" +// extraSpace : _headerButtonRow.spacing +// enabled : false - onPressed : print("CloudSync button pressed!") - } +// onPressed : print("CloudSync button pressed!") +// } - IconButton { id : _storageButton - iconSize : Variables.headerIconDiameter - iconImageSource : "qrc:/images/iStorage" - extraSpace : _headerButtonRow.spacing - - onPressed : _headerbarStorage.openDialog(_storageButton) - } - IconButton { id : _settingsButton iconSize : Variables.headerIconDiameter iconImageSource : "qrc:/images/iSettings" Index: sources/gui/qml/components/RangeMarker.qml =================================================================== diff -u -rad57884fca3e8a0916b6d6bf51a69264b9b5263f -r1164ea502e3fabdb55aa41923e0e566505f197ef --- sources/gui/qml/components/RangeMarker.qml (.../RangeMarker.qml) (revision ad57884fca3e8a0916b6d6bf51a69264b9b5263f) +++ sources/gui/qml/components/RangeMarker.qml (.../RangeMarker.qml) (revision 1164ea502e3fabdb55aa41923e0e566505f197ef) @@ -28,11 +28,9 @@ property int decimal : 0 property alias text : _textValue - property alias handle : _handle property alias font : _textValue.font property color color : Colors.rangeMarker property alias thickness : _root.width - property alias hasHandle : _handle.visible property bool valueOnTop : false property string unitText : "" @@ -43,19 +41,6 @@ bottom : parent.bottom } - Rectangle { id: _handle - visible : false - - width : _root.width * 3 - height : width - radius : width - color : _root.color - anchors { - top : _root.top - horizontalCenter: parent.horizontalCenter - } - } - Rectangle { id: _stick width : _root.width height : _root.height @@ -75,12 +60,12 @@ right : valueOnTop ? parent.left : undefined top : valueOnTop ? undefined : parent.top - bottom : valueOnTop ? _handle.top : + bottom : valueOnTop ? _stick.top : undefined bottomMargin: valueOnTop ? 5 : 0 rightMargin : valueOnTop ? -12 : 5 topMargin : valueOnTop ? 0 : -5 - horizontalCenter: valueOnTop ? _handle.horizontalCenter : undefined + horizontalCenter: valueOnTop ? _stick.horizontalCenter : undefined horizontalCenterOffset: { if (valueOnTop) { if (_root.parent !== undefined) { Index: sources/gui/qml/globals/Colors.qml =================================================================== diff -u -r81aec0b1316a43c46f8c27c773d8f95e695ec273 -r1164ea502e3fabdb55aa41923e0e566505f197ef --- sources/gui/qml/globals/Colors.qml (.../Colors.qml) (revision 81aec0b1316a43c46f8c27c773d8f95e695ec273) +++ sources/gui/qml/globals/Colors.qml (.../Colors.qml) (revision 1164ea502e3fabdb55aa41923e0e566505f197ef) @@ -61,7 +61,7 @@ readonly property color dialogValueColor : "#385E92" readonly property color darkDialogColor : "#091E31" - readonly property color backgroundRangeRect : "#3e546e" + readonly property color backgroundRangeRect : "#2E4F76" readonly property color highlightProgressBar : "#3d8eef" readonly property color highlightMedProgressBar : "#1b2b3e" readonly property color textProgressBar : "#88a3c5" @@ -105,6 +105,7 @@ readonly property color textTextRectExtra : "#708795" readonly property color line : "#094266" + readonly property color checkListLine : "#345477" readonly property color pressuresText : white readonly property color pressuresArterialBar : "#FF8282" @@ -164,6 +165,8 @@ readonly property color roFeatured : "#E79DF6" readonly property color roDefeatured : "#F9CD74" + readonly property color waterSampleContainer : "#2A425A" + // ---------- < PRS > Related Section ---------- // Alarm priority colors function alarmPriorityColors(vPriority) { Index: sources/gui/qml/globals/Fonts.qml =================================================================== diff -u -rf7fdf92f3ab8ffea88d491b33f58b16f9617f237 -r1164ea502e3fabdb55aa41923e0e566505f197ef --- sources/gui/qml/globals/Fonts.qml (.../Fonts.qml) (revision f7fdf92f3ab8ffea88d491b33f58b16f9617f237) +++ sources/gui/qml/globals/Fonts.qml (.../Fonts.qml) (revision 1164ea502e3fabdb55aa41923e0e566505f197ef) @@ -75,15 +75,15 @@ readonly property int fontPixelDurationCurTime : 89 readonly property int fontPixelDurationAdjTime : 28 - readonly property int fontPixelStateListText : 20 - readonly property int fontPixelCirclProgressTimeSmall : 32 + readonly property int fontPixelStateListText : 24 + readonly property int fontPixelCirclProgressTimeSmall : 50 readonly property int fontPixelCirclProgressTimeNormal : 90 readonly property int fontPixelUltrafiltrationAdjustmentMetrics : 30 readonly property int fontPixelUltrafiltrationAdjustmentNotification : 32 readonly property int fontPixelUltrafiltrationAdjustmentConfirmation : 50 - readonly property int fontPixelUltrafiltrationRangeMarker : 32 - readonly property int fontPixelUltrafiltrationMinMaxLabel : 24 + readonly property int fontPixelUltrafiltrationRangeMarker : 24 + readonly property int fontPixelUltrafiltrationMinMaxLabel : 18 readonly property int fontPixelUltrafiltrationRateUnit : 16 readonly property int fontPixelRinsebackAdjustmentButton : 26 Index: sources/gui/qml/main.qml =================================================================== diff -u -r69c86c57349b7d4a6ba47a801ba27b1c470fade5 -r1164ea502e3fabdb55aa41923e0e566505f197ef --- sources/gui/qml/main.qml (.../main.qml) (revision 69c86c57349b7d4a6ba47a801ba27b1c470fade5) +++ sources/gui/qml/main.qml (.../main.qml) (revision 1164ea502e3fabdb55aa41923e0e566505f197ef) @@ -69,6 +69,7 @@ // In-Treatment - Data import VTreatmentBloodFlow 0.1 import VTreatmentDialysateFlow 0.1 +import VTreatmentIsolatedUF 0.1 import VTreatmentPressureOcclusion 0.1 import VTreatmentUltrafiltration 0.1 import VTreatmentTime 0.1 @@ -130,6 +131,9 @@ import VTreatmentAdjustmentDialysateFlowRate 0.1 import VTreatmentAdjustmentDialysateTemperature 0.1 import VTreatmentAdjustmentFlows 0.1 +import VTreatmentAdjustmentIsolatedUFDurationEdit 0.1 +import VTreatmentAdjustmentIsolatedUFVolumeEdit 0.1 +import VTreatmentAdjustmentIsolatedUFConfirm 0.1 import VTreatmentAdjustmentUltrafiltrationState 0.1 import VTreatmentAdjustmentUltrafiltrationEdit 0.1 import VTreatmentAdjustmentUltrafiltrationConfirm 0.1 @@ -231,6 +235,7 @@ VTDTemperature { id: vTDTemperature } VTreatmentDialysateFlow { id: vTreatmentDialysateFlow } + VTreatmentIsolatedUF { id: vTreatmentIsolatedUF } VTreatmentPressureOcclusion { id: vTreatmentPressureOcclusion } VTreatmentUltrafiltration { id: vTreatmentUltrafiltration } VTreatmentTime { id: vTreatmentTime } @@ -294,6 +299,9 @@ VTreatmentRanges { id: vTreatmentRanges } VTreatmentAdjustmentBolusVolume { id: vTreatmentAdjustmentBolusVolume } + VTreatmentAdjustmentIsolatedUFDurationEdit { id: vTreatmentAdjustmentIsolatedUFDurationEdit } + VTreatmentAdjustmentIsolatedUFVolumeEdit { id: vTreatmentAdjustmentIsolatedUFVolumeEdit } + VTreatmentAdjustmentIsolatedUFConfirm { id: vTreatmentAdjustmentIsolatedUFConfirm } VTreatmentAdjustmentSaline { id: vTreatmentAdjustmentSaline } VTreatmentAdjustmentVitals { id: vTreatmentAdjustmentVitals } VTreatmentAdjustmentUltrafiltrationState { id: vTreatmentAdjustmentUltrafiltrationState } @@ -367,6 +375,10 @@ function onStandbyWaitDisinfectChanged ( vValue ) { _mainMenu.isTreatment() } } + Connections { target: _mainStack + function onIsCreateRx ( vState ) { _headerBar.isCreateRx = vState } + } + // 9 - Others HeaderBar { id: _headerBar anchors.top: parent.top Index: sources/gui/qml/pages/pretreatment/create/PreTreatmentCreateContent.qml =================================================================== diff -u -rd1793ffb8c9a4bc3aee524aafbf0042175e91229 -r1164ea502e3fabdb55aa41923e0e566505f197ef --- sources/gui/qml/pages/pretreatment/create/PreTreatmentCreateContent.qml (.../PreTreatmentCreateContent.qml) (revision d1793ffb8c9a4bc3aee524aafbf0042175e91229) +++ sources/gui/qml/pages/pretreatment/create/PreTreatmentCreateContent.qml (.../PreTreatmentCreateContent.qml) (revision 1164ea502e3fabdb55aa41923e0e566505f197ef) @@ -67,6 +67,7 @@ _heparinStopTimeControl .refresh() _dialysateTemperatureControl .refresh() _salineBolusVolumeControl .refresh() + _bpMeasurementIntervalControl .refresh() } function clear () { @@ -439,28 +440,23 @@ unitText : Variables.unitTextDuration valid : ! vTreatmentCreate.bloodPressureMeasureIntervalRejectReason - contentItem : BaseComboBox { id: _bpMeasurementIntervalControl - anchors.rightMargin : Variables.defaultMargin * 2 - anchors.leftMargin : anchors.rightMargin - anchors.topMargin : Variables.defaultMargin / 2 - anchors.bottomMargin: anchors.topMargin - isActive : vTreatmentCreate.bloodPressureMeasureIntervalSet - enabled : _root.editingEnabled - currentIndex : vTreatmentRanges.bloodPressureMeasureInterval.indexOf(vTreatmentCreate.bloodPressureMeasureInterval.toString()) - model : vTreatmentRanges.bloodPressureMeasureInterval - canOff : true - centerHorizontally : true + contentItem : ValueAdjusterCustom { id: _bpMeasurementIntervalControl + editable : _root.editingEnabled + isActive : vTreatmentCreate.bloodPressureMeasureIntervalSet + defaultValue : vTreatmentRanges.vitalsInterval + value : vTreatmentRanges.bloodPressureMeasureInterval.indexOf(vTreatmentCreate.bloodPressureMeasureInterval.toString()) + model : vTreatmentRanges.bloodPressureMeasureInterval + canOff : true - onClear : { - vTreatmentCreate.bloodPressureMeasureIntervalSet = false - } + onDidActiveChange: function(vState) { vTreatmentCreate.bloodPressureMeasureIntervalSet = vState } - onActivated : { + onDidChange : function(vValue) { if ( ! _bpMeasurementInterval.valid ) { vTreatmentCreate.bloodPressureMeasureIntervalRejectReason = Variables.noRejectReason } - vTreatmentCreate.bloodPressureMeasureInterval = vTreatmentRanges.bloodPressureMeasureInterval[_bpMeasurementIntervalControl.currentIndex] - vTreatmentCreate.bloodPressureMeasureIntervalSet = true + + vTreatmentCreate.bloodPressureMeasureInterval = vTreatmentRanges.bloodPressureMeasureInterval[vValue] + vTreatmentCreate.bloodPressureMeasureIntervalSet = true } } } Index: sources/view/td/data/VTreatmentRanges.cpp =================================================================== diff -u -r6e41d2d9f431580bb350db71cc52dd40e60e1a28 -r1164ea502e3fabdb55aa41923e0e566505f197ef --- sources/view/td/data/VTreatmentRanges.cpp (.../VTreatmentRanges.cpp) (revision 6e41d2d9f431580bb350db71cc52dd40e60e1a28) +++ sources/view/td/data/VTreatmentRanges.cpp (.../VTreatmentRanges.cpp) (revision 1164ea502e3fabdb55aa41923e0e566505f197ef) @@ -66,7 +66,7 @@ heparinDispensingRateMax ( vData.mHepDispRateMax ); heparinDispensingRateDef ( vData.mHepDispRateDef ); heparinStopTimeMin ( vData.mHepStopTimeMin ); - + vitalsInterval ( vData.mVitalsIntervalDef ); acidConcentratePotassiumMin ( vData.mPotassiumMin ); acidConcentratePotassiumMax ( vData.mPotassiumMax ); acidConcentrateCalciumMin ( vData.mCalciumMin ); @@ -229,6 +229,8 @@ isConfigsOk = isConfigsOk && !_dryBicabCartridgeSizeOptions .isEmpty(); isConfigsOk = isConfigsOk && !_waterSampleTestResultRequired.isEmpty(); + vitalsInterval(_bloodPressureMeasureInterval.indexOf(_vitalsDef)); + FROMVARIANT_WITHRETURN ( dialysateTempDef , "Dialysate Temperature" , "Dialysate_Temperature_Def" , Float , isConfigsOk ); FROMVARIANT_WITHRETURN ( dialysateTempMin , "Dialysate Temperature" , "Dialysate_Temperature_Min" , Float , isConfigsOk ); FROMVARIANT_WITHRETURN ( dialysateTempMax , "Dialysate Temperature" , "Dialysate_Temperature_Max" , Float , isConfigsOk ); Index: sources/view/td/data/VTreatmentRanges.h =================================================================== diff -u -r6e41d2d9f431580bb350db71cc52dd40e60e1a28 -r1164ea502e3fabdb55aa41923e0e566505f197ef --- sources/view/td/data/VTreatmentRanges.h (.../VTreatmentRanges.h) (revision 6e41d2d9f431580bb350db71cc52dd40e60e1a28) +++ sources/view/td/data/VTreatmentRanges.h (.../VTreatmentRanges.h) (revision 1164ea502e3fabdb55aa41923e0e566505f197ef) @@ -37,6 +37,8 @@ { Q_OBJECT + const QString _vitalsDef = "30"; // LEAHI_PRS_215 + // Real-time properties received from TD from TreatmentRangesData READONLY( quint32 , treatmentRanges_Duration_Min , 0) READONLY( quint32 , treatmentRanges_Duration_Max , 0) @@ -63,6 +65,8 @@ READONLY( QStringList , bicarbonateConcentrateOptions ,{}) READONLY( QStringList , dialyzerTypeOptions ,{}) READONLY( QStringList , bloodPressureMeasureInterval ,{}) + VALUESET( quint32 , vitalsInterval , 0) + RANGESET( float , dialysateTemp , 0) RANGESET( quint32 , salineBolusVolume , 0)