Index: sources/canbus/MessageDispatcher.cpp =================================================================== diff -u -r2d0bacfbe1b70055247eb40743405a5f9acb15e3 -rb5afbc61af03dd2e84acf8439cb6be1f022a2921 --- sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision 2d0bacfbe1b70055247eb40743405a5f9acb15e3) +++ sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision b5afbc61af03dd2e84acf8439cb6be1f022a2921) @@ -770,6 +770,20 @@ onActionTransmit(GuiActionType::ID_UIPostFinalResultData, mData); } +/*! + * \brief MessageDispatcher::onAdjustment + * \details This method transmits the UI Generic User Confirmation result. + * \param vData - Data model contains the Generic User Confirmation result. + * \return void + */ +void MessageDispatcher::onAdjustment(const DuetConfirmUIrData &vData) +{ + QVariantList mData; + mData += vData.mId; + mData += vData.mConfirm; + onActionTransmit(GuiActionType::ID_DuetConfirmUIr, mData); +} + // ---------------------------------------------------------------------------------------------------- /*! Index: sources/canbus/MessageInterpreter.cpp =================================================================== diff -u -r86acb3c49bfc7c4ed8fc860d895c0603b4816b3a -rb5afbc61af03dd2e84acf8439cb6be1f022a2921 --- sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 86acb3c49bfc7c4ed8fc860d895c0603b4816b3a) +++ sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision b5afbc61af03dd2e84acf8439cb6be1f022a2921) @@ -238,7 +238,8 @@ } LOG_EVENT_UI(QString("RawData")); break; - + // Generic Confirm + case Gui::GuiActionType::ID_DuetConfirmUIr : INTERPRET_TRANSMIT_MESSAGE(DuetConfirmUIrData ); break; case Gui::GuiActionType::ID_PowerOff : INTERPRET_TRANSMIT_MESSAGE(AdjustPowerOffRequestData ); break; // POST case Gui::GuiActionType::ID_UIPostFinalResultData : INTERPRET_TRANSMIT_MESSAGE(AdjustUIPostFinalResultRequestData ); break; Index: sources/gui/qml/PowerItem.qml =================================================================== diff -u -r13e65c3d271d503c2e2e2f1f20736652c470f8cc -rb5afbc61af03dd2e84acf8439cb6be1f022a2921 --- sources/gui/qml/PowerItem.qml (.../PowerItem.qml) (revision 13e65c3d271d503c2e2e2f1f20736652c470f8cc) +++ sources/gui/qml/PowerItem.qml (.../PowerItem.qml) (revision b5afbc61af03dd2e84acf8439cb6be1f022a2921) @@ -53,10 +53,20 @@ else _alarmItem.alarmMaximize() } onAccepted: { - _GuiView.doActionTransmit(GuiActions.ID_PowerOff, GuiActions.Accepted) + if ( vConfirm.isPowerOff ) { + _GuiView.doActionTransmit(GuiActions.ID_PowerOff, GuiActions.Accepted) + } + else { + if ( ! vConfirm.isReject ) vConfirm.doConfirm( true ) + } } onRejected: { - _GuiView.doActionTransmit(GuiActions.ID_PowerOff, GuiActions.Rejected) + if ( vConfirm.isPowerOff ) { + _GuiView.doActionTransmit(GuiActions.ID_PowerOff, GuiActions.Rejected) + } + else { + if ( ! vConfirm.isReject ) vConfirm.doConfirm( false ) + } } } Index: sources/model/MModel.h =================================================================== diff -u -r86acb3c49bfc7c4ed8fc860d895c0603b4816b3a -rb5afbc61af03dd2e84acf8439cb6be1f022a2921 --- sources/model/MModel.h (.../MModel.h) (revision 86acb3c49bfc7c4ed8fc860d895c0603b4816b3a) +++ sources/model/MModel.h (.../MModel.h) (revision b5afbc61af03dd2e84acf8439cb6be1f022a2921) @@ -265,6 +265,7 @@ #define REGISTER_MODEL_METATYPES \ /* CONFIRM */ \ REGISTER_METATYPE( DuetConfirmHDiData ) \ + REGISTER_METATYPE( DuetConfirmUIrData ) \ /* POST */ \ REGISTER_METATYPE( HDPostSingleResultData ) \ REGISTER_METATYPE( HDPostFinalResultData ) \ @@ -568,6 +569,8 @@ // /* Request */ ---------------------------------------------------------// #define ADJUST_TRANSMT_MODEL_BRIDGE_CONNECTIONS(vSOURCE) \ + /* CONFIRM */ \ + ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, DuetConfirmUIrData ) \ /* POST */ \ ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AdjustUIPostFinalResultRequestData ) \ \ @@ -749,6 +752,8 @@ #define ADJUST_TRANSMT_MODEL_BRIDGE_DEFINITIONS \ /* Request --------------------------------------------------------- */ \ + /* CONFIRM */ \ + ADJUST_TRANSMT_BRIDGE_DEFINITION( DuetConfirmUIrData ) \ /* POST */ \ ADJUST_TRANSMT_BRIDGE_DEFINITION( AdjustUIPostFinalResultRequestData ) \ /* Post-Treatment */ \ @@ -800,6 +805,8 @@ #define ADJUST_TRANSMT_MODEL_BRIDGE_DEFINITIONS_NOEMIT \ /* Request ----------------------- NoEmit -------------------------- */ \ + /* CONFIRM */ \ + ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( DuetConfirmUIrData ) \ /* POST */ \ ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AdjustUIPostFinalResultRequestData ) \ /* Post-Treatment */ \ @@ -851,6 +858,8 @@ #define ADJUST_TRANSMT_MODEL_BRIDGE_DEFINITIONS_PUBLIC \ /* Request ----------------------- public -------------------------- */ \ + /* CONFIRM */ \ + ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( DuetConfirmUIrData ) \ /* POST */ \ ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AdjustUIPostFinalResultRequestData ) \ /* Post-Treatment */ \ Index: sources/model/hd/adjustment/treatment/MTreatmentAdjustRequests.h =================================================================== diff -u -r79a6cfcb10472261f3ec26eaf0baf6f1245cd311 -rb5afbc61af03dd2e84acf8439cb6be1f022a2921 --- sources/model/hd/adjustment/treatment/MTreatmentAdjustRequests.h (.../MTreatmentAdjustRequests.h) (revision 79a6cfcb10472261f3ec26eaf0baf6f1245cd311) +++ sources/model/hd/adjustment/treatment/MTreatmentAdjustRequests.h (.../MTreatmentAdjustRequests.h) (revision b5afbc61af03dd2e84acf8439cb6be1f022a2921) @@ -39,7 +39,7 @@ * * | MSG | CAN ID | Box | Type | Ack | Src | Dst | Description | * |:----:|:------:|:---:|:------:|:---:|:---:|:---:|:-----------: | - * |0x0100| 0x020 | 6 | Cmd | N | HD | UI | Power Off | + * |0x0100| 0x020 | 6 | Cmd | N | UI | HD | Power Off | * * | Payload || * | || @@ -55,15 +55,46 @@ QString toString() { return toString({state}); } + // disabled coco end explicit MAdjustPowerOffReq(quint8 vState) : state(vState) { } - // disabled coco end static QString toString(const QVariantList &vParameters) { return MModel::toString("PowerOff", vParameters); } }; /*! + * \brief The MDuetConfirmUIr class + * \details The power off request model + * + * | MSG | CAN ID | Type | Ack | Src | Dst | Description | + * |:----:|:------:|:------:|:---:|:---:|:---:|:-----------: | + * |0x0100| 0x020 | Rsp | Y | UI | HD | Confirm | + * + * | Payload || + * | || + * | #1:(U08) | \ref state | + * + * + */ +class MDuetConfirmUIr : public MModel { +public: + quint32 mId = 0; /*!< Request ID */ + bool mConfirm = false; /*!< user confirm */ + + // disabled coco begin validated : Has been validated manually. + // This object is used statically for now, kept the logic for later usage. + QString toString() { + return toString({mId, mConfirm}); + } + // disabled coco end + + static QString toString(const QVariantList &vParameters) { + return MModel::toString("Confirm", vParameters); + } +}; + +/*! * \brief The MAdjustBloodDialysateReq class * \details The blood/dialysate rate change request model * @@ -503,6 +534,7 @@ } +typedef Model:: MDuetConfirmUIr DuetConfirmUIrData; typedef Model:: MAdjustPowerOffReq AdjustPowerOffRequestData; typedef Model:: MAdjustBloodDialysateReq AdjustBloodDialysateRequestData; typedef Model:: MAdjustDurationReq AdjustDurationRequestData; Index: sources/view/confirm/VConfirm.cpp =================================================================== diff -u -r13e65c3d271d503c2e2e2f1f20736652c470f8cc -rb5afbc61af03dd2e84acf8439cb6be1f022a2921 --- sources/view/confirm/VConfirm.cpp (.../VConfirm.cpp) (revision 13e65c3d271d503c2e2e2f1f20736652c470f8cc) +++ sources/view/confirm/VConfirm.cpp (.../VConfirm.cpp) (revision b5afbc61af03dd2e84acf8439cb6be1f022a2921) @@ -26,6 +26,8 @@ void View::VConfirm::initConnections() { ACTION_VIEW_CONNECTION(DuetConfirmHDiData ); ACTION_VIEW_CONNECTION(PowerOffData ); + + ADJUST_VIEW_CONNECTION(DuetConfirmUIrData ); } /*! @@ -35,6 +37,8 @@ */ void View::VConfirm::onActionReceive(const DuetConfirmHDiData &vData) { + isPowerOff(false ); + id ( vData.mId ); command ( vData.mCommand ); @@ -90,6 +94,8 @@ void View::VConfirm::onActionReceive(const PowerOffData &vData) { + isPowerOff(true ); + title ( tr("Shutdown") ); message ( tr("Are you sure you want to Shutdown?") ); adjustment_Reason ( GuiConfirmId::GENERIC_CONFIRM_ID_NONE ); // power off has no rejection reason on the dialog @@ -105,3 +111,14 @@ // DEBUG: qDebug() << _id << _command << adjustment_Reason() << _title << _message; } + +/*! + * \brief View::VConfirm::doConfirm + * \details the invocable slot to send user's Confirmation + */ +void View::VConfirm::doConfirm(bool vConfirm) { + DuetConfirmUIrData data; + data.mId = id(); + data.mConfirm = vConfirm; + emit didAdjustment(data); +} Index: sources/view/confirm/VConfirm.h =================================================================== diff -u -r13e65c3d271d503c2e2e2f1f20736652c470f8cc -rb5afbc61af03dd2e84acf8439cb6be1f022a2921 --- sources/view/confirm/VConfirm.h (.../VConfirm.h) (revision 13e65c3d271d503c2e2e2f1f20736652c470f8cc) +++ sources/view/confirm/VConfirm.h (.../VConfirm.h) (revision b5afbc61af03dd2e84acf8439cb6be1f022a2921) @@ -50,6 +50,8 @@ PROPERTY(quint32 , command , 0) TRIGGER( quint8 , poweroff , 0) + PROPERTY(bool , isPowerOff , 0) + PROPERTY(bool , isTimeout , 0) PROPERTY(bool , isReject , 0) PROPERTY(bool , isAccept , 0) @@ -65,5 +67,16 @@ VIEW_DEC_SLOT (DuetConfirmHDiData ) VIEW_DEC_SLOT (PowerOffData ) +public slots: + void doConfirm(bool vConfirm); + +signals: + /*! + * \brief didAdjustment + * \details the notification signal to send the user's Confirmation + * \param vData - data model includes request information + */ + void didAdjustment(const DuetConfirmUIrData &vData); + }; }