Index: denali.qrc =================================================================== diff -u -r00e025a5d672cae66e592608792c17d98be54d19 -r732bc047743c99a157cf147f5313194867c1f5e3 --- denali.qrc (.../denali.qrc) (revision 00e025a5d672cae66e592608792c17d98be54d19) +++ denali.qrc (.../denali.qrc) (revision 732bc047743c99a157cf147f5313194867c1f5e3) @@ -38,9 +38,10 @@ sources/gui/qml/components/Line.qml sources/gui/qml/components/PlaceHolderText.qml sources/gui/qml/components/ProgressBar.qml - sources/gui/qml/components/ProgressMarker.qml + sources/gui/qml/components/RangeMarker.qml sources/gui/qml/components/ProgressRect.qml sources/gui/qml/components/RangeRect.qml + sources/gui/qml/components/RangeBar.qml qtquickcontrols2.conf Index: sources/canbus/messageglobals.h =================================================================== diff -u -r8c69137f18382bdc55a5678e6ed44a7683fe4dea -r732bc047743c99a157cf147f5313194867c1f5e3 --- sources/canbus/messageglobals.h (.../messageglobals.h) (revision 8c69137f18382bdc55a5678e6ed44a7683fe4dea) +++ sources/canbus/messageglobals.h (.../messageglobals.h) (revision 732bc047743c99a157cf147f5313194867c1f5e3) @@ -36,12 +36,13 @@ * So the data collector has to collect this amount of bytes as payload of a message. */ const QHash payloadLen { - {Gui::GuiActionType::PowerOff , 1 }, - {Gui::GuiActionType::KeepAlive , 0 }, - {Gui::GuiActionType::BloodFlow , 7 * 4 }, // 7 parameters each 4bytes - {Gui::GuiActionType::DialysateFlow , 7 * 4 }, // 7 parameters each 4bytes - {Gui::GuiActionType::String , 255 }, - {Gui::GuiActionType::Acknow , 0 }, + {Gui::GuiActionType::PowerOff , 1 }, + {Gui::GuiActionType::KeepAlive , 0 }, + {Gui::GuiActionType::BloodFlow , 7 * 4 }, // 7 parameters each 4bytes + {Gui::GuiActionType::DialysateInletFlow , 7 * 4 }, // 7 parameters each 4bytes + {Gui::GuiActionType::DialysateOutletFlow, 7 * 4 }, // 7 parameters each 4bytes + {Gui::GuiActionType::String , 255 }, + {Gui::GuiActionType::Acknow , 0 }, }; /*! Index: sources/canbus/messageinterpreter.cpp =================================================================== diff -u -r4d201ed69decd17c5fe8ed150fd90f194b35a486 -r732bc047743c99a157cf147f5313194867c1f5e3 --- sources/canbus/messageinterpreter.cpp (.../messageinterpreter.cpp) (revision 4d201ed69decd17c5fe8ed150fd90f194b35a486) +++ sources/canbus/messageinterpreter.cpp (.../messageinterpreter.cpp) (revision 732bc047743c99a157cf147f5313194867c1f5e3) @@ -169,10 +169,14 @@ ok = bloodFlowData (vMessage, vData); break; - case Gui::GuiActionType::DialysateFlow: - ok = dialysateFlowData (vMessage, vData); + case Gui::GuiActionType::DialysateInletFlow: + ok = dialysateInletFlowData (vMessage, vData); break; + case Gui::GuiActionType::DialysateOutletFlow: + ok = dialysateOutletFlowData (vMessage, vData); + break; + case Gui::GuiActionType::AlarmStatus: ok = alarmStatus (vMessage, vData); break; @@ -329,8 +333,8 @@ } /*! - * \brief MessageInterpreter::getDialysateFlowData - * \details This is the method which interprets the Dialysate Flow message data in vMessage of type Message + * \brief MessageInterpreter::getDialysateInletFlowData + * \details This is the method which interprets the Dialysate Inlet Flow message data in vMessage of type Message * to its elements of data. * \param vMessage - The vMessage of type Message which contains all the data, require to be interpreted. * \param vFlowSetPoint - Flow Set Point value of type signed int extracted out @@ -342,17 +346,17 @@ * \param vPWMDtCycle - PWM Duty Cycle in % value of type float extracted out * \return true if the message can be successfully converted to the Blood Flow data elements. */ -bool MessageInterpreter::getDialysateFlowData( +bool MessageInterpreter::getDialysateInletFlowData( const Message &vMessage , Types::S32 &vFlowSetPoint , Types::F32 &vMeasuredFlow , Types::F32 &vRotorSpeed , Types::F32 &vMotorSpeed, Types::F32 &vMotorCtlSpeed , Types::F32 &vMotorCtlCurrent , Types::F32 &vPWMDtCycle) { - if ( vMessage.actionId != Gui::GuiActionType::DialysateFlow ) { + if ( vMessage.actionId != Gui::GuiActionType::DialysateInletFlow ) { return false; } - if ( vMessage.data.length() < payloadLen[Gui::GuiActionType::DialysateFlow] ) { + if ( vMessage.data.length() < payloadLen[Gui::GuiActionType::DialysateInletFlow] ) { QString mActionIdHexString = Format::toHexString(vMessage.actionId); LOG_ERROR(tr("Incorrect data for Message ID (HD) '%1'").arg(mActionIdHexString)); return false; @@ -371,15 +375,15 @@ } /*! - * \brief MessageInterpreter::dialysateFlowData - * \details Used the getDialysateFlowData method and converts each parameter + * \brief MessageInterpreter::dialysateInletFlowData + * \details Used the getDialysateInletFlowData method and converts each parameter * in vData of type QVaranitList, to be used in the GUI * Also logs the data * \param vMessage - The message * \param vData - the output data - * \return return value of the method getDialysateFlowData + * \return return value of the method getDialysateInletFlowData */ -bool MessageInterpreter::dialysateFlowData(const Message &vMessage, QVariantList &vData) +bool MessageInterpreter::dialysateInletFlowData(const Message &vMessage, QVariantList &vData) { bool ok; Types::S32 mFlowSetPoint ; @@ -389,15 +393,15 @@ Types::F32 mMotorCtlSpeed ; Types::F32 mMotorCtlCurrent ; Types::F32 mPWMDtCycle ; - ok = getDialysateFlowData(vMessage , - mFlowSetPoint , - mMeasuredFlow , - mRotorSpeed , - mMotorSpeed , - mMotorCtlSpeed , - mMotorCtlCurrent , - mPWMDtCycle ); - LOG_DATUM(QString("Dialysate Flow(%1, %2, %3, %4, %5, %6, %7)") + ok = getDialysateInletFlowData(vMessage , + mFlowSetPoint , + mMeasuredFlow , + mRotorSpeed , + mMotorSpeed , + mMotorCtlSpeed , + mMotorCtlCurrent , + mPWMDtCycle ); + LOG_DATUM(QString("Dialysate Inlet Flow(%1, %2, %3, %4, %5, %6, %7)") .arg(mFlowSetPoint .value) .arg(mMeasuredFlow .value) .arg(mRotorSpeed .value) @@ -418,7 +422,100 @@ return ok; } + /*! + * \brief MessageInterpreter::getDialysateOutletFlowData + * \details This is the method which interprets the Dialysate Outlet Flow message data in vMessage of type Message + * to its elements of data. + * \param vMessage - The vMessage of type Message which contains all the data, require to be interpreted. + * \param vRefUFVol - Reference UF Volume value of type float extracted out + * \param vMeasUFVol - Measured UF Volume value of type float extracted out + * \param vRotorSpeed - Rotor Speed value of type float extracted out + * \param vMotorSpeed - Motor Speed value of type float extracted out + * \param vMotorCtlSpeed - Motor Controller Speed value of type float extracted out + * \param vMotorCtlCurrent - Motor Controller Current value of type float extracted out + * \param vPWMDtCycle - PWM Duty Cycle in % value of type float extracted out + * \return true if the message can be successfully converted to the Blood Flow data elements. + */ +bool MessageInterpreter::getDialysateOutletFlowData( + const Message &vMessage , + Types::F32 &vRefUFVol , Types::F32 &vMeasUFVol , + Types::F32 &vRotorSpeed , Types::F32 &vMotorSpeed , + Types::F32 &vMotorCtlSpeed , Types::F32 &vMotorCtlCurrent , Types::F32 &vPWMDtCycle) + +{ + if ( vMessage.actionId != Gui::GuiActionType::DialysateOutletFlow ) { + return false; + } + if ( vMessage.data.length() < payloadLen[Gui::GuiActionType::DialysateOutletFlow] ) { + QString mActionIdHexString = Format::toHexString(vMessage.actionId); + LOG_ERROR(tr("Incorrect data for Message ID (HD) '%1'").arg(mActionIdHexString)); + return false; + } + + int index = 0; // message data start position + Types::getValue<>(vMessage.data, index, vRefUFVol ); + Types::getValue<>(vMessage.data, index, vMeasUFVol ); + Types::getValue<>(vMessage.data, index, vRotorSpeed ); + Types::getValue<>(vMessage.data, index, vMotorSpeed ); + Types::getValue<>(vMessage.data, index, vMotorCtlSpeed ); + Types::getValue<>(vMessage.data, index, vMotorCtlCurrent); + Types::getValue<>(vMessage.data, index, vPWMDtCycle ); + + return true; +} + +/*! + * \brief MessageInterpreter::dialysateOutletFlowData + * \details Used the getDialysateOutletFlowData method and converts each parameter + * in vData of type QVaranitList, to be used in the GUI + * Also logs the data + * \param vMessage - The message + * \param vData - the output data + * \return return value of the method getDialysateOutletFlowData + */ +bool MessageInterpreter::dialysateOutletFlowData(const Message &vMessage, QVariantList &vData) +{ + bool ok; + Types::F32 mRefUFVol ; + Types::F32 mMeasUFVol ; + Types::F32 mRotorSpeed ; + Types::F32 mMotorSpeed ; + Types::F32 mMotorCtlSpeed ; + Types::F32 mMotorCtlCurrent ; + Types::F32 mPWMDtCycle ; + ok = getDialysateOutletFlowData(vMessage, + mRefUFVol , + mMeasUFVol , + mRotorSpeed , + mMotorSpeed , + mMotorCtlSpeed , + mMotorCtlCurrent , + mPWMDtCycle ); + QString msg = QString("Dialysate Outlet Flow(%1, %2, %3, %4, %5, %6, %7)") + .arg(mRefUFVol .value) + .arg(mMeasUFVol .value) + .arg(mRotorSpeed .value) + .arg(mMotorSpeed .value) + .arg(mMotorCtlSpeed .value) + .arg(mMotorCtlCurrent .value) + .arg(mPWMDtCycle .value); + LOG_DATUM(msg); + qDebug() << msg; + + if (ok) { + vData += mRefUFVol .value; + vData += mMeasUFVol .value; + vData += mRotorSpeed .value; + vData += mMotorSpeed .value; + vData += mMotorCtlSpeed .value; + vData += mMotorCtlCurrent.value; + vData += mPWMDtCycle .value; + } + return ok; +} + +/*! * \brief MessageInterpreter::getAlarmStatus * \details This method interprets AlarmStatus message data * in vMessage of type Message. Index: sources/canbus/messageinterpreter.h =================================================================== diff -u -r8c69137f18382bdc55a5678e6ed44a7683fe4dea -r732bc047743c99a157cf147f5313194867c1f5e3 --- sources/canbus/messageinterpreter.h (.../messageinterpreter.h) (revision 8c69137f18382bdc55a5678e6ed44a7683fe4dea) +++ sources/canbus/messageinterpreter.h (.../messageinterpreter.h) (revision 732bc047743c99a157cf147f5313194867c1f5e3) @@ -46,14 +46,25 @@ Types::F32 &vMotorCtlSpeed , Types::F32 &vMotorCtlCurrent , Types::F32 &vPWMDtCycle) __attribute_warn_unused_result__; bool bloodFlowData (const Message &vMessage, QVariantList &vData) __attribute_warn_unused_result__; - // ---- Dialysate FlowData - bool getDialysateFlowData (const Message &vMessage , + // ---- Dialysate Inlet FlowData + bool getDialysateInletFlowData + (const Message &vMessage , Types::S32 &vFlowSetPoint , Types::F32 &vMeasuredFlow , Types::F32 &vRotorSpeed , Types::F32 &vMotorSpeed, Types::F32 &vMotorCtlSpeed , Types::F32 &vMotorCtlCurrent , Types::F32 &vPWMDtCycle) __attribute_warn_unused_result__; - bool dialysateFlowData (const Message &vMessage, QVariantList &vData) __attribute_warn_unused_result__; + bool dialysateInletFlowData + (const Message &vMessage, QVariantList &vData) __attribute_warn_unused_result__; + // ---- Dialysate Outlet FlowData + bool getDialysateOutletFlowData + (const Message &vMessage , + Types::F32 &vRefUFVol , Types::F32 &vMeasUFVol , + Types::F32 &vRotorSpeed , Types::F32 &vMotorSpeed , + Types::F32 &vMotorCtlSpeed , Types::F32 &vMotorCtlCurrent , Types::F32 &vPWMDtCycle) __attribute_warn_unused_result__; + bool dialysateOutletFlowData + (const Message &vMessage, QVariantList &vData) __attribute_warn_unused_result__; + // ---- AlarmStatus bool getAlarmStatus (const Message &vMessage , Types::U32 &vState , Types::U32 &vTop , Index: sources/gui/guiglobals.h =================================================================== diff -u -r70a248b93720a46cb3a0f60b092698acd2acc7c1 -r732bc047743c99a157cf147f5313194867c1f5e3 --- sources/gui/guiglobals.h (.../guiglobals.h) (revision 70a248b93720a46cb3a0f60b092698acd2acc7c1) +++ sources/gui/guiglobals.h (.../guiglobals.h) (revision 732bc047743c99a157cf147f5313194867c1f5e3) @@ -29,19 +29,20 @@ public: enum /*class*/ GuiActionsType_Enum /*: quint16 QML doesn't support enum types */ { - Unknown = 0x0000, - PowerOff = 0x0100, - KeepAlive = 0x0700, - BloodFlow = 0x0500, - DialysateFlow = 0x0800, + Unknown = 0x0000, + PowerOff = 0x0100, + KeepAlive = 0x0700, + BloodFlow = 0x0500, + DialysateInletFlow = 0x0800, + DialysateOutletFlow = 0x0B00, - AlarmStatus = 0x0200, - AlarmTriggered = 0x0300, - AlarmCleared = 0x0400, + AlarmStatus = 0x0200, + AlarmTriggered = 0x0300, + AlarmCleared = 0x0400, - String = 0xFFFE, + String = 0xFFFE, - Acknow = 0xFFFF, + Acknow = 0xFFFF, }; enum class GuiActionsIndx_Enum { @@ -58,15 +59,24 @@ BloodFlow_MotorCtlCurrent , BloodFlow_PWMDtCycle , - // ---- DialysateFlow - DialysateFlow_FlowSetPoint = 0 , - DialysateFlow_MeasuredFlow , - DialysateFlow_RotorSpeed , - DialysateFlow_MotorSpeed , - DialysateFlow_MotorCtlSpeed , - DialysateFlow_MotorCtlCurrent , - DialysateFlow_PWMDtCycle , + // ---- DialysateInletFlow + DialysateInletFlow_FlowSetPoint = 0 , + DialysateInletFlow_MeasuredFlow , + DialysateInletFlow_RotorSpeed , + DialysateInletFlow_MotorSpeed , + DialysateInletFlow_MotorCtlSpeed , + DialysateInletFlow_MotorCtlCurrent , + DialysateInletFlow_PWMDtCycle , + // ---- DialysateOutletFlow + DialysateOutletFlow_RefUFVol = 0 , + DialysateOutletFlow_MeasUFVol , + DialysateOutletFlow_RotorSpeed , + DialysateOutletFlow_MotorSpeed , + DialysateOutletFlow_MotorCtlSpeed , + DialysateOutletFlow_MotorCtlCurrent , + DialysateOutletFlow_PWMDtCycle , + // ---- AlarmStatus AlarmStatus_Priority = 0 , AlarmStatus_AlarmID , Index: sources/gui/qml/components/ProgressBar.qml =================================================================== diff -u -r00e025a5d672cae66e592608792c17d98be54d19 -r732bc047743c99a157cf147f5313194867c1f5e3 --- sources/gui/qml/components/ProgressBar.qml (.../ProgressBar.qml) (revision 00e025a5d672cae66e592608792c17d98be54d19) +++ sources/gui/qml/components/ProgressBar.qml (.../ProgressBar.qml) (revision 732bc047743c99a157cf147f5313194867c1f5e3) @@ -30,7 +30,8 @@ property alias color : _progressRect.color property alias bgColor : _root.color - property alias markerHeight: _progressMarker.height + property alias markerHeight: _marker.height + property alias markerHandle: _marker.hasHandle height : Variables.progressbarHeight @@ -60,16 +61,15 @@ color : Colors.highlightProgressBar - ProgressMarker { id: _progressMarker - value : _root.value - height : Variables.progressMarkerHeight - text.font.pixelSize : Fonts.fontPixelProgressBarMarker - text.font.bold : true - // preferred positioning the marker - text.anchors.right : left - text.anchors.top : top - text.anchors.rightMargin: 5 - text.anchors.topMargin : -5 + RangeMarker { id: _marker + anchors { + left : parent.right + } + + height : Variables.rangeMarkerHeight + hasHandle : true + + value : _root.value } } } Fisheye: Tag 732bc047743c99a157cf147f5313194867c1f5e3 refers to a dead (removed) revision in file `sources/gui/qml/components/ProgressMarker.qml'. Fisheye: No comparison available. Pass `N' to diff? Index: sources/gui/qml/components/RangeBar.qml =================================================================== diff -u --- sources/gui/qml/components/RangeBar.qml (revision 0) +++ sources/gui/qml/components/RangeBar.qml (revision 732bc047743c99a157cf147f5313194867c1f5e3) @@ -0,0 +1,95 @@ +/*! + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * \copyright \n + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, \n + * IN PART OR IN WHOLE, \n + * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. \n + * + * \file RangeBar.qml + * \date 2020/01/24 + * \author Behrouz NematiPour + * + */ + +// Qt +import QtQuick 2.12 +import QtQuick.Controls 2.12 + +// Project +// Qml imports +import "qrc:/globals" + +/*! + * \brief Denali project Progress Rect + * \details This rectangle fits into the rect area and will calculate its length + * in regards to the min, max, width, current value of the parent + */ +RangeRect { id: _root + property int value : 0 + property int lowerBound : 0 + property int upperBound : 0 + + property alias rangebar : _rangeRect + + property int markerHeight: Variables.rangeMarkerHeightMidle + property color markerColor : Colors.rangeMarker + + property int markerBoundHeight : Variables.rangeMarkerHeightShort + property color markerBoundColor : Colors.rangeMarkerShort + + RangeRect { id: _rangeRect + x : ((parent.width * (lowerBound - parent.minimum)) / (parent.maximum - parent.minimum)) + height : parent.height + width : ((parent.width * (upperBound - lowerBound)) / (parent.maximum - parent.minimum)) + + radius: 0 + + minimum: lowerBound + maximum: upperBound + + minText.visible: true + maxText.visible: true + RangeMarker { id: _rangeMarkerLowerBound + text.visible: false + height : markerBoundHeight + color : markerBoundColor + anchors.left: parent.left + } + + RangeMarker { id: _rangeMarkerUpperBound + text.visible: false + height : markerBoundHeight + color : markerBoundColor + anchors.left: parent.right + } + + } + + RangeMarker { id: _rangeMarkerValue + value : parent.value + x : ((parent.width * (parent.value - minimum)) / (maximum - minimum)) + text.visible: true + hasHandle : true + height : markerHeight + color : markerColor + } + + //property real margin : Variables.rangeRectMargin + // + //QtObject { id: _private + // property int length: ((parent.width * (value - minimum)) / (maximum - minimum) - (margin * 2)) + //} + // + //width : _private.length + // + //// progress Rects require to show the current values as their maxText values + //maxText.text: value + // + //anchors { + // left : parent.left + // top : parent.top + // bottom : parent.bottom + // margins : margin + //} +} Index: sources/gui/qml/components/RangeMarker.qml =================================================================== diff -u --- sources/gui/qml/components/RangeMarker.qml (revision 0) +++ sources/gui/qml/components/RangeMarker.qml (revision 732bc047743c99a157cf147f5313194867c1f5e3) @@ -0,0 +1,78 @@ +/*! + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * \copyright \n + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, \n + * IN PART OR IN WHOLE, \n + * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. \n + * + * \file RangeMarker.qml + * \date 2020/01/22 + * \author Behrouz NematiPour + * + */ + +// Qt +import QtQuick 2.12 +import QtQuick.Controls 2.12 + +// Project +// Qml imports +import "qrc:/globals" + +/*! + * \brief Denali project simple logo (No 'Diality') + */ +Item { id : _root + property int value : 0 + + property alias text : _textValue + property color color : Colors.rangeMarker + property alias thickness : _root.width + property alias hasHandle : _handle.visible + + height: parent.height + width : Variables.rangeMarkerWidth + + anchors { + bottom : parent.bottom + } + + Rectangle { id: _handle + visible : false + + width : _root.width * 3 + height : _root.width * 3 + radius : _root.width * 3 + color : _root.color + anchors { + top : _root.top + horizontalCenter: parent.horizontalCenter + } + } + + Rectangle { id: _stick + width : _root.width + height : _root.height + color : _root.color + anchors { + top : _root.top + horizontalCenter: parent.horizontalCenter + } + } + + Text { id: _textValue + font { + pixelSize : Fonts.fontPixelRangeMarker + bold : true + } + anchors { + right : parent.left + top : parent.top + rightMargin: 5 + topMargin : -5 + } + color : Colors.textRangeMarker + text : value + } +} Index: sources/gui/qml/components/RangeRect.qml =================================================================== diff -u -r00e025a5d672cae66e592608792c17d98be54d19 -r732bc047743c99a157cf147f5313194867c1f5e3 --- sources/gui/qml/components/RangeRect.qml (.../RangeRect.qml) (revision 00e025a5d672cae66e592608792c17d98be54d19) +++ sources/gui/qml/components/RangeRect.qml (.../RangeRect.qml) (revision 732bc047743c99a157cf147f5313194867c1f5e3) @@ -41,7 +41,7 @@ Text { id: _textMinimum visible : false - font.pixelSize : Fonts.fontPixelRengeRectText + font.pixelSize : Fonts.fontPixelRangeRectText font.bold : true color : Colors.textProgressBar @@ -57,7 +57,7 @@ Text { id: _textMaximum visible : false - font.pixelSize : Fonts.fontPixelRengeRectText + font.pixelSize : Fonts.fontPixelRangeRectText font.bold : true color : Colors.textProgressBar Index: sources/gui/qml/globals/Colors.qml =================================================================== diff -u -r00e025a5d672cae66e592608792c17d98be54d19 -r732bc047743c99a157cf147f5313194867c1f5e3 --- sources/gui/qml/globals/Colors.qml (.../Colors.qml) (revision 00e025a5d672cae66e592608792c17d98be54d19) +++ sources/gui/qml/globals/Colors.qml (.../Colors.qml) (revision 732bc047743c99a157cf147f5313194867c1f5e3) @@ -36,8 +36,9 @@ readonly property color highlightMedProgressBar : "#1b2b3e" readonly property color textProgressBar : "#88a3c5" - readonly property color textProgressMarker : "white" - readonly property color progressMarker : "white" + readonly property color textRangeMarker : "white" + readonly property color rangeMarker : "white" + readonly property color rangeMarkerShort : "#9fb6d1" readonly property color textMain : "#FCFCFC" readonly property color textButton : "#E8E8E8" Index: sources/gui/qml/globals/Fonts.qml =================================================================== diff -u -r00e025a5d672cae66e592608792c17d98be54d19 -r732bc047743c99a157cf147f5313194867c1f5e3 --- sources/gui/qml/globals/Fonts.qml (.../Fonts.qml) (revision 00e025a5d672cae66e592608792c17d98be54d19) +++ sources/gui/qml/globals/Fonts.qml (.../Fonts.qml) (revision 732bc047743c99a157cf147f5313194867c1f5e3) @@ -33,6 +33,6 @@ readonly property int fontPixelVitals : 68 - readonly property int fontPixelProgressBarMarker: 16 - readonly property int fontPixelRengeRectText : 14 + readonly property int fontPixelRangeMarker : 16 + readonly property int fontPixelRangeRectText : 14 } Index: sources/gui/qml/globals/Variables.qml =================================================================== diff -u -r00e025a5d672cae66e592608792c17d98be54d19 -r732bc047743c99a157cf147f5313194867c1f5e3 --- sources/gui/qml/globals/Variables.qml (.../Variables.qml) (revision 00e025a5d672cae66e592608792c17d98be54d19) +++ sources/gui/qml/globals/Variables.qml (.../Variables.qml) (revision 732bc047743c99a157cf147f5313194867c1f5e3) @@ -49,12 +49,14 @@ readonly property int dialogRadius : 10 - readonly property int rangeRectMargin : 1 - readonly property int rangeRectRadius : 2 - readonly property int rangeRectTextMargin : 7 + readonly property int rangeRectMargin : 1 + readonly property int rangeRectRadius : 2 + readonly property int rangeRectTextMargin : 7 + readonly property int rangeMarkerHeight : 60 + readonly property int rangeMarkerHeightMidle: 40 + readonly property int rangeMarkerHeightShort: 20 + readonly property int rangeMarkerWidth : 2 - readonly property int progressbarHeight : 30 - readonly property int progressMarkerHeight : 60 - readonly property int progressMarkerWidth : 2 + readonly property int progressbarHeight : 30 } Index: sources/gui/qml/pages/SettingsHome.qml =================================================================== diff -u -r4d201ed69decd17c5fe8ed150fd90f194b35a486 -r732bc047743c99a157cf147f5313194867c1f5e3 --- sources/gui/qml/pages/SettingsHome.qml (.../SettingsHome.qml) (revision 4d201ed69decd17c5fe8ed150fd90f194b35a486) +++ sources/gui/qml/pages/SettingsHome.qml (.../SettingsHome.qml) (revision 732bc047743c99a157cf147f5313194867c1f5e3) @@ -137,83 +137,155 @@ } } - Column { id: _DialysateFlowColumn + Column { id: _DialysateInletFlowColumn width: 150 spacing: 20 topPadding: 100 leftPadding: 180 Text { - id: _DialysateFlow_Title - text: qsTr(" Dialysate ") - width: _DialysateFlowColumn.width + id: _DialysateInletFlow_Title + text: qsTr(" Dialysate I ") + width: _DialysateInletFlowColumn.width horizontalAlignment: Text.AlignLeft color: Colors.textMain font.pixelSize: Fonts.fontPixelTitle font.underline: true } Text { - id: _DialysateFlow_S32 + id: _DialysateInletFlow_S32 text: qsTr("") - width: _DialysateFlowColumn.width + width: _DialysateInletFlowColumn.width horizontalAlignment: Text.AlignRight color: Colors.textMain font.pixelSize: Fonts.fontPixelTitle } Text { - id: _DialysateFlow_F32_1 + id: _DialysateInletFlow_F32_1 text: qsTr("") - width: _DialysateFlowColumn.width + width: _DialysateInletFlowColumn.width horizontalAlignment: Text.AlignRight color: Colors.textMain font.pixelSize: Fonts.fontPixelTitle } Text { - id: _DialysateFlow_F32_2 + id: _DialysateInletFlow_F32_2 text: qsTr("") - width: _DialysateFlowColumn.width + width: _DialysateInletFlowColumn.width horizontalAlignment: Text.AlignRight color: Colors.textMain font.pixelSize: Fonts.fontPixelTitle } Text { - id: _DialysateFlow_F32_3 + id: _DialysateInletFlow_F32_3 text: qsTr("") - width: _DialysateFlowColumn.width + width: _DialysateInletFlowColumn.width horizontalAlignment: Text.AlignRight color: Colors.textMain font.pixelSize: Fonts.fontPixelTitle } Text { - id: _DialysateFlow_F32_4 + id: _DialysateInletFlow_F32_4 text: qsTr("") - width: _DialysateFlowColumn.width + width: _DialysateInletFlowColumn.width horizontalAlignment: Text.AlignRight color: Colors.textMain font.pixelSize: Fonts.fontPixelTitle } Text { - id: _DialysateFlow_F32_5 + id: _DialysateInletFlow_F32_5 text: qsTr("") - width: _DialysateFlowColumn.width + width: _DialysateInletFlowColumn.width horizontalAlignment: Text.AlignRight color: Colors.textMain font.pixelSize: Fonts.fontPixelTitle } Text { - id: _DialysateFlow_F32_6 + id: _DialysateInletFlow_F32_6 text: qsTr("") - width: _DialysateFlowColumn.width + width: _DialysateInletFlowColumn.width horizontalAlignment: Text.AlignRight color: Colors.textMain font.pixelSize: Fonts.fontPixelTitle } } + Column { id: _DialysateOutletFlowColumn + width: 150 + spacing: 20 + topPadding: 100 + leftPadding: 400 + Text { + id: _DialysateOutletFlow_Title + text: qsTr(" Dialysate O ") + width: _DialysateOutletFlowColumn.width + horizontalAlignment: Text.AlignLeft + color: Colors.textMain + font.pixelSize: Fonts.fontPixelTitle + font.underline: true + } + Text { + id: _DialysateOutletFlow_F32_0 + text: qsTr("") + width: _DialysateOutletFlowColumn.width + horizontalAlignment: Text.AlignRight + color: Colors.textMain + font.pixelSize: Fonts.fontPixelTitle + } + Text { + id: _DialysateOutletFlow_F32_1 + text: qsTr("") + width: _DialysateOutletFlowColumn.width + horizontalAlignment: Text.AlignRight + color: Colors.textMain + font.pixelSize: Fonts.fontPixelTitle + } + Text { + id: _DialysateOutletFlow_F32_2 + text: qsTr("") + width: _DialysateOutletFlowColumn.width + horizontalAlignment: Text.AlignRight + color: Colors.textMain + font.pixelSize: Fonts.fontPixelTitle + } + Text { + id: _DialysateOutletFlow_F32_3 + text: qsTr("") + width: _DialysateOutletFlowColumn.width + horizontalAlignment: Text.AlignRight + color: Colors.textMain + font.pixelSize: Fonts.fontPixelTitle + } + Text { + id: _DialysateOutletFlow_F32_4 + text: qsTr("") + width: _DialysateOutletFlowColumn.width + horizontalAlignment: Text.AlignRight + color: Colors.textMain + font.pixelSize: Fonts.fontPixelTitle + } + Text { + id: _DialysateOutletFlow_F32_5 + text: qsTr("") + width: _DialysateOutletFlowColumn.width + horizontalAlignment: Text.AlignRight + color: Colors.textMain + font.pixelSize: Fonts.fontPixelTitle + } + Text { + id: _DialysateOutletFlow_F32_6 + text: qsTr("") + width: _DialysateOutletFlowColumn.width + horizontalAlignment: Text.AlignRight + color: Colors.textMain + font.pixelSize: Fonts.fontPixelTitle + } + } + Column { id: _AlarmStatusColumn width: 270 spacing: 5 topPadding: 100 - leftPadding: 400 + leftPadding: 700 Text { id: _AlarmStatus_Title text: qsTr(" Alarm Status ") @@ -331,23 +403,35 @@ if ( ! visible ) return; switch(vAction) { case GuiActions.BloodFlow: - _BloodFlow_S32 .text = vData[GuiActions.BloodFlow_FlowSetPoint ]; - _BloodFlow_F32_1.text = vData[GuiActions.BloodFlow_MeasuredFlow ].toFixed(2); - _BloodFlow_F32_2.text = vData[GuiActions.BloodFlow_RotorSpeed ].toFixed(2); - _BloodFlow_F32_3.text = vData[GuiActions.BloodFlow_MotorSpeed ].toFixed(2); - _BloodFlow_F32_4.text = vData[GuiActions.BloodFlow_MotorCtlSpeed ].toFixed(2); - _BloodFlow_F32_5.text = vData[GuiActions.BloodFlow_MotorCtlCurrent].toFixed(2); - _BloodFlow_F32_6.text = vData[GuiActions.BloodFlow_PWMDtCycle ].toFixed(2) + "%"; + _BloodFlow_S32 .text = vData[GuiActions.BloodFlow_FlowSetPoint ]; + _BloodFlow_F32_1.text = vData[GuiActions.BloodFlow_MeasuredFlow ].toFixed(2); + _BloodFlow_F32_2.text = vData[GuiActions.BloodFlow_RotorSpeed ].toFixed(2); + _BloodFlow_F32_3.text = vData[GuiActions.BloodFlow_MotorSpeed ].toFixed(2); + _BloodFlow_F32_4.text = vData[GuiActions.BloodFlow_MotorCtlSpeed ].toFixed(2); + _BloodFlow_F32_5.text = vData[GuiActions.BloodFlow_MotorCtlCurrent].toFixed(2); + _BloodFlow_F32_6.text = "%" + vData[GuiActions.BloodFlow_PWMDtCycle ].toFixed(2); break; - case GuiActions.DialysateFlow: - _DialysateFlow_S32 .text = vData[GuiActions.DialysateFlow_FlowSetPoint ]; - _DialysateFlow_F32_1.text = vData[GuiActions.DialysateFlow_MeasuredFlow ].toFixed(2); - _DialysateFlow_F32_2.text = vData[GuiActions.DialysateFlow_RotorSpeed ].toFixed(2); - _DialysateFlow_F32_3.text = vData[GuiActions.DialysateFlow_MotorSpeed ].toFixed(2); - _DialysateFlow_F32_4.text = vData[GuiActions.DialysateFlow_MotorCtlSpeed ].toFixed(2); - _DialysateFlow_F32_5.text = vData[GuiActions.DialysateFlow_MotorCtlCurrent].toFixed(2); - _DialysateFlow_F32_6.text = vData[GuiActions.DialysateFlow_PWMDtCycle ].toFixed(2) + "%"; + + case GuiActions.DialysateInletFlow: + _DialysateInletFlow_S32 .text = vData[GuiActions.DialysateInletFlow_FlowSetPoint ]; + _DialysateInletFlow_F32_1.text = vData[GuiActions.DialysateInletFlow_MeasuredFlow ].toFixed(2); + _DialysateInletFlow_F32_2.text = vData[GuiActions.DialysateInletFlow_RotorSpeed ].toFixed(2); + _DialysateInletFlow_F32_3.text = vData[GuiActions.DialysateInletFlow_MotorSpeed ].toFixed(2); + _DialysateInletFlow_F32_4.text = vData[GuiActions.DialysateInletFlow_MotorCtlSpeed ].toFixed(2); + _DialysateInletFlow_F32_5.text = vData[GuiActions.DialysateInletFlow_MotorCtlCurrent ].toFixed(2); + _DialysateInletFlow_F32_6.text = "%" + vData[GuiActions.DialysateInletFlow_PWMDtCycle ].toFixed(2); break; + + case GuiActions.DialysateOutletFlow: + _DialysateOutletFlow_F32_0.text = vData[GuiActions.DialysateOutletFlow_RefUFVol ].toFixed(2); + _DialysateOutletFlow_F32_1.text = vData[GuiActions.DialysateOutletFlow_MeasUFVol ].toFixed(2); + _DialysateOutletFlow_F32_2.text = vData[GuiActions.DialysateOutletFlow_RotorSpeed ].toFixed(2); + _DialysateOutletFlow_F32_3.text = vData[GuiActions.DialysateOutletFlow_MotorSpeed ].toFixed(2); + _DialysateOutletFlow_F32_4.text = vData[GuiActions.DialysateOutletFlow_MotorCtlSpeed ].toFixed(2); + _DialysateOutletFlow_F32_5.text = vData[GuiActions.DialysateOutletFlow_MotorCtlCurrent ].toFixed(2); + _DialysateOutletFlow_F32_6.text = "%" + vData[GuiActions.DialysateOutletFlow_PWMDtCycle ].toFixed(2); + break; + case GuiActions.AlarmStatus: _AlarmStatus_Priority .text = _GuiView.alarmPriorityName(vData[GuiActions.AlarmStatus_Priority ]) _AlarmStatus_ID .text = _GuiView.alarmIDName (vData[GuiActions.AlarmStatus_AlarmID ]) Index: sources/gui/qml/pages/TreatmentStart.qml =================================================================== diff -u -r00e025a5d672cae66e592608792c17d98be54d19 -r732bc047743c99a157cf147f5313194867c1f5e3 --- sources/gui/qml/pages/TreatmentStart.qml (.../TreatmentStart.qml) (revision 00e025a5d672cae66e592608792c17d98be54d19) +++ sources/gui/qml/pages/TreatmentStart.qml (.../TreatmentStart.qml) (revision 732bc047743c99a157cf147f5313194867c1f5e3) @@ -28,8 +28,8 @@ * which is the default screen in the "Manager" stack */ ScreenItem { id: _root - property int bloodFlow_MeasuredFlow_Precision: 0 - property int dialysateFlow_MeasuredFlow_Precision: 0 + property int bloodFlow_MeasuredFlow_Precision: 0 + property int dialysateInletFlow_MeasuredFlow_Precision: 0 property int leftColumnX : 40 @@ -59,7 +59,7 @@ extra: qsTr("mL") // unit labelFont.weight: Font.ExtraLight } , - TextRect { id: _dialysateFlow + TextRect { id: _dialysateInletFlow title: qsTr("Dialysate") label: "500" // value extra: qsTr("mL") // unit @@ -99,12 +99,56 @@ Line { x: 0; y: row2LineY; length: lineLength } TouchArea { id: _pressureTouchArea + clip: false x: leftColumnX y: row3Y width: _flowsTouchArea.width + height : 200 isTouchable: true - orientation: TouchArea.Orientation.Vertical + orientation: TouchArea.Orientation.Horizontal title: qsTr("PRESSURE") + " " + qsTr("(mmHg)") + RangeBar { id: _arterialRangeBar + x: 0 + y: 75 + width : 175 + height : 15 + rangebar.color: "#31bcdb" + + value : 0 + + // TEST : simulation code + minimum : -400 + maximum : 400 + lowerBound: -300 + upperBound: 100 + NumberAnimation on value { + duration: 70000 /*_progressbar.r*/; + from: _arterialRangeBar.minimum; + to: _arterialRangeBar.maximum; + loops: Animation.Infinite; + } + } + RangeBar { id: _venoudRangeBar + x: 200 + y: 75 + width : 175 + height : 15 + rangebar.color: "#c568ed" + + value : 0 + + // TEST : simulation code + minimum: -100 + maximum: 800 + lowerBound: -100 + upperBound: 500 + NumberAnimation on value { + duration: 70000; + from: _venoudRangeBar.minimum; + to: _venoudRangeBar.maximum; + loops: Animation.Infinite; + } + } } // ---------- COLUMN RIGHT @@ -184,8 +228,8 @@ case GuiActions.BloodFlow: _bloodFlow.label = vData[GuiActions.BloodFlow_MeasuredFlow].toFixed(bloodFlow_MeasuredFlow_Precision); break - case GuiActions.DialysateFlow: - _dialysateFlow.label = vData[GuiActions.DialysateFlow_MeasuredFlow].toFixed(dialysateFlow_MeasuredFlow_Precision); + case GuiActions.DialysateInletFlow: + _dialysateInletFlow.label = vData[GuiActions.DialysateInletFlow_MeasuredFlow].toFixed(dialysateInletFlow_MeasuredFlow_Precision); break } }