Index: sources/canbus/MessageDispatcher.cpp =================================================================== diff -u -r8350b02fa06da7cb6d7f085f88f55bf505ae78df -rb2a0a682b4f9bcf52352e6cb6206ba10f09c7847 --- sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision 8350b02fa06da7cb6d7f085f88f55bf505ae78df) +++ sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision b2a0a682b4f9bcf52352e6cb6206ba10f09c7847) @@ -1120,7 +1120,6 @@ { QVariantList mData; mData += vData.mIndex; - qDebug() << "here"; actionTransmit(GuiActionType::ID_DDCalibrationPressureReq, mData); } Index: sources/gui/qml/components/TextEntry.qml =================================================================== diff -u -rd14136d218b5dbc0734f7949b30541d242bcd350 -rb2a0a682b4f9bcf52352e6cb6206ba10f09c7847 --- sources/gui/qml/components/TextEntry.qml (.../TextEntry.qml) (revision d14136d218b5dbc0734f7949b30541d242bcd350) +++ sources/gui/qml/components/TextEntry.qml (.../TextEntry.qml) (revision b2a0a682b4f9bcf52352e6cb6206ba10f09c7847) @@ -45,6 +45,7 @@ signal enterPressed () signal clicked (var vMouse) signal editingFinished() + signal textEdited() width : _label.width + _input.width height : TextEntry.EntryHeight @@ -114,6 +115,7 @@ activeFocusOnPress : true onAccepted : _root.enterPressed() onFocusChanged : doFocus(focus) + onTextChanged : _root.textEdited() } Text { id: _placeHolderText Index: sources/gui/qml/dialogs/CalibrationDialog.qml =================================================================== diff -u -r4f856b4068a1a5a131a74b5bcece7b6212b5c8d9 -rb2a0a682b4f9bcf52352e6cb6206ba10f09c7847 --- sources/gui/qml/dialogs/CalibrationDialog.qml (.../CalibrationDialog.qml) (revision 4f856b4068a1a5a131a74b5bcece7b6212b5c8d9) +++ sources/gui/qml/dialogs/CalibrationDialog.qml (.../CalibrationDialog.qml) (revision b2a0a682b4f9bcf52352e6cb6206ba10f09c7847) @@ -14,7 +14,7 @@ property string titleText : "" property string componentName : "" property var entries : [] - property var rejections : vCalibrationSettings.rejectionReasons + property var rejections : vCalibrationSettings.model.get(_root.sensorIndex).rejections property var entryNames : vCalibrationSettings.columnTitle property var model : null property alias numPad : _numPad @@ -55,9 +55,6 @@ vCalibrationSettings.doAdjustment(_root.index, _root.sensorIndex, payload) - - // REMOVE LATER TO THE ACCEPT OF THE RESPONSE MESSAGE ***** - close() } function confirmEnabled() { @@ -70,12 +67,12 @@ } function openDialog (vIndex, vSensorIndex, vRecord){ - _root.model = vRecord - _root.index = vIndex - _root.sensorIndex = vSensorIndex - _root.titleText = vRecord.title - _root.componentName = vRecord.component - _root.entries = vRecord.payload + _root.model = vRecord + _root.index = vIndex + _root.sensorIndex = vSensorIndex + _root.titleText = vRecord.title + _root.componentName = vRecord.component + _root.entries = vRecord.payload open() } @@ -201,13 +198,15 @@ _root.numPad.validatorMin, _root.numPad.validatorMax, "") + + onTextEdited: if ( _root.rejections[index] ) { vCalibrationSettings.clearRejectionReason(index, _root.sensorIndex) } } Text { id : _textEntryCalTime anchors.centerIn : parent text : modelData ?? Variables.emptyEntry font.pixelSize : Fonts.fontPixelTextRectExtra - color : Colors.offWhite + color : _root.rejections[index] ? Colors.red : Colors.offWhite visible : isCalTime } } Index: sources/gui/qml/pages/settings/SettingsCalibrationSettings.qml =================================================================== diff -u -r8350b02fa06da7cb6d7f085f88f55bf505ae78df -rb2a0a682b4f9bcf52352e6cb6206ba10f09c7847 --- sources/gui/qml/pages/settings/SettingsCalibrationSettings.qml (.../SettingsCalibrationSettings.qml) (revision 8350b02fa06da7cb6d7f085f88f55bf505ae78df) +++ sources/gui/qml/pages/settings/SettingsCalibrationSettings.qml (.../SettingsCalibrationSettings.qml) (revision b2a0a682b4f9bcf52352e6cb6206ba10f09c7847) @@ -11,8 +11,13 @@ SettingsBase { id: _root itemIndex : SettingsStack.CalibrationSettings confirmVisible : false + notificationAnchor { + bottom : _root.bottom +// bottomMargin : Variables.defaultMargin + verticalCenter : undefined + } - Component.onCompleted: vCalibrationSettings.refreshList(_componentComboBox.currentIndex) + onVisibleChanged: if ( visible ) vCalibrationSettings.refreshList(_componentComboBox.currentIndex) function openDialog( vIndex ) { _calibrationDialog.openDialog( _componentComboBox.currentIndex, @@ -56,7 +61,7 @@ contentItem: Item { id: _contentItem anchors.fill : parent - readonly property int contentWith: _listView.width - Variables.defaultMargin //* 2 // added margin to have scroll bar show on right + readonly property int contentWith: _listView.width - Variables.defaultMargin // added margin to have scroll bar show on right readonly property bool largePayload : vCalibrationSettings.columnTitle.length > 9 readonly property int titleWidth : contentWith * ( largePayload ? 0.17 : 0.3 ) readonly property int componentWidth: contentWith * ( largePayload ? 0.07 : 0.1 ) @@ -182,4 +187,18 @@ ScrollBar { flickable: _listView } } } + + Connections { target: vCalibrationSettings + function onAdjustmentTriggered ( vValue ) { + if ( vCalibrationSettings.adjustment_Accepted ) { + _root.notificationText = "" + _calibrationDialog.close() + } + else { + if ( ! _calibrationDialog.visible ) { + _root.notificationText = qsTr("%1: %2").arg(_componentComboBox.displayText).arg(vCalibrationSettings.text()) + } + } + } + } } Index: sources/model/dd/adjustment/settings/MAdjustDDCalibrationPressureRecordResponse.cpp =================================================================== diff -u -r8350b02fa06da7cb6d7f085f88f55bf505ae78df -rb2a0a682b4f9bcf52352e6cb6206ba10f09c7847 --- sources/model/dd/adjustment/settings/MAdjustDDCalibrationPressureRecordResponse.cpp (.../MAdjustDDCalibrationPressureRecordResponse.cpp) (revision 8350b02fa06da7cb6d7f085f88f55bf505ae78df) +++ sources/model/dd/adjustment/settings/MAdjustDDCalibrationPressureRecordResponse.cpp (.../MAdjustDDCalibrationPressureRecordResponse.cpp) (revision b2a0a682b4f9bcf52352e6cb6206ba10f09c7847) @@ -17,7 +17,7 @@ int index = 0; // message data start position if ( ! GetValue(vByteArray, index, _data.mAccepted )) goto lError; if ( ! GetValue(vByteArray, index, _data.mReason )) goto lError; - if ( ! GetValue(vByteArray, index, _data.mIndex )) goto lError; + if ( ! GetValue(vByteArray, index, _data.mIndex )) goto lError; if ( ! GetValue(vByteArray, index, _data.mGainRejectReason )) goto lError; if ( ! GetValue(vByteArray, index, _data.mOffsetRejectReason )) goto lError; if ( ! GetValue(vByteArray, index, _data.mCalibrationTimeRejectReason )) goto lError; Index: sources/model/dg/adjustment/settings/MAdjustDGRequests.h =================================================================== diff -u -r8350b02fa06da7cb6d7f085f88f55bf505ae78df -rb2a0a682b4f9bcf52352e6cb6206ba10f09c7847 --- sources/model/dg/adjustment/settings/MAdjustDGRequests.h (.../MAdjustDGRequests.h) (revision 8350b02fa06da7cb6d7f085f88f55bf505ae78df) +++ sources/model/dg/adjustment/settings/MAdjustDGRequests.h (.../MAdjustDGRequests.h) (revision b2a0a682b4f9bcf52352e6cb6206ba10f09c7847) @@ -93,9 +93,9 @@ public: quint32 mIndex = 0; -// QString toString() { -// return toString({ mIndex }); -// } + QString toString() { + return toString({ mIndex }); + } static QString toString(const QVariantList &vParameters) { return MModel::toString("DDCalPressureReq", vParameters); @@ -127,14 +127,14 @@ float mOffset = 0; quint32 mCalibrationTime = 0; -// QString toString() { -// return toString({ -// mIndex , -// mGain , -// mOffset , -// mCalibrationTime , -// }); -// } + QString toString() { + return toString({ + mIndex , + mGain , + mOffset , + mCalibrationTime , + }); + } static QString toString(const QVariantList &vParameters) { return MModel::toString("AdjustDDCalPressureReq", vParameters); Index: sources/view/settings/VCalibrationSettings.cpp =================================================================== diff -u -r8350b02fa06da7cb6d7f085f88f55bf505ae78df -rb2a0a682b4f9bcf52352e6cb6206ba10f09c7847 --- sources/view/settings/VCalibrationSettings.cpp (.../VCalibrationSettings.cpp) (revision 8350b02fa06da7cb6d7f085f88f55bf505ae78df) +++ sources/view/settings/VCalibrationSettings.cpp (.../VCalibrationSettings.cpp) (revision b2a0a682b4f9bcf52352e6cb6206ba10f09c7847) @@ -19,10 +19,17 @@ { eRole_Title , "title" }, { eRole_Component , "component" }, { eRole_Payload , "payload" }, - { eRole_Received , "received" }, + { eRole_Rejections , "rejections" }, + { eRole_Received , "received" }, }); } +/*! + * \brief VCalibrationSettings::initList + * \details Initializes the list for the payload and rejection reasons + * \param vTitles - list of column titles + * \return returns empty list the size of the number of columns +*/ QVariantList View::VCalibrationSettings::initList(const QStringList &vTitles) { columnTitle ( vTitles ) ; @@ -34,17 +41,25 @@ mInitValues.append(0.0); } - rejectionReasons(mInitValues); - return mInitValues; } +/*! + * \brief VCalibrationSettings::getEpochUTC + * \details Gets current time as UTC epoch + * \return returns epoch +*/ quint32 View::VCalibrationSettings::getEpochUTC() { const QDateTime currentDateTimeUTC = QDateTime::currentDateTime(); return currentDateTimeUTC.toSecsSinceEpoch(); } +/*! + * \brief VCalibrationSettings::refreshList + * \details Refresh model with current selected index of calibration records + * \param vIndex - calibration record index to recreate the model +*/ void View::VCalibrationSettings::refreshList (int vIndex) { _columnTitle.clear(); @@ -55,18 +70,18 @@ { QVariantList initPayloadValues = initList ( { tr("Gain"), tr("Offset"), tr("Cal Time") } ) ; // DD Pressure sensors - _calibrationList.appendRow( {{ eRole_Title, tr("Hydraulics Outlet Pressure")}, { eRole_Component, tr("D9" )}, {eRole_Payload, initPayloadValues }, {eRole_Received, false }}); - _calibrationList.appendRow( {{ eRole_Title, tr("Dry Bicarb Pressure")}, { eRole_Component, tr("D66")}, {eRole_Payload, initPayloadValues }, {eRole_Received, false }}); - _calibrationList.appendRow( {{ eRole_Title, tr("Spent Dialysate Pressure")}, { eRole_Component, tr("D51")}, {eRole_Payload, initPayloadValues }, {eRole_Received, false }}); - _calibrationList.appendRow( {{ eRole_Title, tr("Fresh Dialysate Pressure")}, { eRole_Component, tr("D15")}, {eRole_Payload, initPayloadValues }, {eRole_Received, false }}); - _calibrationList.appendRow( {{ eRole_Title, tr("Transmembrane Pressure")}, { eRole_Component, tr("D41")}, {eRole_Payload, initPayloadValues }, {eRole_Received, false }}); - _calibrationList.appendRow( {{ eRole_Title, tr("D87 Pressure Sensor")}, { eRole_Component, tr("D87")}, {eRole_Payload, initPayloadValues }, {eRole_Received, false }}); + _calibrationList.appendRow( {{ eRole_Title, tr("Hydraulics Outlet Pressure")}, { eRole_Component, tr("D9" )}, {eRole_Payload, initPayloadValues }, {eRole_Rejections, initPayloadValues }, {eRole_Received, false }}); + _calibrationList.appendRow( {{ eRole_Title, tr("Dry Bicarb Pressure")}, { eRole_Component, tr("D66")}, {eRole_Payload, initPayloadValues }, {eRole_Rejections, initPayloadValues }, {eRole_Received, false }}); + _calibrationList.appendRow( {{ eRole_Title, tr("Spent Dialysate Pressure")}, { eRole_Component, tr("D51")}, {eRole_Payload, initPayloadValues }, {eRole_Rejections, initPayloadValues }, {eRole_Received, false }}); + _calibrationList.appendRow( {{ eRole_Title, tr("Fresh Dialysate Pressure")}, { eRole_Component, tr("D15")}, {eRole_Payload, initPayloadValues }, {eRole_Rejections, initPayloadValues }, {eRole_Received, false }}); + _calibrationList.appendRow( {{ eRole_Title, tr("Transmembrane Pressure")}, { eRole_Component, tr("D41")}, {eRole_Payload, initPayloadValues }, {eRole_Rejections, initPayloadValues }, {eRole_Received, false }}); + _calibrationList.appendRow( {{ eRole_Title, tr("D87 Pressure Sensor")}, { eRole_Component, tr("D87")}, {eRole_Payload, initPayloadValues }, {eRole_Rejections, initPayloadValues }, {eRole_Received, false }}); // FP Pressure sensors - _calibrationList.appendRow( {{ eRole_Title, tr("Water inlet pressure before regulator")}, { eRole_Component, tr("M3") }, {eRole_Payload, initPayloadValues }, {eRole_Received, false }}); - _calibrationList.appendRow( {{ eRole_Title, tr("Water inlet pressure after regulator")}, { eRole_Component, tr("P8") }, {eRole_Payload, initPayloadValues }, {eRole_Received, false }}); - _calibrationList.appendRow( {{ eRole_Title, tr("Water inlet pressure before the cond. sensor")}, { eRole_Component, tr("P13")}, {eRole_Payload, initPayloadValues }, {eRole_Received, false }}); - _calibrationList.appendRow( {{ eRole_Title, tr("Pressure before the RO filter")}, { eRole_Component, tr("P17")}, {eRole_Payload, initPayloadValues }, {eRole_Received, false }}); - _calibrationList.appendRow( {{ eRole_Title, tr("Pressure after the RO filter")}, { eRole_Component, tr("P46")}, {eRole_Payload, initPayloadValues }, {eRole_Received, false }}); + _calibrationList.appendRow( {{ eRole_Title, tr("Water inlet pressure before regulator")}, { eRole_Component, tr("M3") }, {eRole_Payload, initPayloadValues }, {eRole_Rejections, initPayloadValues }, {eRole_Received, false }}); + _calibrationList.appendRow( {{ eRole_Title, tr("Water inlet pressure after regulator")}, { eRole_Component, tr("P8") }, {eRole_Payload, initPayloadValues }, {eRole_Rejections, initPayloadValues }, {eRole_Received, false }}); + _calibrationList.appendRow( {{ eRole_Title, tr("Water inlet pressure before the cond. sensor")}, { eRole_Component, tr("P13")}, {eRole_Payload, initPayloadValues }, {eRole_Rejections, initPayloadValues }, {eRole_Received, false }}); + _calibrationList.appendRow( {{ eRole_Title, tr("Pressure before the RO filter")}, { eRole_Component, tr("P17")}, {eRole_Payload, initPayloadValues }, {eRole_Rejections, initPayloadValues }, {eRole_Received, false }}); + _calibrationList.appendRow( {{ eRole_Title, tr("Pressure after the RO filter")}, { eRole_Component, tr("P46")}, {eRole_Payload, initPayloadValues }, {eRole_Rejections, initPayloadValues }, {eRole_Received, false }}); break; } case eTemperature : @@ -141,14 +156,23 @@ doRequestRecords(vIndex); } +/*! + * \brief VCalibrationSettings::refreshList + * \details Helper method to request all the sensors per calibration record + * \param vIndex - calibration record index +*/ void View::VCalibrationSettings::doRequestRecords(int vIndex) { switch (vIndex) { case ePressure : { - DDCalibrationPressureRequestData data; - data.mIndex = 2; - emit didAdjustment(data); + // TODO Update 10 weit hFEW ENUM + for (int i = 0; i <= 10; i++) { + DDCalibrationPressureRequestData data; + data.mIndex = i; + emit didAdjustment(data); + } + break; } case eTemperature : @@ -172,6 +196,13 @@ } } +/*! + * \brief VCalibrationSettings::doAdjustment + * \details Adjustment to update calibration record + * \param vIndex - calibration record index + * \param vSensorIndex - sensor index + * \param index - payload +*/ void View::VCalibrationSettings::doAdjustment(int vIndex, int vSensorIndex, QVariantList vPayload) @@ -197,7 +228,7 @@ if (vPayload.size() < 3) { goto invalid; } AdjustDDCalibrationPressureRequestData data; - data.mIndex = vIndex ; + data.mIndex = vSensorIndex ; data.mGain = vPayload[eGain] .toFloat(&result) ; ok &= result; data.mOffset = vPayload[eOffset] .toFloat(&result) ; @@ -234,33 +265,56 @@ return; invalid: - qWarning() << "Invalid calibration payload:" << vPayload; + qWarning() << "Invalid calibration payload: " << vPayload; } +/*! + * \brief VCalibrationSettings::clearRejectionReason + * \details Slot to clear rejection reason when user is editing a rejected parameter + * \param vIndex - rejection reason index + * \param vSensorIndex - sensor index + */ +void View::VCalibrationSettings::clearRejectionReason(int vIndex, int vSensorIndex) +{ + if (vIndex < 0 || vIndex >= _columnTitle.size()) + return; + + QVariantList rejectionList = _calibrationList.data( _calibrationList.index(vSensorIndex,0) ,eRole_Rejections).toList(); + rejectionList[vIndex] = 0; + _calibrationList.updateData( vSensorIndex, eRole_Rejections, rejectionList); + emit didModelChange(); +} + +/*! + * \brief VCalibrationSettings::onActionReceive + * \details Slot of pressure getter response + * \param vData - DDCalibrationPressureResponseData + */ void View::VCalibrationSettings::onActionReceive(const DDCalibrationPressureResponseData &vData) { adjustment_Accepted ( vData.mAccepted ); adjustment_Reason ( vData.mReason ); _calibrationList.updateData( vData.mIndex, eRole_Payload, QVariantList ({ vData.mGain, vData.mOffset, vData.mCalTime })); - qDebug() << "DDCalibrationPressureResponseData" ; - qDebug() << vData.mIndex ; - qDebug() << vData.mGain ; + _calibrationList.updateData( vData.mIndex, eRole_Received, true ); + adjustment ( true ); } +/*! + * \brief VCalibrationSettings::onActionReceive + * \details Slot of pressure setter response + * \param vData - AdjustDDCalibrationPressureResponseData + */ void View::VCalibrationSettings::onActionReceive(const AdjustDDCalibrationPressureResponseData &vData) { adjustment_Accepted ( vData.mAccepted ); adjustment_Reason ( vData.mReason ); - qDebug() << "AdjustDDCalibrationPressureResponseData" ; - qDebug() << vData.mIndex ; - - rejectionReasons ({ vData.mGainRejectReason , - vData.mOffsetRejectReason , - vData.mCalibrationTimeRejectReason }) ; - + _calibrationList.updateData( vData.mIndex, eRole_Rejections, QVariantList ({ vData.mGainRejectReason, + vData.mOffsetRejectReason, + vData.mCalibrationTimeRejectReason })); + emit didModelChange(); adjustment ( true ); } Index: sources/view/settings/VCalibrationSettings.h =================================================================== diff -u -r8350b02fa06da7cb6d7f085f88f55bf505ae78df -rb2a0a682b4f9bcf52352e6cb6206ba10f09c7847 --- sources/view/settings/VCalibrationSettings.h (.../VCalibrationSettings.h) (revision 8350b02fa06da7cb6d7f085f88f55bf505ae78df) +++ sources/view/settings/VCalibrationSettings.h (.../VCalibrationSettings.h) (revision b2a0a682b4f9bcf52352e6cb6206ba10f09c7847) @@ -30,6 +30,7 @@ eRole_Title = Qt::UserRole + 1 , eRole_Component , eRole_Payload , + eRole_Rejections , eRole_Received , } DataRole; @@ -49,16 +50,16 @@ // The property adjustment_Triggered has to be always true // and to always trigger the change event to work as a notifier for GUI TRIGGER( bool , adjustment , 0 ) +// TRIGGER( bool , rejected , 0 ) + PROPERTY(QStringList , columnTitle , {}) - PROPERTY(QVariantList , rejectionReasons , {}) Q_PROPERTY(MListModel* model READ model NOTIFY didModelChange) VIEW_DEC_CLASS(VCalibrationSettings); -// VIEW_DEC_CLASS_ADJUSTMENT(VCalibrationSettings, ); VIEW_DEC_SLOT(DDCalibrationPressureResponseData ) VIEW_DEC_SLOT(AdjustDDCalibrationPressureResponseData ) @@ -74,8 +75,8 @@ public slots: void refreshList (int vIndex); void doAdjustment(int vIndex, int vSensorIndex, QVariantList vPayload); + void clearRejectionReason(int vIndex, int vSensorIndex); - signals: void didModelChange(); void didAdjustment(const DDCalibrationPressureRequestData &vData);