Index: denali.pro.user =================================================================== diff -u -rf8321d4b6a5489f797122321a4821b4eeaaa50cb -r0583a63307936f09e184dfe16acca25f9e3fd81c --- denali.pro.user (.../denali.pro.user) (revision f8321d4b6a5489f797122321a4821b4eeaaa50cb) +++ denali.pro.user (.../denali.pro.user) (revision 0583a63307936f09e184dfe16acca25f9e3fd81c) @@ -1,14 +1,14 @@ - + EnvironmentId {67370740-e20f-4fc6-be45-6652e866a8bf} ProjectExplorer.Project.ActiveTarget - 1 + 0 ProjectExplorer.Project.EditorSettings @@ -89,7 +89,7 @@ Desktop Qt 5.12.5 GCC 64bit Desktop Qt 5.12.5 GCC 64bit qt.qt5.5125.gcc_64_kit - 1 + 9 0 0 @@ -1185,7 +1185,7 @@ false true - /home/denali/Projects/tmp/build/denali-Desktop_Qt_5_12_5_GCC_64bit-Release + /home/denali/Projects/tmp/build/unittest/tst_views 1 @@ -1196,7 +1196,7 @@ Qt 5.12.5 (iMX8) Qt 5.12.5 (iMX8) {5d6458ef-f917-4aef-a092-c77bbe106149} - 1 + 0 0 0 Index: sources/canbus/MessageDispatcher.cpp =================================================================== diff -u -rb61d8a3e01fef66eee8095c9cddf835d9bb32b66 -r0583a63307936f09e184dfe16acca25f9e3fd81c --- sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision b61d8a3e01fef66eee8095c9cddf835d9bb32b66) +++ sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision 0583a63307936f09e184dfe16acca25f9e3fd81c) @@ -333,8 +333,8 @@ */ void MessageDispatcher::onAdjustment(const ConfirmTreatmentRequestData &vData) { - Q_UNUSED(vData) QVariantList mData; + mData += vData.request; onActionTransmit(GuiActionType::ID_ConfirmTreatmentReq, mData); } Index: sources/canbus/MessageGlobals.h =================================================================== diff -u -rb61d8a3e01fef66eee8095c9cddf835d9bb32b66 -r0583a63307936f09e184dfe16acca25f9e3fd81c --- sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision b61d8a3e01fef66eee8095c9cddf835d9bb32b66) +++ sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision 0583a63307936f09e184dfe16acca25f9e3fd81c) @@ -80,7 +80,7 @@ // ---- {Gui::GuiActionType::ID_StartTreatmentReq , 1 * 4 }, // 1 parameters each 4bytes {Gui::GuiActionType::ID_StartTreatmentRsp , 2 * 4 }, // 2 parameters each 4bytes - {Gui::GuiActionType::ID_ConfirmTreatmentReq , 0 }, + {Gui::GuiActionType::ID_ConfirmTreatmentReq , 1 * 4 }, // 1 parameters each 4bytes {Gui::GuiActionType::ID_EndTreatmentReq , 0 }, // ---- Index: sources/canbus/MessageInterpreter.cpp =================================================================== diff -u -rb61d8a3e01fef66eee8095c9cddf835d9bb32b66 -r0583a63307936f09e184dfe16acca25f9e3fd81c --- sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision b61d8a3e01fef66eee8095c9cddf835d9bb32b66) +++ sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 0583a63307936f09e184dfe16acca25f9e3fd81c) @@ -268,7 +268,7 @@ break; case Gui::GuiActionType::ID_ConfirmTreatmentReq: - if ( length != 0 ) { logInvalidLength(vActionId); return false; } + if ( ! length ) { logInvalidLength(vActionId); return false; } vPayload = Format::fromVariant(vData); LOG_EVENT(ConfirmTreatmentRequestData::toString(vData)); break; Index: sources/gui/qml/components/Slider.qml =================================================================== diff -u -rb61d8a3e01fef66eee8095c9cddf835d9bb32b66 -r0583a63307936f09e184dfe16acca25f9e3fd81c --- sources/gui/qml/components/Slider.qml (.../Slider.qml) (revision b61d8a3e01fef66eee8095c9cddf835d9bb32b66) +++ sources/gui/qml/components/Slider.qml (.../Slider.qml) (revision 0583a63307936f09e184dfe16acca25f9e3fd81c) @@ -136,9 +136,11 @@ progressRectClicked() } onPressed: { + setValue(vMouseEvent.x) _root.pressed(vMouseEvent) } onReleased: { + setValue(vMouseEvent.x) _root.released(vMouseEvent) } } @@ -164,6 +166,12 @@ onClicked: { setValue(vMouseEvent.x) } + onPressed: { + setValue(vMouseEvent.x) + } + onReleased: { + setValue(vMouseEvent.x) + } Rectangle { id: _handler property real diameter : Variables.progressbarHandler Index: sources/gui/qml/globals/Variables.qml =================================================================== diff -u -r1a7d3535b65d7edf23bc6638c4113e4b55c49c2a -r0583a63307936f09e184dfe16acca25f9e3fd81c --- sources/gui/qml/globals/Variables.qml (.../Variables.qml) (revision 1a7d3535b65d7edf23bc6638c4113e4b55c49c2a) +++ sources/gui/qml/globals/Variables.qml (.../Variables.qml) (revision 0583a63307936f09e184dfe16acca25f9e3fd81c) @@ -86,7 +86,7 @@ readonly property int cTreatmentTblMargin : 20 readonly property int cTreatmentSubTblHeight : 50 readonly property int cTreatmentSubTblWidth : 500 - readonly property int createTreatmentSliderMargin : 50 + readonly property int createTreatmentSliderMargin : 25 readonly property int notificationHeight : 50 readonly property int notificationIconSize : 36 Index: sources/gui/qml/pages/treatment/TreatmentCreate.qml =================================================================== diff -u -r1a7d3535b65d7edf23bc6638c4113e4b55c49c2a -r0583a63307936f09e184dfe16acca25f9e3fd81c --- sources/gui/qml/pages/treatment/TreatmentCreate.qml (.../TreatmentCreate.qml) (revision 1a7d3535b65d7edf23bc6638c4113e4b55c49c2a) +++ sources/gui/qml/pages/treatment/TreatmentCreate.qml (.../TreatmentCreate.qml) (revision 0583a63307936f09e184dfe16acca25f9e3fd81c) @@ -43,6 +43,7 @@ Flickable { id: _flickable + objectName: "TreatmentCreateFlickable" anchors.top: _topMenuBar.bottom anchors.left: parent.left anchors.bottom: parent.bottom @@ -204,9 +205,11 @@ SliderCreateTreatment { id: _salineBolus - objectName: "_salineBolusRect" + objectName: "_salineBolus" + sliderObjectName: objectName + "Slider" + selectedValueObjectName: objectName + "Value" text: "Saline Bolus" - units: qsTr(" mL") + units: qsTr("mL") min: vTreatmentCreate.salineBolusVolumeMin max: vTreatmentCreate.salineBolusVolumeMax step: vTreatmentCreate.salineBolusVolumeRes Index: sources/gui/qml/pages/treatment/TreatmentStack.qml =================================================================== diff -u -rb61d8a3e01fef66eee8095c9cddf835d9bb32b66 -r0583a63307936f09e184dfe16acca25f9e3fd81c --- sources/gui/qml/pages/treatment/TreatmentStack.qml (.../TreatmentStack.qml) (revision b61d8a3e01fef66eee8095c9cddf835d9bb32b66) +++ sources/gui/qml/pages/treatment/TreatmentStack.qml (.../TreatmentStack.qml) (revision 0583a63307936f09e184dfe16acca25f9e3fd81c) @@ -90,7 +90,7 @@ } TreatmentConfirm { id: _treatmentConfirm - onClickedBack : {vTreatmentCreate.onRequestPop() } + onClickedBack : {vTreatmentCreate.onCancelConfirmParameters() } onClickedConfirm : {vTreatmentCreate.onFinishedConfirm(); } } Index: sources/main.h =================================================================== diff -u -rb61d8a3e01fef66eee8095c9cddf835d9bb32b66 -r0583a63307936f09e184dfe16acca25f9e3fd81c --- sources/main.h (.../main.h) (revision b61d8a3e01fef66eee8095c9cddf835d9bb32b66) +++ sources/main.h (.../main.h) (revision 0583a63307936f09e184dfe16acca25f9e3fd81c) @@ -16,7 +16,7 @@ // Qt #include - +#include // Project // TODO : A singleton parent class needs to be created @@ -241,6 +241,7 @@ #define REGISTER_TYPE(vTYPE) \ qmlRegisterType < vTYPE > (#vTYPE, 0, 1, #vTYPE); #define GET_VARIABLE_NAME(VARIABLE) (#VARIABLE) +#define DEBUG_TREATMENT_PARAMETER(NAME, VARIABLE) // qDebug() << NAME << VARIABLE; #define TREATMENT_PARAMETER(TYPE, NAME, DEFVALUE, MIN, MAX, RES) \ private: \ TYPE _##NAME = DEFVALUE; \ @@ -266,15 +267,13 @@ WRITE NAME##Res \ NOTIFY NAME##ResChanged) \ void set_##NAME(const TYPE &p##NAME) { \ - static bool init = false; \ - if ( !init || _##NAME != p##NAME ) { \ - init = true; \ + if ( !is##NAME##Set || _##NAME != p##NAME ) { \ _##NAME = p##NAME; \ - DEBUG_PROPERTY_CHANGED(NAME, _) \ is##NAME##Set = true; \ emit NAME##Changed(_##NAME); \ onUserModifiedParameters(); \ } \ + DEBUG_TREATMENT_PARAMETER(#NAME, _##NAME) \ } \ TYPE NAME##Min() const { return _##NAME##Min; } \ void NAME##Min(const TYPE &p##NAME##Min) \ Index: sources/model/hd/adjustment/MTreatmentAdjustRequests.h =================================================================== diff -u -rb61d8a3e01fef66eee8095c9cddf835d9bb32b66 -r0583a63307936f09e184dfe16acca25f9e3fd81c --- sources/model/hd/adjustment/MTreatmentAdjustRequests.h (.../MTreatmentAdjustRequests.h) (revision b61d8a3e01fef66eee8095c9cddf835d9bb32b66) +++ sources/model/hd/adjustment/MTreatmentAdjustRequests.h (.../MTreatmentAdjustRequests.h) (revision 0583a63307936f09e184dfe16acca25f9e3fd81c) @@ -328,11 +328,15 @@ class MConfirmTreatmentReq : public MModel { public: - + enum Options { + eCancel = 0, + eConfirm = 1 + }; + Options request = eConfirm; // coco begin validated : Has been validated manually. // This object is used statically for now, kept the logic for later usage. QString toString() { - return toString({}); + return toString({request}); } // coco end static QString toString(const QVariantList &vParameters) { Index: sources/view/VTreatmentCreate.cpp =================================================================== diff -u -r1a7d3535b65d7edf23bc6638c4113e4b55c49c2a -r0583a63307936f09e184dfe16acca25f9e3fd81c --- sources/view/VTreatmentCreate.cpp (.../VTreatmentCreate.cpp) (revision 1a7d3535b65d7edf23bc6638c4113e4b55c49c2a) +++ sources/view/VTreatmentCreate.cpp (.../VTreatmentCreate.cpp) (revision 0583a63307936f09e184dfe16acca25f9e3fd81c) @@ -457,6 +457,7 @@ saveNewTreatment(obj); // Tell FW we confirm + confirmTreatmentRequest.request = ConfirmTreatmentRequestData::eConfirm; emit requestConfirm(confirmTreatmentRequest); // no FW response required @@ -739,7 +740,6 @@ emit rinsebackFlowRate_ValidationFailed(uiRejections.value(OUT_OF_RANGE)); success = false; } - return success; } @@ -867,7 +867,6 @@ emit requestSelectParameters(startTreatmentRequest); } - /** * @brief VCreateTreatment::onCancelSelectingParameters * Sends a request to FW to cancel selecting parameters @@ -880,6 +879,19 @@ } /** + * @brief VCreateTreatment::onCancelConfirmParameters + * Notifies FW the user has cancelled confirming the treatment parameters + */ +void VTreatmentCreate::onCancelConfirmParameters() +{ + // Tell FW we cancel confirm + qDebug() << "Telling FW user is cancelling confirm treatment parameters..."; + confirmTreatmentRequest.request = ConfirmTreatmentRequestData::eCancel; + emit requestConfirm(confirmTreatmentRequest); + goToNextPage(false); +} + +/** * @brief VCreateTreatment::onRequestPop * Navigates backward in the create treatment process. */ Index: sources/view/VTreatmentCreate.h =================================================================== diff -u -r1a7d3535b65d7edf23bc6638c4113e4b55c49c2a -r0583a63307936f09e184dfe16acca25f9e3fd81c --- sources/view/VTreatmentCreate.h (.../VTreatmentCreate.h) (revision 1a7d3535b65d7edf23bc6638c4113e4b55c49c2a) +++ sources/view/VTreatmentCreate.h (.../VTreatmentCreate.h) (revision 0583a63307936f09e184dfe16acca25f9e3fd81c) @@ -164,6 +164,7 @@ QStringList getOperatingParameterNames(); QStringList getOperatingParameterValues(); void onSelectingParameters(); + void onCancelConfirmParameters(); void onCancelSelectingParameters(); void onRequestPop(); }; Index: unittests/tst_views.cpp =================================================================== diff -u -rb61d8a3e01fef66eee8095c9cddf835d9bb32b66 -r0583a63307936f09e184dfe16acca25f9e3fd81c --- unittests/tst_views.cpp (.../tst_views.cpp) (revision b61d8a3e01fef66eee8095c9cddf835d9bb32b66) +++ unittests/tst_views.cpp (.../tst_views.cpp) (revision 0583a63307936f09e184dfe16acca25f9e3fd81c) @@ -82,7 +82,7 @@ if (i != 4) view.set_heparinBolusVolume(view.heparinBolusVolumeMax()); if (i != 5) view.set_heparinStopTime(view.heparinStopTimeMax()); - if (i != 6) view.set_salineBolusVolume(0); + if (i != 6) view.set_salineBolusVolume(view.salineBolusVolumeMax()); if (i != 7) view.set_acidConcentrate(0); if (i != 8) view.set_bicarbonateConcentrate(0); @@ -124,7 +124,7 @@ QCOMPARE(view.get_heparinBolusVolume(),view.heparinBolusVolumeMax()); QCOMPARE(view.get_heparinStopTime(),view.heparinStopTimeMax()); - QCOMPARE(view.get_salineBolusVolume(), quint32(0)); + QCOMPARE(view.get_salineBolusVolume(), view.salineBolusVolumeMax()); QCOMPARE(view.get_acidConcentrate(), quint32(0)); QCOMPARE(view.get_bicarbonateConcentrate(), quint32(0)); @@ -318,7 +318,7 @@ case 4: view.set_heparinBolusVolume(view.heparinBolusVolumeMax()+1); break; case 5: view.set_heparinStopTime(view.heparinStopTimeMax()+1); break; - case 6: view.set_salineBolusVolume(view.salineBolusOptions().length()); break; + case 6: view.set_salineBolusVolume(view.salineBolusVolumeMax()+1); break; case 7: view.set_acidConcentrate(view.acidConcentrateOptions().length()); break; case 8: view.set_bicarbonateConcentrate(view.bicarbonateConcentrateOptions().length()); break; @@ -407,14 +407,12 @@ view.durationMax(val); QCOMPARE(val, view.durationMax()); - QStringList options = QStringList() << "100 mL" << "200 mL" << "300 mL"; - view.salineBolusOptions(options); options.append(" "); - view.salineBolusOptions(options); - view.salineBolusOptions(options); - QCOMPARE(options, view.salineBolusOptions()); + val = 300; view.salineBolusVolumeMax(val); ++val; + view.salineBolusVolumeMax(val); + view.salineBolusVolumeMax(val); + QCOMPARE(val, view.salineBolusVolumeMax()); - - options = QStringList() << "08-1251-1" << "08-2251-0" << "08-3251-9"; + QStringList options = QStringList() << "08-1251-1" << "08-2251-0" << "08-3251-9"; view.acidConcentrateOptions(options); options.append(" "); view.acidConcentrateOptions(options); view.acidConcentrateOptions(options); @@ -654,36 +652,34 @@ { // 0 = OK, 1,2,3 ... parameter is not OK QVariantList messageData; - if (i == 0) messageData.append(1); else messageData.append(0); - if (i == 1) messageData.append(1); else messageData.append(0); - if (i == 2) messageData.append(1); else messageData.append(0); - if (i == 3) messageData.append(1); else messageData.append(0); - if (i == 4) messageData.append(1); else messageData.append(0); - if (i == 5) messageData.append(1); else messageData.append(0); - if (i == 6) messageData.append(1); else messageData.append(0); - if (i == 7) messageData.append(1); else messageData.append(0); - if (i == 8) messageData.append(1); else messageData.append(0); - if (i == 9) messageData.append(1); else messageData.append(0); - if (i == 10) messageData.append(1); else messageData.append(0); - if (i == 11) messageData.append(1); else messageData.append(0); - if (i == 12) messageData.append(1); else messageData.append(0); - if (i == 13) messageData.append(1); else messageData.append(0); - if (i == 14) messageData.append(1); else messageData.append(0); - if (i == 15) messageData.append(1); else messageData.append(0); - if (i == 16) messageData.append(1); else messageData.append(0); - if (i == 17) messageData.append(1); else messageData.append(0); - QVERIFY(!view.onFWValidationResponse(action, messageData)); + AdjustTreatmentParametersResponseData respData; + if (i == 0) respData.requestValid = 1; else respData.requestValid = 0; + if (i == 1) respData.bloodFlowRate = 1; else respData.bloodFlowRate = 0; + if (i == 2) respData.dialysateFlowRate = 1; else respData.dialysateFlowRate = 0; + if (i == 3) respData.duration = 1; else respData.duration = 0; + if (i == 4) respData.heparinStopTime = 1; else respData.heparinStopTime = 0; + if (i == 5) respData.salineBolus = 1; else respData.salineBolus = 0; + if (i == 6) respData.acidConcentrate = 1; else respData.acidConcentrate = 0; + if (i == 7) respData.bicarbonateConcentrate = 1; else respData.bicarbonateConcentrate = 0; + if (i == 8) respData.dialyzerType = 1; else respData.dialyzerType = 0; + if (i == 9) respData.bloodPressureMeasureInterval = 1; else respData.bloodPressureMeasureInterval= 0; + if (i == 10) respData.rinsebackFlowRate = 1; else respData.rinsebackFlowRate = 0; + if (i == 11) respData.arterialPressureLimitLow = 1; else respData.arterialPressureLimitLow = 0; + if (i == 12) respData.arterialPressureLimitHigh = 1; else respData.arterialPressureLimitHigh = 0; + if (i == 13) respData.venousPressureLimitLow = 1; else respData.venousPressureLimitLow = 0; + if (i == 14) respData.venousPressureLimitHigh = 1; else respData.venousPressureLimitHigh = 0; + if (i == 15) respData.heparinDispensingRate = 1; else respData.heparinDispensingRate = 0; + if (i == 16) respData.heparinBolusVolume = 1; else respData.heparinBolusVolume = 0; + if (i == 17) respData.dialysateTemp = 1; else respData.dialysateTemp = 0; + QVERIFY(!view.onFWValidationResponse(respData)); } AdjustTreatmentParametersRequestData dataBackup = view.treatmentData; - QVariantList validMessageData; - for (int i = 0; i < 18; ++i) { validMessageData.append(0); } + AdjustTreatmentParametersResponseData respData; - QVERIFY(!view.onFWValidationResponse(GuiActionType::ID_CreateTreatmentReq, validMessageData)); + QVERIFY(view.onFWValidationResponse(respData)); - QVERIFY(view.onFWValidationResponse(GuiActionType::ID_CreateTreatmentRsp, validMessageData)); - view.saveTreatmentProfile(false); QVERIFY(!view._saveTreatmentProfile); view.onFinishedConfirm(); Index: unittests/tst_views.h =================================================================== diff -u -rb61d8a3e01fef66eee8095c9cddf835d9bb32b66 -r0583a63307936f09e184dfe16acca25f9e3fd81c --- unittests/tst_views.h (.../tst_views.h) (revision b61d8a3e01fef66eee8095c9cddf835d9bb32b66) +++ unittests/tst_views.h (.../tst_views.h) (revision 0583a63307936f09e184dfe16acca25f9e3fd81c) @@ -30,15 +30,14 @@ QString datetimeFormat = "MM.dd.yyyy_HH.mm.ss"; void VCreateTreatment_init_ranges(QJsonObject &obj); - void VCreateTreatment_simulate_valid_parameters(View::VCreateTreatment &view); + void VCreateTreatment_simulate_valid_parameters(View::VTreatmentCreate &view); private slots: void VTreatmentAdjustmentsResponse_text_NoReason(); void VTreatmentAdjustmentsResponse_text_WAReason(); void VTreatmentAdjustmentUltrafiltrationState_text(); - void VCreateTreatment_simulate_valid_parameters(View::VTreatmentCreate &view); void VCreateTreatment_validation(); void VCreateTreatment_validation_ranges(); void VCreateTreatment_save();