Index: sources/gui/GuiGlobals.h =================================================================== diff -u -rcb9c48c7c307690dcafcfd16ef412fe660291692 -r6c0c4613d84a4fab29fd3bb75da8d084740bc67e --- sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision cb9c48c7c307690dcafcfd16ef412fe660291692) +++ sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision 6c0c4613d84a4fab29fd3bb75da8d084740bc67e) @@ -83,7 +83,7 @@ // POST ID_HDPostSingleResultData = 0x8E00, // 142 - ID_HDPostFinalResultData = 0x8F00, // 143 + ID_HDPostFinalResultData = 0x8F0F, // 143 //// ----- @CRAPIZED ID_DGPostSingleResultData = 0x9000, // 144 ID_DGPostFinalResultData = 0x9100, // 145 ID_UIPostFinalResultData = 0x9200, // 146 // ID_UIFinalResultTxr - UI Final Result response/Data transmit @@ -137,7 +137,7 @@ ID_Saline = 0x3D00, // 61 //// ----- @LEAHIZED ID_Ultrafiltration = 0x3E00, // 62 //// ----- @LEAHIZED ID_Heparin = 0x4D00, // 77 - ID_Rinseback = 0x5600, // 86 + ID_Rinseback = 0x8F00, // 143 //// ----- @LEAHIZED ID_Recirculate = 0x5A00, // 90 ID_BloodPrime = 0x5900, // 89 ID_TreatmentStop = 0x4900, // 73 @@ -267,8 +267,8 @@ // End-Treatment // Rinseback - ID_AdjustRinsebackReq = 0x520F, // 82 //// ----- @CRAPIZED: had to change to avoid duplication - ID_AdjustRinsebackRsp = 0x530F, // 83 //// ----- @CRAPIZED: had to change to avoid duplication + ID_AdjustRinsebackReq = 0x9000, // 144 //// ----- @LEAHIZED + ID_AdjustRinsebackRsp = 0x9100, // 145 //// ----- @LEAHIZED // Recirculate ID_AdjustRecirculateReq = 0x540F, // 84 //// ----- @CRAPIZED: had to change to avoid duplication Index: sources/gui/qml/pages/endtreatment/rinseback/EndTreatmentRinseback.qml =================================================================== diff -u -r77ba0083b790f7c1c851c60ecaeaa4f2e7eff7a8 -r6c0c4613d84a4fab29fd3bb75da8d084740bc67e --- sources/gui/qml/pages/endtreatment/rinseback/EndTreatmentRinseback.qml (.../EndTreatmentRinseback.qml) (revision 77ba0083b790f7c1c851c60ecaeaa4f2e7eff7a8) +++ sources/gui/qml/pages/endtreatment/rinseback/EndTreatmentRinseback.qml (.../EndTreatmentRinseback.qml) (revision 6c0c4613d84a4fab29fd3bb75da8d084740bc67e) @@ -15,19 +15,22 @@ // Qt import QtQuick 2.12 +import QtQuick.Controls 2.12 // Project // Qml imports import "qrc:/globals" import "qrc:/components" import "qrc:/pages/endtreatment" +import "qrc:/pages/treatment" import "qrc:/pages/treatment/sections" /*! * \brief the end treatment rinseback screen */ EndTreatmentBase { id: _root - objectName: "_EndTreatmentRinseback" + objectName : "_EndTreatmentRinseback" + title.text : qsTr("Rinseback") signal pauseClicked () signal resumeClicked () @@ -36,124 +39,219 @@ signal accelerateClicked () signal deccelerateClicked () - - title.text: qsTr("Rinseback") - - hasTimeout : vTreatmentRinseback .timeoutTotal - timeoutValue : vTreatmentRinseback .timeoutCountDown * 60 - - ImageText { id: _imageEnd - visible: ! vTDTreatmentStates.rbAdditional + ProgressCircle { id: _targetVolumeProgress + objectName : "_targetVolumeProgress" anchors { - right : _root.right - top : _root.top - rightMargin : 45 - topMargin : 45 + left : parent.left + leftMargin : Variables.defaultMargin * 2 + verticalCenter : parent.verticalCenter } - diameter : Variables.rinsebackIconDiameterDefault - source : "qrc:/images/iRedCrossWCircle" - text : qsTr("End") - fontSize : Fonts.fontPixelRinsebackAdjustmentButton - onClicked : endClicked() - } + thickness : 35 + circleShadowColor : Colors.mainTreatmentLighterBlue + circleFillColor : Colors.mainTreatmentDarkerBlue + runAnimation : vTDTreatmentStates.rbPaused + minimum : 0 + maximum : vTreatmentRinseback.target + value : vTreatmentRinseback.current - TreatmentPressures { id: _pressuresTouchArea - // maybe now it makes sense for the ranges to be displayed - // arterialLowerBound : 0 // requested to hide the bounds - // arterialUpperBound : 0 // requested to hide the bounds - // venousLowerBound : 0 // requested to hide the bounds - // venousUpperBound : 0 // requested to hide the bounds - -// isTouchable : false -// x : Variables.screenGridLeftColumnX -// y : Variables.screenGridRow1Y -// width : Variables.screenGridAreaWidth -// height : Variables.screenGridAreaHeightRow1 - } - Line { x: 0; y: Variables.screenGridRow1LineY; length: Variables.screenGridLineLength } - - ProgressCircle { id: _circle - diameter: 335 - anchors { - horizontalCenter: parent.horizontalCenter - top : parent.top - topMargin : vTDTreatmentStates.rbAdditional ? - _root.height/2 - height/2 : // move the progress circle in the center of the screen - 170 - } - - minimum : 0 - maximum : vTreatmentRinseback.target - value : vTreatmentRinseback.current - - Text { id: _textVolume + Text { id: _deliveredVolumeText + objectName : "_deliveredVolumeText" anchors.centerIn: parent - color: Colors.textMain - text: vTreatmentRinseback.current.toFixed(0) + " " + qsTr(Variables.unitTextFluid) - font.pixelSize: 76 - font.weight: Font.ExtraLight + height : contentHeight + font { + pixelSize : 76 + weight : Font.Light + } + color : Colors.textMain + text : vTreatmentRinseback.current.toFixed(0) + " " + qsTr(Variables.unitTextFluid) } - Text { id: _labelRate + TimeText { id: _timeout + objectName : "_timeout" anchors { - top: parent.bottom - topMargin: 20 + bottom : _deliveredVolumeText.top + bottomMargin : Variables.defaultMargin * 2 horizontalCenter: parent.horizontalCenter } - color: Colors.textMain - text: vTreatmentRinseback.rate.toFixed(0) + " " + qsTr(Variables.unitTextFlowRate) - font.pixelSize: 23 + textPixelSize : 30 + textWeight : Font.Normal + secondsVisible : false + seconds : vTreatmentRinseback.timeoutCountDown * 60 + visible : vTreatmentRinseback.timeoutTotal } + + NotificationBarSmall { id: _pausedNotification + objectName : "_pausedNotification" + anchors { + top : _deliveredVolumeText.bottom + bottom : undefined + topMargin : _timeout.anchors.bottomMargin + } + visible : vTDTreatmentStates.rbPaused + height : 25 + color : "transparent" + imageDiameter : 25 + imageTopMargin : 4 + imageSource : "qrc:/images/iPauseOrange" + text : "Rinseback Paused" + textColor : Colors.mainTreatmentOrange + textfontSize : 22 + textfontWeight : Font.Medium + } } - Row { id: _buttonRow - spacing: 175 + TreatmentSection { id: _treatmentFlowRate + objectName : "_treatmentFlowRate" anchors { - horizontalCenter: _root.horizontalCenter - bottom : _root.bottom - bottomMargin : Variables.notificationHeight + 55 // + the texts height + left : _targetVolumeProgress.right + leftMargin : Variables.defaultMargin + right : _treatmentPressures.left + rightMargin : Variables.defaultMargin + verticalCenter : parent.verticalCenter } - - ImageText { id: _imageDecelerate - visible : vTDTreatmentStates.rbRun || vTDTreatmentStates.rbPaused - enabled : vTDTreatmentStates.rbRun - anchors.bottom : _buttonRow.bottom - diameter : Variables.rinsebackIconDiameterDefault - source : "qrc:/images/iDecelerate" - text : qsTr("Decelerate") - fontSize : Fonts.fontPixelRinsebackAdjustmentButton - onClicked : deccelerateClicked() + height : _treatmentPressures.height + header { + title : qsTr("Rinseback Flow Rate") + showEdit : false } + contentItem : Item { id: _flowRateItem + objectName: "_flowRatItem" - ImageText { id: _imageResume - visible : vTDTreatmentStates.rbPaused - anchors.bottom : _buttonRow.bottom - diameter : Variables.rinsebackIconDiameterResumePause - source : "qrc:/images/iResume" - text : qsTr("Resume") - fontSize : Fonts.fontPixelRinsebackAdjustmentButton - onClicked : resumeClicked() - } + Item { id: _flowRateControlArea + objectName : "_flowRateControlArea" + anchors { + top : parent.top + bottom : _flowRateButtonRow.top + bottomMargin : Variables.defaultMargin * 2 + left : parent.left + leftMargin : Variables.defaultMargin + right : parent.right + rightMargin : anchors.leftMargin + } - ImageText { id: _imagePause - visible : vTDTreatmentStates.rbRun // not sure if it's possible || vTDTreatmentStates.rbAdditional - anchors.bottom : _buttonRow.bottom - diameter : Variables.rinsebackIconDiameterResumePause - source : "qrc:/images/iPauseLightBlue" - text : qsTr("Pause") - fontSize : Fonts.fontPixelRinsebackAdjustmentButton - onClicked : pauseClicked() + Item { id: _flowRateValueItem + objectName : "_flowRateValueItem" + anchors.centerIn : parent + width : childrenRect.width + height : childrenRect.height + + ArrowButton { id: _decrementFlowRateButton + objectName : "_decrementFlowRateButton" + anchors { + left : parent.left + verticalCenter : _flowRateValue.verticalCenter + } + leftArrow : true + enabled : vTreatmentRinseback.rate > vTreatmentRanges.rinsebackFlowRateMin + + onClicked : { _root.deccelerateClicked() } + } + + Text { id: _flowRateValue + objectName : "_flowRateValue" + anchors { + top : parent.top + left : _decrementFlowRateButton.right + leftMargin : Variables.defaultMargin + } + width : 200 + height : Variables.defaultButtonHeight + font { + pixelSize : Fonts.fontPixelVitals + weight : Font.Medium + } + color : Colors.textTextRectLabel + horizontalAlignment : Text.AlignHCenter + verticalAlignment : Text.AlignVCenter + text : vTreatmentRinseback.rate + } + + Text { id: _flowRateUnit + objectName : "_flowRateUnit" + anchors { + top : _flowRateValue.bottom + topMargin : Variables.defaultMargin + horizontalCenter : _flowRateValue.horizontalCenter + } + width : contentWidth + height : contentHeight + font { + pixelSize : Fonts.fontPixelContainerUnit + weight : Font.Thin + } + color : Colors.offWhite + horizontalAlignment : Text.AlignHCenter + verticalAlignment : Text.AlignVCenter + text : Variables.unitTextFlowRate + } + + ArrowButton { id: _incrementFlowRateButton + objectName : "_incrementFlowRateButton" + anchors { + left : _flowRateValue.right + leftMargin : _flowRateValue.anchors.leftMargin + verticalCenter : _flowRateValue.verticalCenter + } + rightArrow : true + enabled : vTreatmentRinseback.rate < vTreatmentRanges.rinsebackFlowRateMax + + onClicked : { _root.accelerateClicked() } + } + } + } + + Row { id: _flowRateButtonRow + objectName: "_flowRateButtonRow" + anchors { + bottom : parent.bottom + horizontalCenter: parent.horizontalCenter + margins : Variables.defaultMargin + } + spacing: Variables.defaultMargin * 2 + + TouchRect { id: _endButton + objectName : "_endButton" + width : Variables.defaultButtonWidth + height : Variables.defaultButtonHeight + text { + text : qsTr("End Rinseback") + font.weight : Font.Medium + } + isDefault : true + enabled : true + + onClicked : { _root.endClicked() } + } + + TouchRect { id: _pauseResumeButton + objectName: "_pauseResumeButton" + width : Variables.defaultButtonWidth + height : Variables.defaultButtonHeight + text { + text : vTDTreatmentStates.rbPaused ? qsTr("Resume Rinseback") : qsTr("Pause Rinseback") + font.weight : Font.Medium + } + isDefault : true + enabled : true + + onClicked : { vTDTreatmentStates.rbPaused + ? _root.resumeClicked() + : _root.pauseClicked() + } + } + } } + } - ImageText { id: _imageAccelerate - visible : vTDTreatmentStates.rbRun || vTDTreatmentStates.rbPaused - enabled : vTDTreatmentStates.rbRun - anchors.bottom : _buttonRow.bottom - diameter : Variables.rinsebackIconDiameterDefault - source : "qrc:/images/iAccelerate" - text : qsTr("Accelerate") - fontSize : Fonts.fontPixelRinsebackAdjustmentButton - onClicked : accelerateClicked() + TreatmentPressures { id: _treatmentPressures + objectName : "_treatmentPressures" + anchors { + right : parent.right + rightMargin : Variables.defaultMargin * 2 + verticalCenter : parent.verticalCenter } + width : 750 + height : 420 + header.showEdit : false } } Index: sources/view/hd/data/VTreatmentRanges.cpp =================================================================== diff -u -rde099919f262c3429cb0592ef71deb6a16e92892 -r6c0c4613d84a4fab29fd3bb75da8d084740bc67e --- sources/view/hd/data/VTreatmentRanges.cpp (.../VTreatmentRanges.cpp) (revision de099919f262c3429cb0592ef71deb6a16e92892) +++ sources/view/hd/data/VTreatmentRanges.cpp (.../VTreatmentRanges.cpp) (revision 6c0c4613d84a4fab29fd3bb75da8d084740bc67e) @@ -223,10 +223,10 @@ FROMVARIANT_WITHRETURN ( rinsebackFlowRateMax , "Rinseback Flow Rate Ranges" , "Rinseback_Flow_Rate_Max" , UInt , isConfigsOk ); FROMVARIANT_WITHRETURN ( rinsebackFlowRateRes , "Rinseback Flow Rate Ranges" , "Rinseback_Flow_Rate_Res" , UInt , isConfigsOk ); - FROMVARIANT_WITHRETURN ( rinsebackFlowRateDef , "Rinseback Volume Ranges" , "Rinseback_Volume_Def" , UInt , isConfigsOk ); - FROMVARIANT_WITHRETURN ( rinsebackFlowRateMin , "Rinseback Volume Ranges" , "Rinseback_Volume_Min" , UInt , isConfigsOk ); - FROMVARIANT_WITHRETURN ( rinsebackFlowRateMax , "Rinseback Volume Ranges" , "Rinseback_Volume_Max" , UInt , isConfigsOk ); - FROMVARIANT_WITHRETURN ( rinsebackFlowRateRes , "Rinseback Volume Ranges" , "Rinseback_Volume_Res" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( rinsebackVolumeDef , "Rinseback Volume Ranges" , "Rinseback_Volume_Def" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( rinsebackVolumeMin , "Rinseback Volume Ranges" , "Rinseback_Volume_Min" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( rinsebackVolumeMax , "Rinseback Volume Ranges" , "Rinseback_Volume_Max" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( rinsebackVolumeRes , "Rinseback Volume Ranges" , "Rinseback_Volume_Res" , UInt , isConfigsOk ); // ultrafiltrationVolume: Def, Min, Max intentionally omitted (see config/configurations/Parameters/DataList.conf) FROMVARIANT_WITHRETURN ( ultrafiltrationVolumeRes , "Ultrafiltration Volume Ranges" , "Ultrafiltration_Volume_Res" , Float , isConfigsOk ); Index: sources/view/hd/data/VTreatmentRanges.h =================================================================== diff -u -rde099919f262c3429cb0592ef71deb6a16e92892 -r6c0c4613d84a4fab29fd3bb75da8d084740bc67e --- sources/view/hd/data/VTreatmentRanges.h (.../VTreatmentRanges.h) (revision de099919f262c3429cb0592ef71deb6a16e92892) +++ sources/view/hd/data/VTreatmentRanges.h (.../VTreatmentRanges.h) (revision 6c0c4613d84a4fab29fd3bb75da8d084740bc67e) @@ -72,6 +72,7 @@ RANGESET( qint32 , venousPressureLimitWindow , 0) RANGESET( qint32 , venousPressureLimitAsymtrc , 0) RANGESET( quint32 , rinsebackFlowRate , 0) + RANGESET( quint32 , rinsebackVolume , 0) // monitoring ranges RANGESET( qint32 , trancembrncPressureMonitor , 0)