Index: SDDs/MainTreatmentScreen.puml =================================================================== diff -u -rbc317eeeafae0f186fdfcc31e3960343d5c3053a -rcb9c48c7c307690dcafcfd16ef412fe660291692 --- SDDs/MainTreatmentScreen.puml (.../MainTreatmentScreen.puml) (revision bc317eeeafae0f186fdfcc31e3960343d5c3053a) +++ SDDs/MainTreatmentScreen.puml (.../MainTreatmentScreen.puml) (revision cb9c48c7c307690dcafcfd16ef412fe660291692) @@ -29,9 +29,8 @@ == Tx Parameter set points == TD -> SW: MSG: [x4F: #3] \nTD treatment Set Points Data\n(U32) bloodFlow\n(U32) dialFlow\n(F32) dialTemp SW -> UI: CMD: Update TX Set Points Data:\n(U32) bloodFlow\n(U32) dialFlow\n(F32) dialTemp - == Saline == - TD -> SW: MSG: [x3D: #4] \nTD Saline Bolus Status Data\n(U32) ntgtVolMl\n(F32) cumVolMl\n(F32) bolVolMl\n(U32) sbState - SW -> UI: CMD: Update Saline Bolus Data\n(U32) ntgtVolMl\n(F32) cumVolMl\n(F32) bolVolMl\n(U32) sbState + !include common_puml/Saline_Bolus_Data.puml + !include common_puml/Vitals_Data.puml == Ultrafiltration == TD -> SW: MSG: [x3E: #4] \nTD Ultrafiltration Status Data\n(F32) setVolL\n(F32) tgtRateLHr\n(F32) volDelL\n(U32) ufState SW -> UI: CMD: Update UF Status\n(F32) setVolL\n(F32) tgtRateLHr\n(F32) volDelL\n(U32) ufState Index: leahi.pro =================================================================== diff -u -rc7767b9f771f798feb3167c47d27e36b247bb858 -rcb9c48c7c307690dcafcfd16ef412fe660291692 --- leahi.pro (.../leahi.pro) (revision c7767b9f771f798feb3167c47d27e36b247bb858) +++ leahi.pro (.../leahi.pro) (revision cb9c48c7c307690dcafcfd16ef412fe660291692) @@ -68,6 +68,10 @@ sources/model/dd/data \ sources/model/dd/adjustment \ sources/model/dd/adjustment/settings \ + sources/model/fp \ + sources/model/fp/data \ + sources/model/fp/adjustment \ + sources/model/fp/adjustment/settings \ sources/view \ sources/view/td \ sources/view/td/data \ @@ -77,6 +81,8 @@ sources/view/dd/data \ sources/view/confirm \ sources/view/settings \ + sources/view/fp \ + sources/view/fp/data \ \ sources/gui \ sources/utility \ @@ -130,6 +136,7 @@ common/AlarmDefs.h \ common/Compatible.h \ common/DDDefs.h \ + common/FPDefs.h \ common/TDDefs.h \ common/MsgDefs.h \ \ # Main @@ -155,9 +162,19 @@ sources/model/dd/data/MDDPressuresData.h \ sources/model/dd/data/MDDTemperaturesData.h \ sources/model/dd/data/MDDValvesStatesData.h \ + sources/model/fp/adjustment/settings/MAdjustFPVersionsResponse.h \ + sources/model/fp/data/MFPBoostPumpData.h \ + sources/model/fp/data/MFPConductivityData.h \ + sources/model/fp/data/MFPFlowData.h \ + sources/model/fp/data/MFPLevelData.h \ + sources/model/fp/data/MFPPressuresData.h \ + sources/model/fp/data/MFPROPumpData.h \ + sources/model/fp/data/MFPTemperatureData.h \ + sources/model/fp/data/MFPValvesStatesData.h \ sources/model/td/adjustment/settings/MAdjustTDSerialNumberResponse.h \ sources/model/td/adjustment/settings/MAdjustTDVersionsRequest.h \ sources/model/td/adjustment/settings/MAdjustTDVersionsResponse.h \ + sources/model/td/adjustment/treatment/MTreatmentAdjustVitalsResponse.h \ sources/model/td/data/MTDAirBubbleData.h \ sources/model/td/data/MTDAirPumpData.h \ sources/model/td/data/MTDAirTrapData.h \ @@ -174,6 +191,7 @@ sources/model/td/data/treatment/MTreatmentStatesData.h \ sources/model/td/data/treatment/MTreatmentTimeData.h \ sources/model/td/data/treatment/MTreatmentUltrafiltrationData.h \ + sources/model/td/data/treatment/MTreatmentVitalsData.h \ sources/storage/Settings.h \ sources/storage/TreatmentLog.h \ sources/bluetooth/BluetoothInterface.h \ @@ -182,6 +200,7 @@ sources/model/MModel.h \ sources/model/MAbstract.h \ sources/model/MAbstractDynamic.h \ + sources/model/MListModel.h \ sources/device/DeviceModels.h \ \ # ---------- Models - TD - Data //// ----- @LEAHIZED sources/model/td/data/MTDOpModeData.h \ @@ -200,13 +219,26 @@ sources/view/dd/data/VDDPressuresData.h \ sources/view/dd/data/VDDTemperaturesData.h \ sources/view/dd/data/VDDValvesStatesData.h \ + sources/view/fp/data/VFPBoostPumpData.h \ + sources/view/fp/data/VFPConductivityData.h \ + sources/view/fp/data/VFPFlowData.h \ + sources/view/fp/data/VFPLevelData.h \ + sources/view/fp/data/VFPPressuresData.h \ + sources/view/fp/data/VFPROPumpData.h \ + sources/view/fp/data/VFPTemperatureData.h \ + sources/view/fp/data/VFPValvesStatesData.h \ sources/view/hd/data/VTreatmentRanges.h \ sources/view/td/data/VTDAirBubbleData.h \ sources/view/td/data/VTDAirPumpData.h \ sources/view/td/data/VTDAirTrapData.h \ sources/view/td/data/VTDBatteryData.h \ sources/view/td/data/VTDEjectorData.h \ sources/view/td/data/VTDOpModeData.h \ + \ # ---------- Views - TD - Adjustment - In-Treatment + sources/view/td/adjustment/treatment/VTreatmentAdjustmentSaline.h \ + sources/view/td/adjustment/treatment/VTreatmentAdjustmentVitals.h \ + \ # ---------- Models - TD - Adjustment - In-Treatment + sources/model/td/adjustment/treatment/MTreatmentAdjustSalineResponse.h \ \ # ---------- Models - confirm sources/model/confirm/MDuetConfirmHDi.h \ \ # ---------- Models - POST @@ -255,7 +287,6 @@ sources/model/hd/adjustment/treatment/MTreatmentAdjustRequests.h \ sources/model/hd/adjustment/treatment/MTreatmentAdjustDurationResponse.h \ sources/model/hd/adjustment/treatment/MTreatmentAdjustBloodDialysateResponse.h \ - sources/model/hd/adjustment/treatment/MTreatmentAdjustSalineResponse.h \ sources/model/hd/adjustment/treatment/MTreatmentAdjustHeparinResponse.h \ sources/model/hd/adjustment/treatment/MTreatmentAdjustPressuresLimitsResponse.h \ \ # ---------- Models - HD - Adjustment - End-Treatment @@ -374,7 +405,6 @@ \ # ---------- Views - HD - Adjustment - In-Treatment sources/view/hd/adjustment/treatment/VTreatmentAdjustmentDuration.h \ sources/view/hd/adjustment/treatment/VTreatmentAdjustmentFlows.h \ - sources/view/hd/adjustment/treatment/VTreatmentAdjustmentSaline.h \ sources/view/hd/adjustment/treatment/VTreatmentAdjustmentHeparin.h \ sources/view/hd/adjustment/treatment/VTreatmentAdjustmentPressuresLimits.h \ \ # ---------- Views - HD - Adjustment - End-Treatment @@ -462,9 +492,19 @@ sources/model/dd/data/MDDPressuresData.cpp \ sources/model/dd/data/MDDTemperaturesData.cpp \ sources/model/dd/data/MDDValvesStatesData.cpp \ + sources/model/fp/adjustment/settings/MAdjustFPVersionsResponse.cpp \ + sources/model/fp/data/MFPBoostPumpData.cpp \ + sources/model/fp/data/MFPConductivityData.cpp \ + sources/model/fp/data/MFPFlowData.cpp \ + sources/model/fp/data/MFPLevelData.cpp \ + sources/model/fp/data/MFPPressuresData.cpp \ + sources/model/fp/data/MFPROPumpData.cpp \ + sources/model/fp/data/MFPTemperatureData.cpp \ + sources/model/fp/data/MFPValvesStatesData.cpp \ sources/model/td/adjustment/settings/MAdjustTDSerialNumberResponse.cpp \ sources/model/td/adjustment/settings/MAdjustTDVersionsRequest.cpp \ sources/model/td/adjustment/settings/MAdjustTDVersionsResponse.cpp \ + sources/model/td/adjustment/treatment/MTreatmentAdjustVitalsResponse.cpp \ sources/model/td/data/MTDAirBubbleData.cpp \ sources/model/td/data/MTDAirPumpData.cpp \ sources/model/td/data/MTDAirTrapData.cpp \ @@ -481,6 +521,7 @@ sources/model/td/data/treatment/MTreatmentStatesData.cpp \ sources/model/td/data/treatment/MTreatmentTimeData.cpp \ sources/model/td/data/treatment/MTreatmentUltrafiltrationData.cpp \ + sources/model/td/data/treatment/MTreatmentVitalsData.cpp \ sources/model/ui/data/MUIBloodPressureData.cpp \ sources/storage/Settings.cpp \ sources/storage/TreatmentLog.cpp \ @@ -494,12 +535,21 @@ sources/view/dd/data/VDDPressuresData.cpp \ sources/view/dd/data/VDDTemperaturesData.cpp \ sources/view/dd/data/VDDValvesStatesData.cpp \ + sources/view/fp/data/VFPBoostPumpData.cpp \ + sources/view/fp/data/VFPConductivityData.cpp \ + sources/view/fp/data/VFPFlowData.cpp \ + sources/view/fp/data/VFPLevelData.cpp \ + sources/view/fp/data/VFPPressuresData.cpp \ + sources/view/fp/data/VFPROPumpData.cpp \ + sources/view/fp/data/VFPTemperatureData.cpp \ + sources/view/fp/data/VFPValvesStatesData.cpp \ sources/view/hd/data/post/VHDPOSTData.cpp \ sources/bluetooth/BluetoothInterface.cpp \ sources/cloudsync/CloudSyncController.cpp \ \ # ---------- Models ---------- sources/model/MAbstract.cpp \ sources/model/MAbstractDynamic.cpp \ + sources/model/MListModel.cpp \ sources/device/DeviceModels.cpp \ \ # ---------- Models - TD - Data - States sources/model/td/data/MTDOpModeData.cpp \ @@ -532,6 +582,8 @@ \ # ---------- Models - Data - States sources/model/hd/data/pretreatment/MPreTreatmentStatesData.cpp \ sources/model/hd/data/posttreatment/MPostTreatmentStatesData.cpp \ + \ # ---------- Models - TD - Adjustment - In-Treatment + sources/model/td/adjustment/treatment/MTreatmentAdjustSalineResponse.cpp \ \ # ---------- Models - HD - Adjustment sources/model/hd/adjustment/MAdjustPowerOff.cpp \ \ # ---------- Models - HD - Adjustment - Settings @@ -550,7 +602,6 @@ \ # ---------- Models - HD - Adjustment - In-Treatment sources/model/hd/adjustment/treatment/MTreatmentAdjustDurationResponse.cpp \ sources/model/hd/adjustment/treatment/MTreatmentAdjustBloodDialysateResponse.cpp \ - sources/model/hd/adjustment/treatment/MTreatmentAdjustSalineResponse.cpp \ sources/model/hd/adjustment/treatment/MTreatmentAdjustHeparinResponse.cpp \ sources/model/hd/adjustment/treatment/MTreatmentAdjustPressuresLimitsResponse.cpp \ \ # ---------- Models - HD - Adjustment - End-Treatment @@ -629,6 +680,8 @@ sources/view/td/data/VTDEjectorData.cpp \ sources/view/td/data/VTDOpModeData.cpp \ \ # ---------- Views - TD - Adjustment - In-Treatment + sources/view/td/adjustment/treatment/VTreatmentAdjustmentSaline.cpp \ + sources/view/td/adjustment/treatment/VTreatmentAdjustmentVitals.cpp \ sources/view/td/adjustment/treatment/VTreatmentAdjustmentUltrafiltrationState.cpp \ sources/view/td/adjustment/treatment/VTreatmentAdjustmentUltrafiltrationEdit.cpp \ sources/view/td/adjustment/treatment/VTreatmentAdjustmentUltrafiltrationConfirm.cpp \ @@ -670,7 +723,6 @@ \ # ---------- Views - HD - Adjustment - In-Treatment sources/view/hd/adjustment/treatment/VTreatmentAdjustmentDuration.cpp \ sources/view/hd/adjustment/treatment/VTreatmentAdjustmentFlows.cpp \ - sources/view/hd/adjustment/treatment/VTreatmentAdjustmentSaline.cpp \ sources/view/hd/adjustment/treatment/VTreatmentAdjustmentHeparin.cpp \ sources/view/hd/adjustment/treatment/VTreatmentAdjustmentPressuresLimits.cpp \ \ # ---------- Views - HD - Adjustment - End-Treatment Index: leahi.qrc =================================================================== diff -u -reaa02e45b2d5f0910309bea7165963a539f9db97 -rcb9c48c7c307690dcafcfd16ef412fe660291692 --- leahi.qrc (.../leahi.qrc) (revision eaa02e45b2d5f0910309bea7165963a539f9db97) +++ leahi.qrc (.../leahi.qrc) (revision cb9c48c7c307690dcafcfd16ef412fe660291692) @@ -34,21 +34,29 @@ sources/gui/qml/dialogs/NotificationDialog.qml sources/gui/qml/dialogs/AlarmListDialog.qml sources/gui/qml/dialogs/LockDialog.qml + sources/gui/qml/dialogs/AcidConcentrateAdjustment.qml sources/gui/qml/dialogs/diagnostics/DiagnosticsDialog.qml sources/gui/qml/dialogs/diagnostics/DiagnosticsBase.qml sources/gui/qml/dialogs/diagnostics/DiagnosticsSwipe.qml sources/gui/qml/dialogs/diagnostics/DiagnosticsTD.qml sources/gui/qml/dialogs/diagnostics/DiagnosticsDD.qml + sources/gui/qml/dialogs/diagnostics/DiagnosticsFP.qml + + sources/gui/qml/dialogs/headerbar/HeaderbarWiFi.qml + sources/gui/qml/dialogs/headerbar/HeaderbarStorage.qml + sources/gui/qml/dialogs/headerbar/HeaderbarSettings.qml + sources/gui/qml/dialogs/headerbar/HeaderbarPrescription.qml + sources/gui/qml/dialogs/headerbar/HeaderbarInformation.qml + resources/images/Logo d.png resources/images/Logo DialityT.png resources/images/diality-splash.png resources/images/ArrowRight.png resources/images/ArrowLeft.png - resources/images/logo d Dark Transparent.png resources/images/Close.png resources/images/bell-on.png resources/images/bell-off.png @@ -86,10 +94,16 @@ resources/images/PauseOrange.png resources/images/arrowsExpanding.png resources/images/HomeBackground.png - resources/images/Bluetooth.png resources/images/CloudSync.png resources/images/Information.png resources/images/Storage.png + resources/images/help.png + resources/images/Menu_Dot.png + resources/images/ArrowLeftDisabled.png + resources/images/ArrowRightDisabled.png + resources/images/backspace.png + resources/images/Vitals.png + resources/images/Vitals_Red.png sources/gui/qml/components/MainMenu.qml @@ -119,10 +133,6 @@ sources/gui/qml/components/TimeText.qml sources/gui/qml/components/ProgressCircle.qml sources/gui/qml/components/Slider.qml - sources/gui/qml/components/SliderCreateTreatment.qml - sources/gui/qml/components/ConfirmTreatmentTable.qml - sources/gui/qml/components/ConfirmTreatmentSubTable.qml - sources/gui/qml/components/GridSelection.qml sources/gui/qml/components/ProgressBarEx.qml sources/gui/qml/components/CloseButton.qml sources/gui/qml/components/ConfirmButton.qml @@ -132,29 +142,28 @@ sources/gui/qml/components/UltrafiltrationButton.qml sources/gui/qml/components/ImageWave.qml sources/gui/qml/components/ImageClock.qml - sources/gui/qml/components/ImageLogoDDarkTransparent.qml - sources/gui/qml/components/ConfirmTreatmentTableEntry.qml sources/gui/qml/components/DebugDataColumn.qml sources/gui/qml/components/RangeSlider.qml sources/gui/qml/components/MuteButton.qml - sources/gui/qml/components/UpDownButton.qml sources/gui/qml/components/ImageText.qml sources/gui/qml/components/WaitDone.qml sources/gui/qml/components/TimeCircle.qml sources/gui/qml/components/Footer.qml sources/gui/qml/components/TextEntry.qml sources/gui/qml/components/ScrollBar.qml - sources/gui/qml/compounds/Fader.qml sources/gui/qml/components/FooterStatic.qml sources/gui/qml/components/TimeEntry.qml sources/gui/qml/components/Label.qml - sources/gui/qml/components/EntryDialog.qml sources/gui/qml/components/SliderArrows.qml sources/gui/qml/components/QRCode.qml sources/gui/qml/components/ContentArea.qml sources/gui/qml/components/LabelValue.qml sources/gui/qml/components/ArrowButton.qml sources/gui/qml/components/HeaderBar.qml + sources/gui/qml/components/HeaderBarPopup.qml + sources/gui/qml/components/AlarmButtonRow.qml + sources/gui/qml/components/BaseComboBox.qml + sources/gui/qml/components/VitalsButton.qml sources/gui/qml/compounds/PressureRangeSlider.qml @@ -163,6 +172,9 @@ sources/gui/qml/compounds/CheckListView.qml sources/gui/qml/compounds/TouchGrid.qml sources/gui/qml/compounds/BPHREntry.qml + sources/gui/qml/compounds/NumPad.qml + sources/gui/qml/compounds/LabelUnitContainer.qml + sources/gui/qml/compounds/ValueAdjuster.qml sources/gui/qml/compounds/StoppedSlider.qml sources/gui/qml/compounds/TreatmentAdjustmentUltrafiltrationMetrics.qml @@ -227,9 +239,9 @@ sources/gui/qml/pages/pretreatment/PreTreatmentPrimeStack.qml - sources/gui/qml/pages/pretreatment/create/PreTreatmentCreateStack.qml sources/gui/qml/pages/pretreatment/create/PreTreatmentCreate.qml - sources/gui/qml/pages/pretreatment/create/PreTreatmentConfirm.qml + sources/gui/qml/pages/pretreatment/create/PreTreatmentCreateContent.qml + sources/gui/qml/pages/pretreatment/create/PreTreatmentCreateStack.qml sources/gui/qml/pages/pretreatment/connection/PreTreatmentUltrafiltration.qml @@ -263,6 +275,8 @@ sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentUltrafiltrationEdit.qml sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentUltrafiltrationConfirm.qml sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentPressuresLimits.qml + sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentVitals.qml + sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentVitalsInterval.qml sources/gui/qml/pages/endtreatment/EndTreatmentRinsebackStack.qml Index: sources/canbus/MessageDispatcher.cpp =================================================================== diff -u -rc1d0546e2d1a51ff919b2172ce647003359f0853 -rcb9c48c7c307690dcafcfd16ef412fe660291692 --- sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision c1d0546e2d1a51ff919b2172ce647003359f0853) +++ sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision cb9c48c7c307690dcafcfd16ef412fe660291692) @@ -286,7 +286,6 @@ { QVariantList mData; mData += vData.volume; - mData += vData.option; onActionTransmit(GuiActionType::ID_AdjustUltrafiltrationConfirmReq, mData); } Index: sources/canbus/MessageGlobals.h =================================================================== diff -u -r1ea05b21849b7ee431804166f8e206f623c39509 -rcb9c48c7c307690dcafcfd16ef412fe660291692 --- sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision 1ea05b21849b7ee431804166f8e206f623c39509) +++ sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision cb9c48c7c307690dcafcfd16ef412fe660291692) @@ -77,6 +77,7 @@ {Gui::GuiActionType::ID_DialysateOutletFlow , 13 * 4 }, //13 parameters each 4bytes {Gui::GuiActionType::ID_PressureOcclusion , 12 * 4 }, //12 parameters each 4bytes {Gui::GuiActionType::ID_Saline , 4 * 4 }, // 4 parameters each 4bytes + {Gui::GuiActionType::ID_Vitals , 3 * 4 }, // 3 parameters each 4bytes {Gui::GuiActionType::ID_Ultrafiltration , 4 * 4 }, // 4 parameters each 4bytes {Gui::GuiActionType::ID_Heparin , 2 * 4 }, // 2 parameters each 4bytes {Gui::GuiActionType::ID_Rinseback , 6 * 4 }, // 6 parameters each 4bytes @@ -111,6 +112,15 @@ {Gui::GuiActionType::ID_DDLevelData , 3 * 4 }, // 3 parameters each 4bytes {Gui::GuiActionType::ID_DDGenDialysateData , 9 * 4 }, // 9 parameters each 4bytes {Gui::GuiActionType::ID_DDBloodLeakData , 1 * 4 }, // 1 parameters each 4bytes + //FP Data Messages + {Gui::GuiActionType::ID_FPValvesStatesData , 2 * 1 + 10 }, // 1 parameter 16bits & 10 parameters each 1 byte + {Gui::GuiActionType::ID_FPROPumpData , 9 * 4 }, // 9 parameters each 4bytes + {Gui::GuiActionType::ID_FPPressuresData , 9 * 4 }, // 9 parameters each 4bytes + {Gui::GuiActionType::ID_FPLevelData , 1 * 4 }, // 1 parameters each 4bytes + {Gui::GuiActionType::ID_FPFlowSensorData , 4 * 4 }, // 4 parameters each 4bytes + {Gui::GuiActionType::ID_FPConductivityData , 2 * 4 }, // 2 parameters each 4bytes + {Gui::GuiActionType::ID_FPTemperaturesData , 13 * 4 }, // 13 parameters each 4bytes + {Gui::GuiActionType::ID_FPROBoosterPumpData , 9 * 4 }, // 9 parameters each 4bytes // HD Data Messages {Gui::GuiActionType::ID_HDAccelerometerData , 9 * 4 }, // 9 parameters each 4bytes {Gui::GuiActionType::ID_HDSyringePumpData , 9 * 4 }, // 9 parameters each 4bytes @@ -208,6 +218,10 @@ {Gui::GuiActionType::ID_AdjustSalineRsp , 3 * 4 }, // 3 parameters each 4bytes // ---- + {Gui::GuiActionType::ID_AdjustVitalsReq , 0 * 4 }, // 0 parameter each 4bytes + {Gui::GuiActionType::ID_AdjustVitalsRsp , 2 * 4 }, // 2 parameters each 4bytes + + // ---- {Gui::GuiActionType::ID_AdjustHeparinReq , 1 * 4 }, // 1 parameter each 4bytes {Gui::GuiActionType::ID_AdjustHeparinRsp , 2 * 4 }, // 3 parameters each 4bytes @@ -244,6 +258,7 @@ {Gui::GuiActionType::ID_AdjustVersionsUIReq ,1+1+1+2+4 }, // variable length parameters {Gui::GuiActionType::ID_AdjustVersionsTDRsp ,3*1+2+4*1+4 }, // variable length parameters {Gui::GuiActionType::ID_AdjustVersionsDDRsp ,3*1+2+4*1+4 }, // variable length parameters + {Gui::GuiActionType::ID_AdjustVersionsFPRsp ,3*1+2+4*1+4 }, // variable length parameters {Gui::GuiActionType::ID_AdjustSerialTDRsp , 1 * 1 }, // minimum 1 parameter 1 byte {Gui::GuiActionType::ID_AdjustSerialDDRsp , 1 * 1 }, // minimum 1 parameter 1 byte // ---- @@ -354,6 +369,7 @@ // UI listens occasionally eChlid_DD_UI = eChlid_DD_Sync , ///< DD => UI + eChlid_FP_UI = eChlid_FP_Sync , ///< FP => UI eChlid_UI_DD = eChlid_UI_Sync , ///< UI => DD [Out] // Dialing channel has been requested by V&V team for CANBus testing Index: sources/gui/GuiGlobals.h =================================================================== diff -u -r857ba6276d20d39763fb7d291891270e87035481 -rcb9c48c7c307690dcafcfd16ef412fe660291692 --- sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision 857ba6276d20d39763fb7d291891270e87035481) +++ sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision cb9c48c7c307690dcafcfd16ef412fe660291692) @@ -100,6 +100,7 @@ ID_AdjustVersionsTDReq = 0x1500, // 21 // ID_TDVersionsRxq - TD Version request received //// ----- @LEAHIZED ID_AdjustVersionsTDRsp = 0x0E00, // 14 //// ----- @LEAHIZED ID_AdjustVersionsDDRsp = 0x0F00, // 15 //// ----- @LEAHIZED + ID_AdjustVersionsFPRsp = 0x5A00, // 90 //// ----- @LEAHIZED ID_AdjustSerialTDRsp = 0x5100, // 81 //// ----- @LEAHIZED ID_AdjustSerialDDRsp = 0x5200, // 82 //// ----- @LEAHIZED @@ -140,6 +141,7 @@ ID_Recirculate = 0x5A00, // 90 ID_BloodPrime = 0x5900, // 89 ID_TreatmentStop = 0x4900, // 73 + ID_Vitals = 0x6500, // 101 // Alarm Messages ID_AlarmStatus = 0x0100, // 01 //// ----- @LEAHIZED @@ -164,7 +166,7 @@ ID_DGFilterFlushData = 0x600F, // ?? //// ----- @CRAPIZED: had to change to avoid duplication ID_AdjustWaterSampleReq = 0x5D00, // 93 ID_AdjustWaterSampleRsp = 0x5E00, // 94 - ID_AdjustWaterSampleResultReq = 0x5F00, // 95 // there is no specific response message for this request and changing of the state in Pre_Treatment_States is used as the response + ID_AdjustWaterSampleResultReq = 0x5F0F, // 95 //// ----- @CRAPIZED: had to change to avoid duplication // Pre-Treatment Consumables Installation Confirm ID_AdjustConsumablesConfirmReq = 0x6800, // 104 // there is no specific response message for this request and changing of the state in Pre_Treatment_States is used as the response // Pre-Treatment SelfTest NoCartridge Progress Data @@ -173,14 +175,14 @@ ID_AdjustDisposablesConfirmReq = 0x6200, // 98 // there is no specific response message for this request and changing of the state in Pre_Treatment_States is used as the response ID_AdjustDisposablesConfirmRsp = 0xAD00, // 173 // there is no specific response message for this request and changing of the state in Pre_Treatment_States is used as the response // Pre-Treatment SelfTest Dry Progress Data - ID_SelfTestDryData = 0x6300, // 99 + ID_SelfTestDryData = 0x630F, // 99 //// ----- @CRAPIZED: had to change to avoid duplication // Pre-Treatment Disposable Priming ID_AdjustDisposablesPrimeReq = 0x3C0F, // 60 //// ----- @CRAPIZED: had to change to avoid duplication ID_AdjustDisposablesPrimeRsp = 0x3D0F, // 61 //// ----- @CRAPIZED: had to change to avoid duplication ID_DisposablesPrimeData = 0x43FF, // ?? //// ----- @CRAPIZED - FFed // Pre-Treatment Patient Connection Begin - ID_AdjustPatientConnectionBeginReq = 0x6400, // 100 - ID_AdjustPatientConnectionBeginRsp = 0x6500, // 101 + ID_AdjustPatientConnectionBeginReq = 0x640F, // 100 //// ----- @CRAPIZED: had to change to avoid duplication + ID_AdjustPatientConnectionBeginRsp = 0x650F, // 101 //// ----- @CRAPIZED: had to change to avoid duplication // Pre-Treatment Ultrafiltration initial volume ID_AdjustUltrafiltrationInitReq = 0x4F0F, // 79 //// ----- @CRAPIZED: had to change to avoid duplication ID_AdjustUltrafiltrationInitRsp = 0x5000, // 80 @@ -209,6 +211,16 @@ ID_DDGenDialysateData = 0x2F00, // 47 //// ----- @LEAHIZED ID_DDBloodLeakData = 0x6000, // 96 //// ----- TODO: Payload subject to change given FW implementation + // FP Data Messages + ID_FPValvesStatesData = 0x3100, // 49 //// ----- @LEAHIZED + ID_FPROPumpData = 0x3200, // 50 //// ----- @LEAHIZED + ID_FPPressuresData = 0x3400, // 52 //// ----- @LEAHIZED + ID_FPLevelData = 0x3500, // 53 //// ----- @LEAHIZED + ID_FPFlowSensorData = 0x3600, // 54 //// ----- @LEAHIZED + ID_FPConductivityData = 0x3700, // 55 //// ----- @LEAHIZED + ID_FPTemperaturesData = 0x3900, // 57 //// ----- @LEAHIZED + ID_FPROBoosterPumpData = 0x5000, // 80 //// ----- @LEAHIZED + // HD Data Messages ID_HDAccelerometerData = 0x3300, // 51 ID_HDSyringePumpData = 0x6900, // 105 @@ -234,9 +246,12 @@ ID_AdjustPressuresLimitsReq = 0x470F, // 70 //// ----- @CRAPIZED: had to change to avoid duplication ID_AdjustPressuresLimitsRsp = 0x480F, // 71 //// ----- @CRAPIZED: had to change to avoid duplication - ID_AdjustSalineReq = 0x1200, // 18 - ID_AdjustSalineRsp = 0x1400, // 20 + ID_AdjustSalineReq = 0x5F00, // 95 + ID_AdjustSalineRsp = 0x6000, // 96 + ID_AdjustVitalsReq = 0x6300, // 99 + ID_AdjustVitalsRsp = 0x6400, // 100 + ID_AdjustHeparinReq = 0x4B00, // 75 ID_AdjustHeparinRsp = 0x4C00, // 76 @@ -389,6 +404,9 @@ Q_ENUM(DD_Disinfect_States) Q_ENUM(DD_Heat_UI_States) Q_ENUM(DD_Valves) + + #include "FPDefs.h" + Q_ENUM(FP_Valves) }; // to be able to use the enum as signal/slot parameter @@ -464,6 +482,9 @@ // DD Valves typedef GuiActions::DD_Valves GuiDDValves; + // FP Valves + typedef GuiActions::FP_Valves GuiFPValves; + typedef QMap GuiStringIndexMap; typedef QPair GuiStringIndexMapItem; typedef QMapIterator GuiStringIndexMapIterator; Index: sources/gui/qml/components/Slider.qml =================================================================== diff -u -rc65859e54930664100dfdff13afa019e05ae23b6 -rcb9c48c7c307690dcafcfd16ef412fe660291692 --- sources/gui/qml/components/Slider.qml (.../Slider.qml) (revision c65859e54930664100dfdff13afa019e05ae23b6) +++ sources/gui/qml/components/Slider.qml (.../Slider.qml) (revision cb9c48c7c307690dcafcfd16ef412fe660291692) @@ -25,6 +25,7 @@ */ RangeRect { id: _root property real value : _progressRect.value + property real minStop : _root.minimum property real defaultValue : _root.minimum property real step : 1 @@ -54,7 +55,13 @@ property bool isRoundedEnds : true property bool hasBorder : true property bool showMinMaxText : true - property color borderColor : Colors.borderDisableButton + property color borderColor : Colors.borderDisableButton + property color highlightActiveColor : Colors.sliderHighlightColor + property color highlightInactiveColor : Colors.createTreatmentInactive + property color progressBorderActiveColor : Colors.sliderProgressBorderActive + property color progressBorderInactiveColor : Colors.borderDisableButton + property color handlerActiveColor : Colors.createTreatmentActive + property color handlerInactiveColor : Colors.createTreatmentInactive signal activeChanged() signal handleSelected() @@ -86,14 +93,16 @@ let newValue = Number.NaN if(vIsIncrement) { - newValue = _progressRect.value + amountChanged + newValue = calculateRoundedValue(_progressRect.value + amountChanged) } else { - newValue = _progressRect.value - amountChanged + newValue = calculateRoundedValue(_progressRect.value - amountChanged) } // Capping values based on min/max threshold - if ( newValue < minimum ) newValue = minimum - if ( newValue > maximum ) newValue = maximum + let min = calculateMinimum() + let max = calculateMaximum() + if ( newValue < min ) newValue = min + if ( newValue > max ) newValue = max // Update the slider's visual value _progressRect.previousSliderValue = newValue // for comparison purposes @@ -105,11 +114,11 @@ function setActiveVisuals(active) { if (active) { - color = Colors.sliderHighlightColor - handlerColor = Colors.createTreatmentActive + color = _root.highlightActiveColor + handlerColor = _root.handlerActiveColor } else { - color = Colors.createTreatmentInactive - handlerColor = Colors.createTreatmentInactive + color = _root.highlightInactiveColor + handlerColor = _root.handlerInactiveColor } } @@ -179,6 +188,12 @@ return (Math.round(vValue / step) * step).toFixed(decimal) } + // round the value based on the given precision (not step) + function calculatePrecisionRoundedValue(value) { + let multiplier = Math.pow(10, decimal) + return Math.round(value * multiplier) / multiplier + } + function getValueOfX(x) { return ( x * ( maximum - minimum ) ) / width + minimum } @@ -188,8 +203,8 @@ } function calculateValue(x, isSnappingToTicks) { - let mMinimum = Number(_root.minimum.toFixed(decimal)) - let mMaximum = Number(_root.maximum.toFixed(decimal)) + let mMinimum = calculateMinimum() + let mMaximum = calculateMaximum() // the center of the handler is aligned on the snap point and half width shall be used to set as min not the entire width. // also half of the hadler is out of slider min position when set on min, which proves the same as above. @@ -216,8 +231,10 @@ let stepWidth = width / ((mMaximum - mMinimum) / step) if ( stepWidth < _handler.width ) { let valueStepCount = parseInt(mValue / step) - mValue = valueStepCount * step - return mValue.toFixed(decimal) + mValue = calculateRoundedValue((valueStepCount * step)) + if ( mValue < mMinimum ) { return mMinimum } + if ( mValue > mMaximum ) { return mMaximum } + return mValue } // For sliders with decimal min, max, values, we need to add refinement to @@ -237,6 +254,44 @@ return mValue; } + /*! + * \brief Calculate the minimum value for the slider based on the current minimum, + * minStop, and stepSnap values. + * \return If minimum is greater than or equal to minStop, then just return minimum. + * If minStop is greater than minimum and stepSnap is false, then return minStop. + * If minStop is greater than minimum and stepSnap is true, then return minStep if + * it falls on a step, otherwise return the step above minStop. + */ + function calculateMinimum() { + let result = calculateRoundedValue(_root.minimum) + let rdMinStop = calculatePrecisionRoundedValue(_root.minStop) + if (rdMinStop > result) { + if (stepSnap) { + // if slider is set to snap and minimum stop is not on a step, then + // adjust it to one step above + let rdStep = calculatePrecisionRoundedValue(step) + result = Math.ceil(rdMinStop/rdStep) * rdStep + } + else { + result = rdMinStop + } + } + return result + } + + /*! + * \brief Calculate the maximum value for the slider based on the current maximum + * and stepSnap values. + * \return If stepSnap is false, then maximum. + * If stepSnap is true and maximum does not fall on a step, then one step below maximum, + * otherwise maximum. + */ + function calculateMaximum() { + let result = calculatePrecisionRoundedValue(_root.maximum) + return stepSnap ? Math.min(result, parseInt(result/step) * step) + : result + } + // used loader for performance since it may not always be required. // and can be a heavy Component Loader { id: _ticksLoader @@ -260,7 +315,7 @@ ProgressRect { id: _progressRect property real previousSliderValue: Number.NaN value : minimum - color : Colors.sliderHighlightColor + color : _root.highlightActiveColor decimal : _root.decimal minimum : _root.minimum @@ -270,7 +325,7 @@ radius : _root.isRoundedEnds ? (height/2) : Variables.rangeRectRadius border.width: _root.hasBorder ? Variables.rangeRectBorderWidth : 0 - border.color: _root.isActive ? Colors.sliderProgressBorderActive : Colors.borderDisableButton + border.color: _root.isActive ? _root.progressBorderActiveColor : _root.progressBorderInactiveColor // propagation is not working on drag ! onDragged: { @@ -340,7 +395,7 @@ width : diameter height : diameter radius : diameter - color : Colors.highlightProgressBar + color : _root.handlerActiveColor border { width: Variables.progressbarHandlerBorderWidth color: _root.handleBorderColor Index: sources/gui/qml/components/TouchRect.qml =================================================================== diff -u -r16a8f25568b4636ebc31e76c86a8031940cc4ad7 -rcb9c48c7c307690dcafcfd16ef412fe660291692 --- sources/gui/qml/components/TouchRect.qml (.../TouchRect.qml) (revision 16a8f25568b4636ebc31e76c86a8031940cc4ad7) +++ sources/gui/qml/components/TouchRect.qml (.../TouchRect.qml) (revision cb9c48c7c307690dcafcfd16ef412fe660291692) @@ -128,7 +128,7 @@ anchors.verticalCenter : parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter color: enabled ? _root.textColor : Colors.textDisableButton - font.pixelSize: Fonts.fontPixelButton + font.pixelSize: Fonts.fontPixelDefaultButton } MouseArea { id: _mouseArea Index: sources/gui/qml/compounds/StoppedSlider.qml =================================================================== diff -u --- sources/gui/qml/compounds/StoppedSlider.qml (revision 0) +++ sources/gui/qml/compounds/StoppedSlider.qml (revision cb9c48c7c307690dcafcfd16ef412fe660291692) @@ -0,0 +1,146 @@ +/*! + * + * Copyright (c) 2020-2025 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 StoppedSlider.qml + * \author (last) Stephen Quong + * \date (last) 20-Aug-2025 + * \author (original) Stephen Quong + * \date (original) 20-Aug-2025 + * + */ + +// Qt +import QtQuick 2.12 + +// Project +// Qml imports +import "qrc:/globals" +import "qrc:/components" + +/*! + * \brief Slider component with a title and the currently selected value + */ +Item { id: _root + property alias decimal : _slider.decimal + property alias minimum : _slider.minimum + property alias maximum : _slider.maximum + property alias minStop : _slider.minStop + property alias value : _slider.value + property alias defaultValue : _slider.defaultValue + property alias step : _slider.step + property string unit : "" + property bool active : false + + signal pressed () + signal released() + + function reset(vValue) { + _slider.reset(vValue) + } + + function setActiveValid() { + _root.active = true + } + + Slider { id : _slider + objectName : _root.objectName + "Slider" + anchors { + left : parent.left + right : _sliderArrows.left + rightMargin : 60 + verticalCenter : _sliderArrows.verticalCenter + } + height : Variables.ultraFiltrationProgressBarHeight + bgColor : Colors.ufAdjustmentProgressBarBg + highlightActiveColor : Colors.ufAdjustmentDeltaFill + handlerActiveColor : Colors.backgroundButtonSelect + hasBorder : false + diameter : Variables.progressbarHandler + touchMargin : Variables.sliderDefaultBodyHeight + handler.z : 5 + isActive : _root.active + stepSnap : true + ticks : true + radius : 0 + onPressed : { _root.pressed () } + onReleased : { _root.released() } + onHandleSelected : { setActiveValid() } + onSliderSelected : { setActiveValid() } + minText { + font { + pixelSize : Fonts.fontPixelButton + weight : Font.Normal + } + color : Colors.progressBarMinMax + text : _root.minimum.toFixed(_root.decimal) + (_root.unit.length ? (" " + _root.unit) : "") + } + maxText { + font { + pixelSize : minText.font.pixelSize + weight : minText.font.weight + } + color : Colors.progressBarMinMax + text : _root.maximum.toFixed(_root.decimal) + (_root.unit.length ? (" " + _root.unit) : "") + } + + Rectangle { id: _removedFill + anchors { + top : parent.top + bottom : parent.bottom + left : parent.left + right : _lowMarker.right + // adjust margin so fill completely covers the underlying slider + leftMargin : -1 + } + z : _lowMarker.z - 1 + color : Colors.ufProgressBarFill + } + + RangeMarker { id: _lowMarker + x : (_slider.width * ((value - _slider.minimum) / (_slider.maximum - _slider.minimum))) - ((width+1)/2) + z : _slider.handler.z - 1 + width : Variables.ultrafiltrationRangeMarkerWidth + height : Variables.rangeMarkerHeight + hasHandle : true + valueOnTop : true + decimal : Variables.ultrafiltrationPrecision + value : Math.max(_root.minStop, _root.minimum) + handle.width : Variables.ultrafiltrationRangeMarkerHandleWidth + text { + anchors.bottomMargin: _lowMarker.valueOnTop ? 15 : 0 + font { + pixelSize: Fonts.fontPixelUltrafiltrationRangeMarker + weight: Font.DemiBold + } + } + } + } + + SliderArrows{ id:_sliderArrows + anchors { + verticalCenter : _slider.verticalCenter + right : parent.right + } + + onIncrementValue : { + if ( _slider.isActive) { + _slider.incrementValue(true) + } + else { + setActiveValid() + } + } + onDecrementValue : { + if ( _slider.isActive) { + _slider.decrementValue(true) + } + else { + setActiveValid() + } + } + } +} Index: sources/gui/qml/globals/Colors.qml =================================================================== diff -u -rf8c80661c806c50047e81d581df0dd6e05f1c8ef -rcb9c48c7c307690dcafcfd16ef412fe660291692 --- sources/gui/qml/globals/Colors.qml (.../Colors.qml) (revision f8c80661c806c50047e81d581df0dd6e05f1c8ef) +++ sources/gui/qml/globals/Colors.qml (.../Colors.qml) (revision cb9c48c7c307690dcafcfd16ef412fe660291692) @@ -137,6 +137,7 @@ readonly property color alarmTopBarNoneFg : white readonly property color createTrProfileID : "#ffbb44" + readonly property color dropShadowDialogColor : "#4DFFF8E1" readonly property color createTreatmentActive : "#3d8eef" readonly property color createTreatmentInactive : backgroundRangeRect Index: sources/gui/qml/globals/Fonts.qml =================================================================== diff -u -r7208690c23bf7a801437b86902f2e04d173d659f -rcb9c48c7c307690dcafcfd16ef412fe660291692 --- sources/gui/qml/globals/Fonts.qml (.../Fonts.qml) (revision 7208690c23bf7a801437b86902f2e04d173d659f) +++ sources/gui/qml/globals/Fonts.qml (.../Fonts.qml) (revision cb9c48c7c307690dcafcfd16ef412fe660291692) @@ -57,7 +57,7 @@ readonly property int fontPixelFluidUnit : 22 readonly property int fontPixelFluidVolume : 16 - readonly property int fontPixelConfirm : 19 + readonly property int fontPixelConfirm : 21 readonly property int fontPixelBack : 17 readonly property int fontPixelSliderMarker : 17 @@ -81,7 +81,6 @@ readonly property int fontPixelRinsebackAdjustmentButton : 26 readonly property int fontPixelCreateTreatment : 30 - readonly property int fontPixelCreateTreatmentTable : 24 readonly property int fontPixelCircleButtonLabel: 50 Index: sources/gui/qml/globals/Variables.qml =================================================================== diff -u -r7208690c23bf7a801437b86902f2e04d173d659f -rcb9c48c7c307690dcafcfd16ef412fe660291692 --- sources/gui/qml/globals/Variables.qml (.../Variables.qml) (revision 7208690c23bf7a801437b86902f2e04d173d659f) +++ sources/gui/qml/globals/Variables.qml (.../Variables.qml) (revision cb9c48c7c307690dcafcfd16ef412fe660291692) @@ -116,27 +116,13 @@ readonly property int arrowIconDiameter : 35 readonly property int muteIconDiameter : 38 readonly property int headerIconDiameter : 40 - readonly property int topBarMenuHeight : 80 //// ----- @LEAHIZED + readonly property int topBarMenuHeight : 100 //// ----- @LEAHIZED readonly property int sliderCircleDiameter : 30 readonly property int pressuresProgressbarWidth : 725 - - readonly property int gridSelectionButtonHeight : 100 - readonly property int gridSelectionButtonWidth : 375 + readonly property int numPadHeight : 675 + readonly property int numPadWidth : 525 - readonly property int createTreatmentFlickableDeceleration : 4500 - readonly property int createTreatmentTableHeight : 800 - readonly property int createTreatmentTableWidth : applicationWidth - 50 - readonly property int createTreatmentMargin : 45 - readonly property int createTreatmentHeaderHeight : 130 - readonly property int createTreatmentTableMargin : 20 - readonly property int createTreatmentSubTableHeight : 50 - readonly property int createTreatmentSubTableWidth : 500 - readonly property int createTreatmentSliderMargin : sliderDefaultBodyHeight - readonly property int createTreatmentSliderHeight : 65 - readonly property int createTreatmentSliderWidth : 750 - readonly property int createTreatmentSwitchYDisplacement : 15 - readonly property int treatmentFlowsComponentWidth : 150 readonly property int treatmentPressureTitleWidth : 125 readonly property int treatmentPressureValueWidth : 140 @@ -206,6 +192,9 @@ readonly property int sliderAdjustButtonRightMargin : 50 readonly property int sliderAdjustPressAndHoldRefreshRate : 250 + readonly property int adjustmentLabelUnitContainerHeight : 75 + readonly property int adjustmentLabelUnitContainerWidth : 720 + readonly property real sliderDefaultRoundTickMarkDiameter : 5 readonly property int sliderDefaultBodyHeight : 15 @@ -214,6 +203,7 @@ readonly property int noRejectReason : 0 readonly property int textBoxRadius : 5 + readonly property int textBoxBorderWidth : 2 readonly property int adjustmentDialogWidth : applicationWidth * 0.7 readonly property int adjustmentDialogHeight : applicationHeight * 0.7 readonly property int adjustmentHeaderHeight : 120 @@ -282,7 +272,6 @@ // otherwise an extra RegExpValidator object will always created here. readonly property var regExp_PatientID: /[A-Za-z0-9_\-\.]{1,64}/ - readonly property string emptyEntry : "-- --" readonly property string preTreatmentStepLabelCreate : qsTr("CREATE" ) Index: sources/gui/qml/pages/treatment/TreatmentStack.qml =================================================================== diff -u -r7db80dd579054dd4754ae4d135a4a3e647f09b5f -rcb9c48c7c307690dcafcfd16ef412fe660291692 --- sources/gui/qml/pages/treatment/TreatmentStack.qml (.../TreatmentStack.qml) (revision 7db80dd579054dd4754ae4d135a4a3e647f09b5f) +++ sources/gui/qml/pages/treatment/TreatmentStack.qml (.../TreatmentStack.qml) (revision cb9c48c7c307690dcafcfd16ef412fe660291692) @@ -34,7 +34,7 @@ onVisibleChanged : { // this should never happen by design, but in tests it can easily happen and will block the screen touch. _treatmentAdjustmentFlow .close() - _vitalEntry .close( true ) // vQuit == true + _treatmentAdjustmentVitals .close() _treatmentAdjustmentPressuresLimits .close() _treatmentAdjustmentDuration .close() _treatmentUltrafiltrationItem .close() @@ -80,7 +80,7 @@ _treatmentAdjustmentFlow.open() } function onSectionVitalsClicked ( vValue ) { - _vitalEntry.open() + _treatmentAdjustmentVitalsInterval.open() } function onSectionPressuresClicked ( vValue ) { _treatmentAdjustmentPressuresLimits.open() @@ -123,50 +123,8 @@ } } - EntryDialog { id: _vitalEntry - function update(vSystolic, vDiastolic ,vHeartRate) { - _bphrEntry.systolic = vSystolic ? vSystolic : "" - _bphrEntry.diastolic = vDiastolic ? vDiastolic : "" - _bphrEntry.heartRate = vHeartRate ? vHeartRate : "" - } + TreatmentAdjustmentVitalsInterval { id: _treatmentAdjustmentVitalsInterval } - titleText : qsTr("VITALS") - confirmEnabled : _bphrEntry.isValid - onConfirmClicked : { - _vitalEntry.close() - vTreatmentVitals.doConfirm( - _bphrEntry.systolic , - _bphrEntry.diastolic , - _bphrEntry.heartRate - ) - _treatmentHome.logVitalTime() - } - - onCloseClicked : { - vTreatmentVitals.doSkip() // only for logging - } - - onOpened : vTreatmentVitals.doTimerStop() // Can't be moved to C++, and has to be handled here because it can manually being opened by the user - - onClosed : { - if ( ! vQuit ) - vTreatmentVitals.doTimerStart() - } - - BPHREntry { id : _bphrEntry - contentRectHeight : _vitalEntry.contentRect.height - } - - Connections { target: vTreatmentVitals - function onDidTrigger ( vSystolic, vDiastolic, vHeartRate ) { - if ( vTreatmentVitals.enableDialog ) { - _vitalEntry.update ( vSystolic, vDiastolic, vHeartRate ) - _vitalEntry.open () - } - } - } - } - // ---------- Manages Responses ---------- Connections { target: vTreatmentAdjustmentDuration function onAdjustmentTriggered ( vValue ) { Index: sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentBase.qml =================================================================== diff -u -r596aa427447d3757005ae759c64c52ebb26b9503 -rcb9c48c7c307690dcafcfd16ef412fe660291692 --- sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentBase.qml (.../TreatmentAdjustmentBase.qml) (revision 596aa427447d3757005ae759c64c52ebb26b9503) +++ sources/gui/qml/pages/treatment/adjustments/TreatmentAdjustmentBase.qml (.../TreatmentAdjustmentBase.qml) (revision cb9c48c7c307690dcafcfd16ef412fe660291692) @@ -106,8 +106,11 @@ // this meant to be used specifically as current state notification like paused/off in UF // it is also available in TreatmentAdjustmentFlow and TreatmentAdjustmentDuration but not used. NotificationBarSmall { id: _information - visible : false - imageSource : "" - text : "" + visible : false + imageSource : "" + imageDiameter : 26 + imageVerticalCenter : true + imageFillMode : Image.PreserveAspectFit + text : "" } } Index: sources/gui/qml/pages/treatment/sections/TreatmentSaline.qml =================================================================== diff -u -rc32be2f566add2f6c0cbad3bb90f7eb31d6bdc83 -rcb9c48c7c307690dcafcfd16ef412fe660291692 --- sources/gui/qml/pages/treatment/sections/TreatmentSaline.qml (.../TreatmentSaline.qml) (revision c32be2f566add2f6c0cbad3bb90f7eb31d6bdc83) +++ sources/gui/qml/pages/treatment/sections/TreatmentSaline.qml (.../TreatmentSaline.qml) (revision cb9c48c7c307690dcafcfd16ef412fe660291692) @@ -32,17 +32,16 @@ readonly property bool isIdle : vTDTreatmentStates.sbIdle // other that max saline bolus delivered, // if saline started but still is waiting for pump the button is disabled so user won't tap multiple times. - readonly property bool isDisabled : vTDTreatmentStates.sbMaxReached readonly property bool isWaitPump : vTDTreatmentStates.sbWaitPump readonly property string unit : Variables.unitTextFluid property int valueDecimal : Variables.salinePrecision property int valueTarget : vTreatmentSaline.target || vTreatmentAdjustmentSaline.target property int valueCumulative: vTreatmentSaline.cumulative property int valueDelivered : vTreatmentSaline.delivered - property string buttonText : ( isDisabled || isWaitPump ) ? _private.textStart : - isStarted ? _private.textStop : - _private.textStart + property string buttonText : isIdle ? _private.textStart : + isStarted ? _private.textStop : + _root.buttonText header.title : qsTr("Saline" ) header.showEdit : false @@ -62,10 +61,11 @@ spacing : Variables.defaultMargin * 3 Text { id: _descriptionText - text : qsTr("Total Saline Delivered") + objectName: "salineDescriptionText" + text : isStarted ? ("%1").arg(qsTr("Delivering Saline")) : qsTr("Total Saline Delivered") height : Variables.contentHeight font.pixelSize : Fonts.fontPixelFluidText - color : Colors.fluidText + color : isStarted ? Colors.progressBarSaline : Colors.fluidText horizontalAlignment: Text.AlignHCenter } @@ -80,14 +80,14 @@ maxText.visible : false marker.visible : false color : Colors.progressBarSaline - maximum : valueCumulative - value : valueDelivered + maximum : valueTarget + value : isStarted ? valueDelivered : 0 decimal : _root.valueDecimal radius : 9 } Label { id: _valueDelivered - property real value: valueDelivered + property real value: isStarted ? valueDelivered : valueCumulative anchors { verticalCenter : _valueDeliveredUnit.verticalCenter @@ -114,12 +114,13 @@ } TouchRect { id: _startFluidButton - width : _fluidProgressBar.width - height : Variables.contentHeight + 10 + width : Variables.defaultButtonWidth + height : Variables.defaultButtonHeight radius : 9 text.textFormat : Text.RichText text.text : buttonText isDefault : true + enabled : isStarted || isIdle text.font { weight : Font.DemiBold @@ -131,13 +132,11 @@ } } } - - // TODO: -// notification { -// visible : true -// text : isDisabled ? _private.mesgDisabled : -// isWaitPump ? _private.mesgWaitForPump : -// _private.mesgRejectReason -// } + // TODO: +// notification { +// visible : true +// text    : isDisabled ? _private.mesgDisabled    : +//   isWaitPump ? _private.mesgWaitForPump : +//   _private.mesgRejectReason // } } Index: sources/model/hd/adjustment/treatment/MTreatmentAdjustRequests.h =================================================================== diff -u -rc6bfc4231be6bb3d370ffd38291c05954f38334a -rcb9c48c7c307690dcafcfd16ef412fe660291692 --- sources/model/hd/adjustment/treatment/MTreatmentAdjustRequests.h (.../MTreatmentAdjustRequests.h) (revision c6bfc4231be6bb3d370ffd38291c05954f38334a) +++ sources/model/hd/adjustment/treatment/MTreatmentAdjustRequests.h (.../MTreatmentAdjustRequests.h) (revision cb9c48c7c307690dcafcfd16ef412fe660291692) @@ -62,15 +62,16 @@ /*! * \brief The MDuetConfirmUIr class - * \details The power off request model + * \details The confirm response model * * | MSG | CAN ID | Type | Ack | Src | Dst | Description | * |:----:|:------:|:------:|:---:|:---:|:---:|:-----------: | - * |0x0100| 0x020 | Rsp | Y | UI | HD | Confirm | + * |0xBB00| 0x020 | Rsp | Y | UI | TD | Confirm | * * | Payload || * | || - * | #1:(U08) | \ref state | + * | #1:(U32) | \ref mId | + * | #1:(U32) | \ref mConfirm | * * */ @@ -220,7 +221,7 @@ * * | MSG | CAN ID | Type | Ack | Src | Dest | Description | * |:----:|:------:|:----:|:---:|:---:|:----:|:--------------------:| - * |0x1200| 0x100 | Req | Y | UI | HD | Saline Bolus Request | + * |0x5F00| 0x100 | Req | Y | UI | HD | Saline Bolus Request | * * | Payload || * | || @@ -243,6 +244,31 @@ }; /*! + * \brief The MAdjustVitalsReq class + * \details The model to request the Vitals state + * + * | MSG | CAN ID | M.Box | Type | Ack | Src | Dest | Description | + * |:----:|:------:|:-----:|:----:|:---:|:---:|:----:|:--------------------:| + * |0x6300| 0x100 | 9 | Req | Y | UI | TD | Vitals Request | + * + * | Payload || + * | || + * | None || + * + * \sa State + * \sa MTreatmentVitals: Vitals Data + * \sa MAdjustVitalsResponse : Vitals Response + * + */ +class MAdjustVitalsReq : public MModel { +public: + static QString toString(const QVariantList &vParameters) { + return MModel::toString("AdjustVitals", vParameters); + } +}; + + +/*! * \brief The MAdjustHeparinReq class * \details The model to request the Heparin state * @@ -447,6 +473,7 @@ typedef Model:: MAdjustUltrafiltrationEditReq AdjustUltrafiltrationEditRequestData; typedef Model::MAdjustUltrafiltrationConfirmReq AdjustUltrafiltrationConfirmRequestData; typedef Model:: MAdjustSalineReq AdjustSalineRequestData; +typedef Model:: MAdjustVitalsReq AdjustVitalsRequestData; typedef Model:: MAdjustHeparinReq AdjustHeparinRequestData; typedef Model:: MAdjustRinsebackReq AdjustRinsebackRequestData; typedef Model:: MAdjustRecirculateReq AdjustRecirculateRequestData; Index: sources/view/hd/data/VTreatmentRanges.cpp =================================================================== diff -u -ree594afa3a2084c03395570954d723d04bbae215 -rcb9c48c7c307690dcafcfd16ef412fe660291692 --- sources/view/hd/data/VTreatmentRanges.cpp (.../VTreatmentRanges.cpp) (revision ee594afa3a2084c03395570954d723d04bbae215) +++ sources/view/hd/data/VTreatmentRanges.cpp (.../VTreatmentRanges.cpp) (revision cb9c48c7c307690dcafcfd16ef412fe660291692) @@ -144,6 +144,7 @@ FROMVARIANT_WITHRETURN ( heparinBolusVolumeMax , "Heparin Bolus Volume Ranges" , "Heparin_Bolus_Volume_Max" , Float , isConfigsOk ); FROMVARIANT_WITHRETURN ( heparinBolusVolumeRes , "Heparin Bolus Volume Ranges" , "Heparin_Bolus_Volume_Res" , Float , isConfigsOk ); + // heparinStopTime: Def, Max, Res intentionally omitted (see config/configurations/Parameters/DataList.conf) FROMVARIANT_WITHRETURN ( heparinStopTimeMin , "Heparin Stop Time Ranges" , "Heparin_Stop_Time_Min" , UInt , isConfigsOk ); // These were removed to ensure the check on the Heparin stop time matches the Treatment Duration. // FROMVARIANT_WITHRETURN ( heparinStopTimeMax , "Heparin Stop Time Ranges" , "Heparin_Stop_Time_Max" , UInt , isConfigsOk ); @@ -185,6 +186,7 @@ FROMVARIANT_WITHRETURN ( trancembrncPressureLimitWindowMax , "Trancememberance Pressure Ranges" , "Trancememberance_Adjust_Window_Max" , Int , isConfigsOk ); FROMVARIANT_WITHRETURN ( trancembrncPressureLimitWindowRes , "Trancememberance Pressure Ranges" , "Trancememberance_Adjust_Window_Res" , Int , isConfigsOk ); + // trancembrncPressureMonitor: Def intentionally omitted (see config/configurations/Parameters/DataList.conf) FROMVARIANT_WITHRETURN ( trancembrncPressureMonitorMin , "Trancememberance Pressure Ranges" , "Trancememberance_Monitor_Min" , Int , isConfigsOk ); FROMVARIANT_WITHRETURN ( trancembrncPressureMonitorMax , "Trancememberance Pressure Ranges" , "Trancememberance_Monitor_Max" , Int , isConfigsOk ); FROMVARIANT_WITHRETURN ( trancembrncPressureMonitorRes , "Trancememberance Pressure Ranges" , "Trancememberance_Monitor_Res" , Int , isConfigsOk ); @@ -194,6 +196,7 @@ FROMVARIANT_WITHRETURN ( arterialPressureLimitWindowMax , "Arterial Blood Pressure Ranges" , "Arterial_Adjust_Window_Max" , Int , isConfigsOk ); FROMVARIANT_WITHRETURN ( arterialPressureLimitWindowRes , "Arterial Blood Pressure Ranges" , "Arterial_Adjust_Window_Res" , Int , isConfigsOk ); + // arterialPressureMonitor: Def intentionally omitted (see config/configurations/Parameters/DataList.conf) FROMVARIANT_WITHRETURN ( arterialPressureMonitorMin , "Arterial Blood Pressure Ranges" , "Arterial_Monitor_Min" , Int , isConfigsOk ); FROMVARIANT_WITHRETURN ( arterialPressureMonitorMax , "Arterial Blood Pressure Ranges" , "Arterial_Monitor_Max" , Int , isConfigsOk ); FROMVARIANT_WITHRETURN ( arterialPressureMonitorRes , "Arterial Blood Pressure Ranges" , "Arterial_Monitor_Res" , Int , isConfigsOk ); @@ -208,6 +211,7 @@ FROMVARIANT_WITHRETURN ( venousPressureLimitAsymtrcMax , "Venous Blood Pressure Ranges" , "Venous_Adjust_Asymmetric_Max" , Int , isConfigsOk ); FROMVARIANT_WITHRETURN ( venousPressureLimitAsymtrcRes , "Venous Blood Pressure Ranges" , "Venous_Adjust_Asymmetric_Res" , Int , isConfigsOk ); + // venousPressureMonitor: Def intentionally omitted (see config/configurations/Parameters/DataList.conf) FROMVARIANT_WITHRETURN ( venousPressureMonitorMin , "Venous Blood Pressure Ranges" , "Venous_Monitor_Min" , Int , isConfigsOk ); FROMVARIANT_WITHRETURN ( venousPressureMonitorMax , "Venous Blood Pressure Ranges" , "Venous_Monitor_Max" , Int , isConfigsOk ); FROMVARIANT_WITHRETURN ( venousPressureMonitorRes , "Venous Blood Pressure Ranges" , "Venous_Monitor_Res" , Int , isConfigsOk ); @@ -227,5 +231,8 @@ FROMVARIANT_WITHRETURN ( rinsebackFlowRateMax , "Rinseback Volume Ranges" , "Rinseback_Volume_Max" , UInt , isConfigsOk ); FROMVARIANT_WITHRETURN ( rinsebackFlowRateRes , "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 ); + emit didTreatmentRangesDone( isConfigsOk ); } Index: sources/view/hd/data/VTreatmentRanges.h =================================================================== diff -u -ree594afa3a2084c03395570954d723d04bbae215 -rcb9c48c7c307690dcafcfd16ef412fe660291692 --- sources/view/hd/data/VTreatmentRanges.h (.../VTreatmentRanges.h) (revision ee594afa3a2084c03395570954d723d04bbae215) +++ sources/view/hd/data/VTreatmentRanges.h (.../VTreatmentRanges.h) (revision cb9c48c7c307690dcafcfd16ef412fe660291692) @@ -78,6 +78,9 @@ RANGESET( qint32 , arterialPressureMonitor , 0) RANGESET( qint32 , venousPressureMonitor , 0) + // ultrafiltration + RANGESET( float , ultrafiltrationVolume , 0) + VIEW_DEC_CLASS(VTreatmentRanges ) VIEW_DEC_SLOT(TreatmentRangesData ) VIEW_DEC_SLOT(SettingsData )