Index: sources/gui/qml/pages/treatment/TreatmentStack.qml =================================================================== diff -u -rbae1ae230d8b41f90b1fcd34b9bccdfa87bf3cd9 -r3f45841f8e2fa936666f8de8e2a02fe19fb39a8d --- sources/gui/qml/pages/treatment/TreatmentStack.qml (.../TreatmentStack.qml) (revision bae1ae230d8b41f90b1fcd34b9bccdfa87bf3cd9) +++ sources/gui/qml/pages/treatment/TreatmentStack.qml (.../TreatmentStack.qml) (revision 3f45841f8e2fa936666f8de8e2a02fe19fb39a8d) @@ -82,7 +82,17 @@ } } - TreatmentTrends { id: _treatmentTrends } + TreatmentTrends { id: _treatmentTrends + objectName: "_treatmentTrends" + Connections { target: vTDOpMode + function onInTreatmentChanged() { + if (vTDOpMode.inTreatment) { + _treatmentTrends.isParamExpanded = true + vTreatmentTrends.doClearData() + } + } + } + } ScreenItem { id: _treatmentHeparin } // TODO: make me! //// Treatment Adjustment Dialogs Index: sources/gui/qml/pages/treatment/TreatmentTrends.qml =================================================================== diff -u -rcdf3731b3aa395afa89430e81b1076087f3a2776 -r3f45841f8e2fa936666f8de8e2a02fe19fb39a8d --- sources/gui/qml/pages/treatment/TreatmentTrends.qml (.../TreatmentTrends.qml) (revision cdf3731b3aa395afa89430e81b1076087f3a2776) +++ sources/gui/qml/pages/treatment/TreatmentTrends.qml (.../TreatmentTrends.qml) (revision 3f45841f8e2fa936666f8de8e2a02fe19fb39a8d) @@ -28,9 +28,9 @@ */ ScreenItem { id: _root objectName: "_TreatmentTrends" + property alias isParamExpanded: _paramArea.isExpanded onVisibleChanged: { - _paramArea.isExpanded = false _paramList.positionViewAtBeginning() _historyList.positionViewAtBeginning() } @@ -264,7 +264,7 @@ Rectangle { id: _paramArea objectName : "_paramArea" - property bool isExpanded: false + property bool isExpanded: true anchors { top : parent.top bottom : parent.bottom @@ -365,6 +365,7 @@ ListView { id: _paramList objectName: "_paramList" readonly property int visibleParamCount: _paramArea.isExpanded ? 7 : 5 + readonly property int modelCount: model.count ?? 0 anchors { fill : parent @@ -454,6 +455,8 @@ } Behavior on contentX { NumberAnimation { duration: 200 } } + + onModelCountChanged: { positionViewAtBeginning() } } } @@ -620,6 +623,8 @@ ListView { id: _historyList objectName: "_historyList" + readonly property int modelCount: model.count ?? 0 + anchors { top : _timeArea.bottom topMargin : 10 @@ -681,6 +686,8 @@ text: entryID ? "(%1: %2) %3".arg(qsTr("ID")).arg(entryID).arg(message) : message } } + + onModelCountChanged: { positionViewAtBeginning() } } ScrollBar2 { id: _historyScrollbar Index: sources/view/td/data/treatment/VTreatmentTrends.cpp =================================================================== diff -u -r83f808d0f503ea847c27c1fbc65c2b95d2e5d6b0 -r3f45841f8e2fa936666f8de8e2a02fe19fb39a8d --- sources/view/td/data/treatment/VTreatmentTrends.cpp (.../VTreatmentTrends.cpp) (revision 83f808d0f503ea847c27c1fbc65c2b95d2e5d6b0) +++ sources/view/td/data/treatment/VTreatmentTrends.cpp (.../VTreatmentTrends.cpp) (revision 3f45841f8e2fa936666f8de8e2a02fe19fb39a8d) @@ -22,12 +22,20 @@ using namespace View; +/*! + * \brief Function called during startup to register this class with the QMetaObject system + */ static void qRegister() { qmlRegisterType ("VTreatmentTrends", 0, 1, "VTreatmentTrends"); } Q_COREAPP_STARTUP_FUNCTION(qRegister) +/*! + * \brief View::VTreatmentTrends + * \details Constructor + * \param parent - parent of this object + */ VTreatmentTrends::VTreatmentTrends(QObject *parent) : QObject(parent), _data(this), @@ -62,16 +70,10 @@ initConnections(); } -MListModel* VTreatmentTrends::data() -{ - return &_data; -} - -MListModel* VTreatmentTrends::history() -{ - return &_history; -} - +/*! + * \brief View::VTreatmentTrends::initConnections + * \details Initializes the signal/slot connections for this object + */ void VTreatmentTrends::initConnections() { ACTION_VIEW_CONNECTION(DDConductivityData ) @@ -86,18 +88,43 @@ ACTION_VIEW_CONNECTION(TreatmentVitalsData ) } +/*! + * \brief View::VTreatmentTrends::doClearData + * \details Clears all information in the data and history list models. + */ +void VTreatmentTrends::doClearData() +{ + _data.clear(); + _history.clear(); +} + +/*! + * \brief View::VTreatmentTrends::onActionReceive + * \details The data handler that gets DD conductivity data + * \param vData - DD conductivity data + */ void VTreatmentTrends::onActionReceive(const DDConductivityData &vData) { _latestData[eDataRole_Conductivity] = vData.mAcidBicarbCondutivity2; } +/*! + * \brief View::VTreatmentTrends::onActionReceive + * \details The data handler that gets TD pressure occlusion data + * \param vData - TD pressure occlusion data + */ void VTreatmentTrends::onActionReceive(const PressureOcclusionData &vData) { _latestData[eDataRole_ArterialPressure ] = vData.mArterialPressure; _latestData[eDataRole_VenousPressure ] = vData.mVenousPressure; _latestData[eDataRole_TMP ] = vData.mTmpPressure; } +/*! + * \brief View::VTreatmentTrends::onActionReceive + * \details The data handler that gets TD treatment log alarm data + * \param vData - TD treatment log alarm data + */ void View::VTreatmentTrends::onActionReceive(const TreatmentLogAlarmData &vData) { TrendEntry entry; @@ -109,6 +136,11 @@ _history.insertRow(0, entry); } +/*! + * \brief View::VTreatmentTrends::onActionReceive + * \details The data handler that gets TD treatment log event data + * \param vData - TD treatment log event data + */ void View::VTreatmentTrends::onActionReceive(const TreatmentLogEventData &vData) { TrendEntry entry; @@ -120,18 +152,33 @@ _history.insertRow(0, entry); } +/*! + * \brief View::VTreatmentTrends::onActionReceive + * \details The data handler that gets TD treatment parameters set point data + * \param vData - TD treatment parameters set point data + */ void VTreatmentTrends::onActionReceive(const TreatmentParametersSetPointData &vData) { _latestData[eDataRole_BloodFlowRate ] = vData.mBloodFlow; _latestData[eDataRole_DialysateFlowRate ] = vData.mDialysateFlow; _latestData[eDataRole_DialysateTemperature ] = vData.mDialysateTemp; } +/*! + * \brief View::VTreatmentTrends::onActionReceive + * \details The data handler that gets TD treatment saline data + * \param vData - TD treatment saline data + */ void VTreatmentTrends::onActionReceive(const TreatmentSalineData &vData) { _latestData[eDataRole_BolusCumulativeDelivered] = vData.mCumulative; } +/*! + * \brief View::VTreatmentTrends::onActionReceive + * \details The data handler that gets TD treatment states data + * \param vData - TD treatment states data + */ void VTreatmentTrends::onActionReceive(const TreatmentStatesData &vData) { static GuiTreatmentStates currentSubMode = GuiActions::NUM_OF_TREATMENT_STATES; @@ -162,17 +209,32 @@ } } +/*! + * \brief View::VTreatmentTrends::onActionReceive + * \details The data handler that gets TD treatment time data + * \param vData - TD treatment time data + */ void VTreatmentTrends::onActionReceive(const TreatmentTimeData &vData) { time_Elapsed(vData.mElapsed); } +/*! + * \brief View::VTreatmentTrends::onActionReceive + * \details The data handler that gets TD treatment ultrafiltration data + * \param vData - TD treatment ultrafiltration data + */ void VTreatmentTrends::onActionReceive(const TreatmentUltrafiltrationData &vData) { _latestData[eDataRole_UFVolumeRemoved ] = vData.mVolumeRemoved; _latestData[eDataRole_UFRate ] = vData.mTargetRate; } +/*! + * \brief View::VTreatmentTrends::onActionReceive + * \details The data handler that gets TD treatment vitals data + * \param vData - TD treatment vitals data + */ void VTreatmentTrends::onActionReceive(const TreatmentVitalsData &vData) { _latestData[eDataRole_Timestamp ] = QDateTime::currentDateTime(); @@ -184,6 +246,10 @@ _latestData.clear(); } +/*! + * \brief View::VTreatmentTrends::onIntervalRequestVitals + * \details Slot to handle when vitals is requested when the vitals interval has timed out + */ void VTreatmentTrends::onIntervalRequestVitals() { _savedData = _latestData; @@ -193,12 +259,23 @@ _savedData[eDataRole_PulseRate ] = QVariant(); } +/*! + * \brief View::VTreatmentTrends::onIntervalTimeoutVitals + * \details Slot to handle when vitals is not received within the timeout window + */ void VTreatmentTrends::onIntervalTimeoutVitals() { _data.insertRow(0, _savedData); _latestData.clear(); } +/*! + * \brief View::VTreatmentTrends::onIntervalTimeoutVitals + * \details Slot to handle when vitals is manually inputted + * \param vSystolic - vitals systolic value + * \param vDiastolic - vitals diastolic value + * \param vHeartRate - vitals heart rate value + */ void VTreatmentTrends::onManualVitals(const quint16 vSystolic, const quint16 vDiastolic, const quint16 vHeartRate) { _latestData[eDataRole_Timestamp ] = QDateTime::currentDateTime(); @@ -210,6 +287,10 @@ _latestData.clear(); } +/*! + * \brief View::VTreatmentTrends::onIntervalTimeoutVitals + * \details Slot to handle when a treatment data entry is recorded with no vitals data + */ void VTreatmentTrends::onNoVitalsRecord() { _latestData[eDataRole_Timestamp ] = QDateTime::currentDateTime(); @@ -220,3 +301,25 @@ _data.insertRow(0, _latestData); _latestData.clear(); } + +/*! + * \brief View::VTreatmentTrends::data + * \details Getter for the data list model + * \note This is needed so the list model can be accessed as a property in QML. + * \return pointer to the data list model + */ +MListModel* VTreatmentTrends::data() +{ + return &_data; +} + +/*! + * \brief View::VTreatmentTrends::history + * \details Getter for the history list model + * \note This is needed so the list model can be accessed as a property in QML. + * \return pointer to the history list model + */ +MListModel* VTreatmentTrends::history() +{ + return &_history; +} Index: sources/view/td/data/treatment/VTreatmentTrends.h =================================================================== diff -u -r83f808d0f503ea847c27c1fbc65c2b95d2e5d6b0 -r3f45841f8e2fa936666f8de8e2a02fe19fb39a8d --- sources/view/td/data/treatment/VTreatmentTrends.h (.../VTreatmentTrends.h) (revision 83f808d0f503ea847c27c1fbc65c2b95d2e5d6b0) +++ sources/view/td/data/treatment/VTreatmentTrends.h (.../VTreatmentTrends.h) (revision 3f45841f8e2fa936666f8de8e2a02fe19fb39a8d) @@ -90,16 +90,17 @@ eHistoryRole_Message , } HistoryRole; - MListModel* data(); - MListModel* history(); - public Q_SLOTS: + void doClearData(); void onIntervalRequestVitals(); void onIntervalTimeoutVitals(); void onManualVitals(const quint16 vSystolic, const quint16 vDiastolic, const quint16 vHeartRate); void onNoVitalsRecord(); private: + MListModel* data(); + MListModel* history(); + typedef QHash TrendEntry; MListModel _data;