Index: denali.pro.user =================================================================== diff -u -rf1e100d1368bfd132d88e09680f833dc53b4d0b0 -r45ce6e781782be5de1480a1e7acecd1d272bcc84 --- denali.pro.user (.../denali.pro.user) (revision f1e100d1368bfd132d88e09680f833dc53b4d0b0) +++ denali.pro.user (.../denali.pro.user) (revision 45ce6e781782be5de1480a1e7acecd1d272bcc84) @@ -1,6 +1,6 @@ - + EnvironmentId @@ -100,11 +100,11 @@ qmake QtProjectManager.QMakeBuildStep - false + true false false - false + true true @@ -1176,14 +1176,14 @@ denali Qt4ProjectManager.Qt4RunConfiguration:/home/denali/Projects/application/denali.pro - + --disable-timeout --disable-unhandled-report --logOut 3768 false true true false - false - true + true + false /home/denali/Projects/tmp/build/denali-Desktop_Qt_5_12_5_GCC_64bit-Debug Index: denali.qrc =================================================================== diff -u -r820a00638e0573a5b0c51ed0b3e38d605d4400be -r45ce6e781782be5de1480a1e7acecd1d272bcc84 --- denali.qrc (.../denali.qrc) (revision 820a00638e0573a5b0c51ed0b3e38d605d4400be) +++ denali.qrc (.../denali.qrc) (revision 45ce6e781782be5de1480a1e7acecd1d272bcc84) @@ -36,6 +36,10 @@ resources/images/checkCircle.png resources/images/OffGray.png resources/images/Done.png + resources/images/audio.png + resources/images/mute.png + resources/images/chevron-down.png + resources/images/chevron-up.png sources/gui/qml/components/MainMenu.qml @@ -85,6 +89,8 @@ sources/gui/qml/components/DebugDataColumn.qml sources/gui/qml/components/CheckListItem.qml sources/gui/qml/components/RangeSlider.qml + sources/gui/qml/components/MuteButton.qml + sources/gui/qml/components/UpDownButton.qml sources/gui/qml/compounds/PressureRangeSlider.qml Index: resources/images/audio.png =================================================================== diff -u Binary files differ Index: resources/images/chevron-down.png =================================================================== diff -u Binary files differ Index: resources/images/chevron-up.png =================================================================== diff -u Binary files differ Index: resources/images/mute.png =================================================================== diff -u Binary files differ Index: sources/canbus/MessageInterpreter.cpp =================================================================== diff -u -rf1e100d1368bfd132d88e09680f833dc53b4d0b0 -r45ce6e781782be5de1480a1e7acecd1d272bcc84 --- sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision f1e100d1368bfd132d88e09680f833dc53b4d0b0) +++ sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 45ce6e781782be5de1480a1e7acecd1d272bcc84) @@ -197,7 +197,7 @@ vPayload.clear(); int length = vData.length(); - LOG_EVENT(QString("%0").arg(vActionId)); + // DEBUG: LOG_EVENT(QString("0x%0").arg(vActionId, 4, 16,QChar('0'))); switch (vActionId) { // notice we are in transmit mode case Gui::GuiActionType::ID_Acknow: // len: 0, can have zero len break; // No data, Just registered Index: sources/gui/GuiGlobals.h =================================================================== diff -u -r4bbec52d2257cfdef37604e3453846e501a2af91 -r45ce6e781782be5de1480a1e7acecd1d272bcc84 --- sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision 4bbec52d2257cfdef37604e3453846e501a2af91) +++ sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision 45ce6e781782be5de1480a1e7acecd1d272bcc84) @@ -160,6 +160,7 @@ #include "AlarmDefs.h" Q_ENUM(Alarm_Priorities) Q_ENUM(Alarm_List ) + Q_ENUM(Alarm_State_Flag_Bit_Positions) #include "MsgDefs.h" Q_ENUM(Request_Reject_Reasons) @@ -182,25 +183,26 @@ }; // to be able to use the enum as signal/slot parameter - typedef GuiActions::GuiActionsType_Enum GuiActionType; - typedef GuiActions::GuiActionsData_Enum GuiActionData; + typedef GuiActions::GuiActionsType_Enum GuiActionType; + typedef GuiActions::GuiActionsData_Enum GuiActionData; - typedef GuiActions::Alarm_Priorities GuiAlarmPriority; - typedef GuiActions::Alarm_List GuiAlarmID; + typedef GuiActions::Alarm_Priorities GuiAlarmPriority; + typedef GuiActions::Alarm_List GuiAlarmID; + typedef GuiActions::Alarm_State_Flag_Bit_Positions GuiAlarmFlags; - typedef GuiActions::Request_Reject_Reasons GuiRequestReasons; + typedef GuiActions::Request_Reject_Reasons GuiRequestReasons; - typedef GuiActions::HD_Op_Modes GuiHDOpModes; - typedef GuiActions::DG_Op_Modes GuiDGOpModes; + typedef GuiActions::HD_Op_Modes GuiHDOpModes; + typedef GuiActions::DG_Op_Modes GuiDGOpModes; - typedef GuiActions::UF_Adjustments GuiUFAdjustment; - typedef GuiActions::Treatment_States GuiTreatmentStates; - typedef GuiActions::UF_Commands GuiUFCommands; - typedef GuiActions::UF_States GuiUFStates; - typedef GuiActions::Saline_Commands GuiSalineCommands; - typedef GuiActions::Saline_Bolus_States GuiSalineStates; - typedef GuiActions::Heparin_Commands GuiHeparinCommands; - typedef GuiActions::Heparin_States GuiHeparinStates; + typedef GuiActions::UF_Adjustments GuiUFAdjustment; + typedef GuiActions::Treatment_States GuiTreatmentStates; + typedef GuiActions::UF_Commands GuiUFCommands; + typedef GuiActions::UF_States GuiUFStates; + typedef GuiActions::Saline_Commands GuiSalineCommands; + typedef GuiActions::Saline_Bolus_States GuiSalineStates; + typedef GuiActions::Heparin_Commands GuiHeparinCommands; + typedef GuiActions::Heparin_States GuiHeparinStates; void registerTypes(); void registerQmlTypes(); Index: sources/gui/qml/components/ModalDialog.qml =================================================================== diff -u -r2c9421bd6da03c7e0bd0bfa1f49fa95c2bd18a95 -r45ce6e781782be5de1480a1e7acecd1d272bcc84 --- sources/gui/qml/components/ModalDialog.qml (.../ModalDialog.qml) (revision 2c9421bd6da03c7e0bd0bfa1f49fa95c2bd18a95) +++ sources/gui/qml/components/ModalDialog.qml (.../ModalDialog.qml) (revision 45ce6e781782be5de1480a1e7acecd1d272bcc84) @@ -53,7 +53,6 @@ color: Colors.borderDialog } - background: Rectangle { id: _backgroundRect color : Colors.backgroundDialog radius: Variables.dialogRadius Index: sources/gui/qml/components/MuteButton.qml =================================================================== diff -u --- sources/gui/qml/components/MuteButton.qml (revision 0) +++ sources/gui/qml/components/MuteButton.qml (revision 45ce6e781782be5de1480a1e7acecd1d272bcc84) @@ -0,0 +1,60 @@ +/*! + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * \copyright + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * \file MuteButton.qml + * \author (last) Behrouz NematiPour + * \date (last) 09-Dec-2020 + * \author (original) Behrouz NematiPour + * \date (original) 09-Dec-2020 + * + */ + +// Qt +import QtQuick 2.12 + +// Project +import "qrc:/globals" + +TouchRect { id : _root + property int timeout : 0 + property bool isSilenced : false + + height: 45 + width : isSilenced ? 120 : height + + color: Colors.transparent + borderColor: Colors.white + + Row { + anchors.fill: _root + leftPadding: 10 + spacing: 5 + Image { id: _muteImage + anchors.verticalCenter: parent.verticalCenter + height : 25 + width : 25 + source : _root.isSilenced ? "qrc:/images/iBellOff" : "qrc:/images/iBellOn" + } + + TimeText { id: _timeoutText + // texts are working with thir base line and not the dimetion + // needs to be adjusted and can't just be set to verticalCenter + anchors.top: parent.top + anchors.topMargin: 4 + + textPixelSize : 30 + textWeight : Font.Normal + // the TimeText component works with hour and minute mainly + // so changing the seconds to minuts was easier than changing the component + seconds : _root.timeout * 60 + secondsVisible : false + hourZero : false + minuteZero : true + visible : _root.isSilenced + } + } +} Index: sources/gui/qml/components/NotificationBar.qml =================================================================== diff -u -re58be51c4aa52938af250db3ee579e98de08542c -r45ce6e781782be5de1480a1e7acecd1d272bcc84 --- sources/gui/qml/components/NotificationBar.qml (.../NotificationBar.qml) (revision e58be51c4aa52938af250db3ee579e98de08542c) +++ sources/gui/qml/components/NotificationBar.qml (.../NotificationBar.qml) (revision 45ce6e781782be5de1480a1e7acecd1d272bcc84) @@ -25,10 +25,9 @@ objectName: "NotificationBar" // SquishQt property alias text : _text.text property alias textColor : _text.color - property int level : 0 - property bool isSilenced : false - property int muteTimeoutSec : 0 - property color backgroundColor : Colors.textNotificationNoneBg + property alias isSilenced : _muteButton.isSilenced + property alias timeout : _muteButton.timeout + property alias backgroundColor : _root.color property alias iconVisible : _icon.visible visible : _text.text @@ -41,14 +40,9 @@ right : parent.right } - signal clickedNotificationBar() + signal maximizeClicked() + signal clicked() - function toggleSilence(silence, timeoutSec) { - isSilenced = silence; - muteTimeoutSec = !isSilenced ? 0 : timeoutSec; - _bell.source = isSilenced ? "qrc:/images/iBellOff" : "qrc:/images/iBellOn" - } - Image { id: _icon source: "qrc:/images/iAlarm" @@ -68,37 +62,33 @@ } - Image { - id: _bell - source: isSilenced ? "qrc:/images/iBellOff" : "qrc:/images/iBellOn" - anchors.left: _root.left - anchors.leftMargin: Variables.silenceIconMargin; - anchors.verticalCenter: parent.verticalCenter; - sourceSize.height: Variables.notificationBarIconHeight; - sourceSize.width: Variables.notificationBarIconWidth; - } - - Text { id: _timeout_text - color : Colors.textMain; - anchors.left : _bell.right - anchors.leftMargin : Variables.notificationBarIconMargin; - anchors.verticalCenter: parent.verticalCenter; - font.pixelSize : Fonts.fontPixelNotification - horizontalAlignment : Text.AlignHCenter - verticalAlignment : Text.AlignVCenter - text: muteTimeoutSec; // will be 60 second or less (see PRS) - visible: isSilenced; - } - MouseArea { id: _TouchArea anchors.fill: parent; - onClicked: _root.clickedNotificationBar() + onClicked: _root.clicked() } - - onLevelChanged: { - [_root.color, _text.color] = getRootTextFromAlarmLevel(level); + MuteButton { id: _muteButton + anchors { + verticalCenter : _root.verticalCenter + left : _root.left + leftMargin : Variables.silenceIconMargin + } + // might be another event + // but call the same as the rest of the bar for now + // when it has it's own event then the borderColor transparency can be removed as well + // to indicate the touchable area. + borderColor: Colors.transparent + onClicked: _root.clicked() } + UpDownButton { + isUp: true + anchors { + verticalCenter : _root.verticalCenter + right : _root.right + rightMargin : Variables.silenceIconMargin + } + onClicked: _root.maximizeClicked() + } } Index: sources/gui/qml/components/TimeText.qml =================================================================== diff -u -r56e378f7504701b9e9a9dccaf205aef2fd52c58e -r45ce6e781782be5de1480a1e7acecd1d272bcc84 --- sources/gui/qml/components/TimeText.qml (.../TimeText.qml) (revision 56e378f7504701b9e9a9dccaf205aef2fd52c58e) +++ sources/gui/qml/components/TimeText.qml (.../TimeText.qml) (revision 45ce6e781782be5de1480a1e7acecd1d272bcc84) @@ -28,6 +28,11 @@ objectName: "_TimeText" //SquishQt testability property int seconds : 0 property bool secondsVisible : true + + property bool hourZero : true + property bool minuteZero : true + property bool secondZero : true + property color textColor : "white" property int textPixelSize : 90 property int textWeight : Font.ExtraLight @@ -45,9 +50,9 @@ property int second : seconds % 60 property string separator : ":" - property string hourText : (hour < 10 ? "0" + hour : hour ) - property string minuteText : (minute < 10 ? "0" + minute : minute) - property string secondText : (second < 10 ? "0" + second : second) + property string hourText : (hour < 10 ? ( _root.hourZero ? "0" : "") + hour : hour ) + property string minuteText : (minute < 10 ? ( _root.minuteZero ? "0" : "") + minute : minute) + property string secondText : (second < 10 ? ( _root.secondZero ? "0" : "") + second : second) property string time : hourText + separator + minuteText + (_root.secondsVisible ? (separator + secondText) : "") } Index: sources/gui/qml/components/UpDownButton.qml =================================================================== diff -u --- sources/gui/qml/components/UpDownButton.qml (revision 0) +++ sources/gui/qml/components/UpDownButton.qml (revision 45ce6e781782be5de1480a1e7acecd1d272bcc84) @@ -0,0 +1,37 @@ +/*! + * + * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. + * \copyright + * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN + * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. + * + * \file UpDownButton.qml + * \author (last) Behrouz NematiPour + * \date (last) 09-Dec-2020 + * \author (original) Behrouz NematiPour + * \date (original) 09-Dec-2020 + * + */ + +// Qt +import QtQuick 2.12 + +// Project +import "qrc:/globals" + +TouchRect { id : _root + property bool isUp : false + + height: 45 + width : height + + color : Colors.transparent + borderColor : Colors.white + + Image { id: _image + anchors.centerIn: parent + height : 25 + width : 25 + source : _root.isUp ? "qrc:/images/iChevronUp" : "qrc:/images/iChevronDown" + } +} Index: sources/gui/qml/dialogs/NotificationDialog.qml =================================================================== diff -u -rb61d8a3e01fef66eee8095c9cddf835d9bb32b66 -r45ce6e781782be5de1480a1e7acecd1d272bcc84 --- sources/gui/qml/dialogs/NotificationDialog.qml (.../NotificationDialog.qml) (revision b61d8a3e01fef66eee8095c9cddf835d9bb32b66) +++ sources/gui/qml/dialogs/NotificationDialog.qml (.../NotificationDialog.qml) (revision 45ce6e781782be5de1480a1e7acecd1d272bcc84) @@ -27,36 +27,44 @@ ModalDialog { id : _root contentItem.objectName: "_NotificationDialog" // SquishQt - property alias titleText : _title.text; - property alias description : _desc.text; - property alias titleBarForeground : _title.color - property alias titleBarBackground : _titleBar.color - property alias okayBtn : _okay; - property alias silenceBtn : _silence - property bool isSilenced : false - property int alarmID : -1 + property alias titleText : _title.text; + property alias description : _desc.text; + property alias titleBarForeground : _title.color + property alias titleBarBackground : _titleBar.color + property alias isSilenced : _muteButton.isSilenced + property alias timeout : _muteButton.timeout + property int alarmID : -1 + property bool resumeVisible : false + property bool rinsebackVisible : false + property bool endVisible : false + property bool okVisible : false + visible: description - signal clickedSilence(); - signal clickedOkay(); + signal muteClicked() + signal minimizeClicked() - radius: 0; - Rectangle { - id: _titleBar; - color: Colors.alarmTopBarHighBg; - height: _root.height / 4; - width: _root.width; - radius: _root.radius; + signal resumeClicked() + signal rinsebackClicked() + signal endClicked() + signal okClicked() + radius: 5 + Rectangle { id: _titleBar + color : Colors.alarmTopBarHighBg + height : Variables.mainMenuHeight + width : _root.width + radius : _root.radius + Image { id: _icon source: "qrc:/images/iAlarm" anchors.horizontalCenter: _title.horizontalCenter - anchors.verticalCenter: _title.verticalCenter; + anchors.verticalCenter: _title.verticalCenter anchors.horizontalCenterOffset: -_title.width + Variables.dialogIconHorizontalOffset; - sourceSize.height: Variables.dialogIconHeight; - sourceSize.width: Variables.dialogIconWidth; + height : 45 + width : 45 } Text { id: _title @@ -65,6 +73,30 @@ text: qsTr("Notification") anchors.centerIn: _titleBar; } + + MouseArea { id: _minimizeArea + anchors.fill: parent + onClicked : _root.minimizeClicked() + } + + UpDownButton { + isUp: false + anchors { + verticalCenter : _titleBar.verticalCenter + right : _titleBar.right + rightMargin : Variables.silenceIconMargin + } + onClicked: _root.minimizeClicked() + } + + MuteButton { id: _muteButton + anchors { + verticalCenter : _titleBar.verticalCenter + left : _titleBar.left + leftMargin : Variables.silenceIconMargin + } + onClicked: _root.muteClicked() + } } Text { id: _desc @@ -77,32 +109,47 @@ } } - Row { - id: _buttons - spacing: Variables.buttonSpacing; + Row { id: _buttonGroup + property int buttonsWidth : 300 + spacing: 50 + anchors { - horizontalCenter: parent.horizontalCenter; - bottom: parent.bottom; - bottomMargin: Variables.dialogMargin / 2; + bottom : parent.bottom + horizontalCenter: parent.horizontalCenter + rightMargin : spacing + leftMargin : spacing + bottomMargin : spacing } - TouchRect { id : _okay - width: _root.width / 3; - text.text: qsTr("OKAY") - borderColor: _root.textColor; - button.onPressed: { - clickedOkay(); + TouchRect { id : _resumeTouchRect + visible : resumeVisible + button.onPressed: resumeClicked() + text.text : qsTr("RESUME") + width : _buttonGroup.buttonsWidth + borderColor : Colors.white + } - } + TouchRect { id : _rinsebackTouchRect + visible : rinsebackVisible + button.onPressed: rinsebackClicked() + text.text : qsTr("RINSEBACK") + width : _buttonGroup.buttonsWidth + borderColor : Colors.white } - TouchRect { id : _silence - width: _root.width / 3; - text.text: qsTr("SILENCE") - borderColor: _root.textColor; - button.onPressed: { - clickedSilence() - } + TouchRect { id : _endTouchRect + visible : endVisible + button.onPressed: endClicked() + text.text : qsTr("END") + width : _buttonGroup.buttonsWidth + borderColor : Colors.white } + TouchRect { id : _okTouchRect + visible : okVisible + button.onPressed: okClicked() + text.text : qsTr("OK") + width : _buttonGroup.buttonsWidth + borderColor : Colors.white + } } } Index: sources/gui/qml/globals/Colors.qml =================================================================== diff -u -r14c541d2b780b0a244bc84860aa565cf8dd7fe4b -r45ce6e781782be5de1480a1e7acecd1d272bcc84 --- sources/gui/qml/globals/Colors.qml (.../Colors.qml) (revision 14c541d2b780b0a244bc84860aa565cf8dd7fe4b) +++ sources/gui/qml/globals/Colors.qml (.../Colors.qml) (revision 45ce6e781782be5de1480a1e7acecd1d272bcc84) @@ -17,6 +17,8 @@ pragma Singleton import QtQuick 2.12 +import Gui.Actions 0.1 + /*! * \brief * Colors.qml file includes all the colors definitions @@ -100,16 +102,57 @@ readonly property color alarmTopBarLowBg : "#db8f00" readonly property color alarmTopBarLowFg : white - readonly property color createTrProfileID : "#ffbb44" + readonly property color alarmTopBarNoneBg : "#db8f00" + readonly property color alarmTopBarNoneFg : white - readonly property color primingNotReady : "#1f4974" - readonly property color primingReady : "#438FEB" + readonly property color createTrProfileID : "#ffbb44" - readonly property color createTreatmentActive : "#3d8eef" - readonly property color createTreatmentInactive : "#3e546e" - readonly property color createTreatmentNotReady : "#1f4974" - readonly property color createTreatmentReady : "#438FEB" - readonly property color createTreatmentTextNotReady : "#507090" - readonly property color createTreatmentTextReady : white - readonly property color createTreatmentInvalidParam : red + readonly property color primingNotReady : "#1f4974" + readonly property color primingReady : "#438FEB" + + readonly property color createTreatmentActive : "#3d8eef" + readonly property color createTreatmentInactive : "#3e546e" + readonly property color createTreatmentNotReady : "#1f4974" + readonly property color createTreatmentReady : "#438FEB" + readonly property color createTreatmentTextNotReady : "#507090" + readonly property color createTreatmentTextReady : white + readonly property color createTreatmentInvalidParam : red + + // ---------- < PRS > Related Section ---------- + // Alarm priority colors + function alarmPriorityColors(vPriority) { + let titleBg = "" + let titleFg = "" + let contentBg = "" + let contentFg = "" + switch (vPriority) { + case GuiActions.ALARM_PRIORITY_HIGH: + titleBg = alarmTopBarHighBg + titleFg = alarmTopBarHighFg + contentBg = textNotificationHighBg + contentFg = textNotificationHighFg + break + case GuiActions.ALARM_PRIORITY_MEDIUM: + titleBg = alarmTopBarMedBg + titleFg = alarmTopBarMedFg + contentBg = textNotificationMedBg + contentFg = textNotificationMedFg + break + case GuiActions.ALARM_PRIORITY_LOW: + titleBg = alarmTopBarLowBg + titleFg = alarmTopBarLowFg + contentBg = textNotificationLowBg + contentFg = textNotificationLowFg + break + default : // GuiActions.ALARM_PRIORITY_NONE + titleBg = backgroundButtonSelect + titleFg = textButton + contentBg = backgroundDialog + contentFg = textButton + } + return [titleBg , + titleFg , + contentBg , + contentFg ] + } } Index: sources/gui/qml/globals/Variables.qml =================================================================== diff -u -r14c541d2b780b0a244bc84860aa565cf8dd7fe4b -r45ce6e781782be5de1480a1e7acecd1d272bcc84 --- sources/gui/qml/globals/Variables.qml (.../Variables.qml) (revision 14c541d2b780b0a244bc84860aa565cf8dd7fe4b) +++ sources/gui/qml/globals/Variables.qml (.../Variables.qml) (revision 45ce6e781782be5de1480a1e7acecd1d272bcc84) @@ -161,14 +161,14 @@ // Units // - Ultrafiltration - readonly property string unitTextUltrafiltrationVolume : qsTr("(L)") - readonly property string unitTextUltrafiltrationRate : qsTr("mL/min") - readonly property string unitTextTreatmentDuration : qsTr("min") + readonly property string unitTextUltrafiltrationRate : qsTr("mL/min") + readonly property string unitTextUltrafiltrationVolume : qsTr("(L)") + readonly property string unitTextTreatmentDuration : qsTr("min") // - Flows - readonly property string unitTextFlowRate : qsTr("mL/min") + readonly property string unitTextFlowRate : qsTr("mL/min") // - Vitals - readonly property string unitTextBloodPressure : qsTr("mmHg") - readonly property string unitTextHeartBeat : qsTr("BPM" ) + readonly property string unitTextBloodPressure : qsTr("mmHg") + readonly property string unitTextHeartBeat : qsTr("BPM" ) // - Fluid readonly property string unitTextFluid : qsTr("mL") readonly property string unitTextSaline : unitTextFluid Index: sources/gui/qml/main.qml =================================================================== diff -u -re58be51c4aa52938af250db3ee579e98de08542c -r45ce6e781782be5de1480a1e7acecd1d272bcc84 --- sources/gui/qml/main.qml (.../main.qml) (revision e58be51c4aa52938af250db3ee579e98de08542c) +++ sources/gui/qml/main.qml (.../main.qml) (revision 45ce6e781782be5de1480a1e7acecd1d272bcc84) @@ -18,8 +18,8 @@ // Project // C++ imports -import Gui.View 0.1; -import Gui.Actions 0.1; +import Gui.View 0.1 +import Gui.Actions 0.1 // TODO : When Testing data on Setting screen is removed // This needs to be moved into the TreatmentFlows.qml @@ -141,48 +141,59 @@ } } + // Alarms + function alarmMinimize() { + _alarm_dialog .visible = false + _alarm_bar .visible = true + } + function alarmMaximize() { + _alarm_dialog .visible = true + _alarm_bar .visible = false + } + function alarmHide() { + _alarm_dialog .visible = false + _alarm_bar .visible = false + } + NotificationBar { id: _alarm_bar + backgroundColor : _alarm_dialog.backgroundColor + textColor : _alarm_dialog.textColor + anchors.bottom : _mainMenu.top + text : vAlarmStatus.text; + isSilenced : vAlarmStatus.alarm_Flag_alarmsSilenced + timeout : vAlarmStatus.alarm_MuteTimeout - anchors.bottom: _mainMenu.top - level : vAlarmStatus.alarm_Priority - text : vAlarmStatus.text; - isSilenced: vAlarmStatus.alarm_Flag_alarmsSilenced; + onMaximizeClicked: { + alarmMaximize() + } - onClickedNotificationBar: { - updateAlarm(); - vAlarmStatus.onSetMinimize(false); - _alarm_bar.visible = false; - _alarm_dialog.visible = true; + onClicked: { + alarmMaximize() } } - function updateAlarm() { - _alarm_dialog.titleText = "Alarm"; - _alarm_dialog.description = vAlarmStatus.text; - _alarm_dialog.alarmID = vAlarmStatus.alarm_AlarmID; - [_alarm_dialog.backgroundColor, _alarm_dialog.textColor] = getRootTextFromAlarmLevel(vAlarmStatus.alarm_Priority); - [_alarm_dialog.titleBarBackground, _alarm_dialog.titleBarForeground] = getAlarmTopBarColors(vAlarmStatus.alarm_Priority); - _alarm_bar.backgroundColor = _alarm_dialog.titleBarBackground; - - _alarm_dialog.isSilenced = vAlarmStatus.alarm_Flag_alarmsSilenced; - _alarm_bar.toggleSilence(vAlarmStatus.alarm_Flag_alarmsSilenced, vAlarmStatus.alarm_MuteTimeout); - _alarm_dialog.silenceBtn.visible = !vAlarmStatus.alarm_Flag_alarmsSilenced; - } - NotificationDialog { id: _alarm_dialog - alarmID: -1 + // this will change later to the actual message text + // and the instruction would be in the dialog content + titleText : "Alarm" + description : vAlarmStatus.text + alarmID : vAlarmStatus.alarm_AlarmID + isSilenced : vAlarmStatus.alarm_Flag_alarmsSilenced + timeout : vAlarmStatus.alarm_MuteTimeout + okVisible : vAlarmStatus.alarm_Flag_UserMustAck + resumeVisible : ! vAlarmStatus.alarm_Flag_noResume + rinsebackVisible: ! vAlarmStatus.alarm_Flag_noRinseback + endVisible : ! vAlarmStatus.alarm_Flag_noEndTreatment - onClickedOkay: { - _alarm_dialog.visible = false; - _alarm_bar.visible = true; - vAlarmStatus.onRequestOkay(alarmID) + onMinimizeClicked : { + alarmMinimize() + // when used minimizes the alarm it can stay minimized until otherwize is set + // by the next alarm status received. + // see also the "Connections { target: vAlarmStatus" implementation + vAlarmStatus.alarm_KeepMinimized = true } - - onClickedSilence: { - _alarm_dialog.visible = false; - _alarm_bar.visible = true; - vAlarmStatus.onRequestSilence(); - } + onOkClicked : vAlarmStatus.onRequestOkay(alarmID) + onMuteClicked : vAlarmStatus.onRequestSilence() } // 9 - Others @@ -219,52 +230,6 @@ visible: true // ! _GuiView.sdIsReady || _GuiView.sdIsReadOnly } - function getRootTextFromAlarmLevel(level) { - let root_color = ""; - let text_color = ""; - switch (level) { - case GuiActions.ALARM_PRIORITY_HIGH: - root_color = Colors.textNotificationHighBg; - text_color = Colors.textNotificationHighFg; - break; - case GuiActions.ALARM_PRIORITY_MEDIUM: - root_color = Colors.textNotificationMedBg; - text_color = Colors.textNotificationMedFg; - break; - case GuiActions.ALARM_PRIORITY_LOW: - root_color = Colors.textNotificationLowBg; - text_color = Colors.textNotificationLowFg; - break; - default : // GuiActions.ALARM_PRIORITY_NONE - root_color = Colors.textNotificationNoneBg; - text_color = Colors.textNotificationNoneFg; - } - return [root_color, text_color]; - } - - function getAlarmTopBarColors(level) { - let background = ""; - let foreground = ""; - switch (level) { - case GuiActions.ALARM_PRIORITY_HIGH: - background = Colors.alarmTopBarHighBg; - foreground = Colors.alarmTopBarHighFg; - break; - case GuiActions.ALARM_PRIORITY_MEDIUM: - background = Colors.alarmTopBarMedBg; - foreground = Colors.alarmTopBarMedFg; - break; - case GuiActions.ALARM_PRIORITY_LOW: - background = Colors.alarmTopBarLowBg; - foreground = Colors.alarmTopBarLowFg; - break; - default : // GuiActions.ALARM_PRIORITY_NONE - background = Colors.alarmTopBarLowBg; - foreground = Colors.alarmTopBarLowFg; - } - return [background, foreground]; - } - Connections { target: vPowerOff onPoweroffTriggered: { switch (vpoweroff) { @@ -287,21 +252,36 @@ } Connections { target: vAlarmStatus - onRaiseAlarm: { - updateAlarm(); + onAlarm_Flag_noResumeChanged : vAlarmStatus.alarm_KeepMinimized = false + onAlarm_Flag_noRinsebackChanged : vAlarmStatus.alarm_KeepMinimized = false + onAlarm_Flag_noEndTreatmentChanged : vAlarmStatus.alarm_KeepMinimized = false + onAlarm_Flag_UserMustAckChanged : vAlarmStatus.alarm_KeepMinimized = false + onAlarm_AlarmIDChanged : vAlarmStatus.alarm_KeepMinimized = false + onAlarm_Flag_alarmsSilencedChanged : vAlarmStatus.alarm_KeepMinimized = vAlarmStatus.alarm_Flag_alarmsSilenced + onAlarm_PriorityChanged: { + [ + _alarm_dialog.titleBarBackground, + _alarm_dialog.titleBarForeground, + _alarm_dialog.backgroundColor , + _alarm_dialog.textColor , + ] = Colors.alarmPriorityColors(vAlarmStatus.alarm_Priority) + } - if (vAlarmStatus.minimizeAlarm) { - _alarm_dialog.visible = false; - _alarm_bar.visible = true; - } else { - _alarm_dialog.visible = true; - _alarm_bar.visible = false; + onRaiseAlarm: { + if (vAlarmStatus.alarm_Flag_alarmsSilenced) { + // this is the response to the silence request + // so the dialog should be closed when the request accepted + // if not then if can stay minimized nothing happens + // if can't stay minimized then it has to be shown + alarmMinimize() } + else { + if (! vAlarmStatus.alarm_KeepMinimized) { + alarmMaximize() + } + } } - onNoAlarm: { - _alarm_bar.visible = false; - _alarm_dialog.visible = false; - } + onNoAlarm: alarmHide() } } Index: sources/model/MModel.h =================================================================== diff -u -rae1042a0c14d6d27556730183cc2cbe1a00bc0a7 -r45ce6e781782be5de1480a1e7acecd1d272bcc84 --- sources/model/MModel.h (.../MModel.h) (revision ae1042a0c14d6d27556730183cc2cbe1a00bc0a7) +++ sources/model/MModel.h (.../MModel.h) (revision 45ce6e781782be5de1480a1e7acecd1d272bcc84) @@ -186,7 +186,6 @@ REGISTER_METATYPE( TreatmentTimeData ) \ REGISTER_METATYPE( PressureOcclusionData ) \ REGISTER_METATYPE( AlarmStatusData ) \ - REGISTER_METATYPE( AlarmStatusFlag ) \ REGISTER_METATYPE( PowerOffData ) \ REGISTER_METATYPE( TreatmentRangesData ) \ REGISTER_METATYPE( AlarmTriggeredData ) \ Index: sources/model/hd/alarm/MAlarmStatusData.cpp =================================================================== diff -u -rf1e100d1368bfd132d88e09680f833dc53b4d0b0 -r45ce6e781782be5de1480a1e7acecd1d272bcc84 --- sources/model/hd/alarm/MAlarmStatusData.cpp (.../MAlarmStatusData.cpp) (revision f1e100d1368bfd132d88e09680f833dc53b4d0b0) +++ sources/model/hd/alarm/MAlarmStatusData.cpp (.../MAlarmStatusData.cpp) (revision 45ce6e781782be5de1480a1e7acecd1d272bcc84) @@ -34,7 +34,7 @@ if (GetValue(vByteArray, index, _data.mTop )) if (GetValue(vByteArray, index, _data.mEscalatesIn )) if (GetValue(vByteArray, index, _data.mMuteTimeout )) - if (GetBits (vByteArray, index, _data.mFlags , eFlag_Bits_Length)) { + if (GetBits (vByteArray, index, _data.mFlags , GuiAlarmFlags::NUM_OF_ALARM_STATE_FLAG_BIT_POS)) { qDebug() << _data.mFlags.toString(); return true ; } @@ -118,7 +118,6 @@ case GuiAlarmID::AlARM_ID_NVDATA_DISINFECTION_DATE_CRC_ERROR : { result = QObject::tr("Last disinfection date CRC error." ); break; } case GuiAlarmID::ALARM_ID_RO_PUMP_OUT_PRESSURE_OUT_OF_RANGE : { result = QObject::tr("Pressure at outlet of RO pump is out of range." ); break; } case GuiAlarmID::ALARM_ID_TEMPERATURE_SENSORS_FAULT : { result = QObject::tr("DG temperature sensors fault." ); break; } - case GuiAlarmID::ALARM_ID_TEMPERATURE_SENSORS_INCONSISTENT : { result = QObject::tr("DG temperature sensors values are inconsistent." ); break; } case GuiAlarmID::ALARM_ID_HD_COMM_TIMEOUT : { result = QObject::tr("HD communication timeout." ); break; } case GuiAlarmID::ALARM_ID_VALVE_CONTROL_FAILURE : { result = QObject::tr("FPGA not accepting commanded valve states." ); break; } case GuiAlarmID::ALARM_ID_BLOOD_PUMP_FLOW_VS_MOTOR_SPEED_CHECK : { result = QObject::tr("Blood pump failed flow vs. motor speed check. \nMismatch with flow rate and rate implied by motor speed." ); break; } Index: sources/model/hd/alarm/MAlarmStatusData.h =================================================================== diff -u -rf1e100d1368bfd132d88e09680f833dc53b4d0b0 -r45ce6e781782be5de1480a1e7acecd1d272bcc84 --- sources/model/hd/alarm/MAlarmStatusData.h (.../MAlarmStatusData.h) (revision f1e100d1368bfd132d88e09680f833dc53b4d0b0) +++ sources/model/hd/alarm/MAlarmStatusData.h (.../MAlarmStatusData.h) (revision 45ce6e781782be5de1480a1e7acecd1d272bcc84) @@ -69,23 +69,6 @@ } _data; public: - // TODO : Has been negotiated with HD Software team - // and needs to be replaced by an equivalent enum - // shared in common repo - enum Flag { - eFlag_systemFault = 0 , - eFlag_stop , - eFlag_noClear , - eFlag_noResume , - eFlag_noRinseback , - eFlag_noEndTreatment , - eFlag_noNewTreatment , - eFlag_bypassDialyzer , - eFlag_alarmsToEscalate , - eFlag_alarmsSilenced , - eFlag_userAcknowledged , - eFlag_Bits_Length = 16, - }; Type_Enum typeText () const override { return Type_Enum::eEvent ; } Unit_Enum unitText () const override { return Unit_Enum::eHD ; } @@ -111,4 +94,3 @@ } typedef Model::MAlarmStatus::Data AlarmStatusData; -typedef Model::MAlarmStatus::Flag AlarmStatusFlag; Index: sources/view/hd/alarm/VAlarmStatus.cpp =================================================================== diff -u -r53134008481fd775533e8988b7436f2f75e47336 -r45ce6e781782be5de1480a1e7acecd1d272bcc84 --- sources/view/hd/alarm/VAlarmStatus.cpp (.../VAlarmStatus.cpp) (revision 53134008481fd775533e8988b7436f2f75e47336) +++ sources/view/hd/alarm/VAlarmStatus.cpp (.../VAlarmStatus.cpp) (revision 45ce6e781782be5de1480a1e7acecd1d272bcc84) @@ -52,18 +52,24 @@ alarm_AlarmID (vData.mTop ); alarm_EscalateIn (vData.mEscalatesIn ); alarm_MuteTimeout (vData.mMuteTimeout ); - alarm_Flag_systemFault (vData.mFlags.at(AlarmStatusFlag::eFlag_systemFault )); - alarm_Flag_stop (vData.mFlags.at(AlarmStatusFlag::eFlag_stop )); - alarm_Flag_noClear (vData.mFlags.at(AlarmStatusFlag::eFlag_noClear )); - alarm_Flag_noResume (vData.mFlags.at(AlarmStatusFlag::eFlag_noResume )); - alarm_Flag_noRinseback (vData.mFlags.at(AlarmStatusFlag::eFlag_noRinseback )); - alarm_Flag_noEndTreatment (vData.mFlags.at(AlarmStatusFlag::eFlag_noEndTreatment )); - alarm_Flag_noNewTreatment (vData.mFlags.at(AlarmStatusFlag::eFlag_noNewTreatment )); - alarm_Flag_bypassDialyzer (vData.mFlags.at(AlarmStatusFlag::eFlag_bypassDialyzer )); - alarm_Flag_alarmsToEscalate (vData.mFlags.at(AlarmStatusFlag::eFlag_alarmsToEscalate )); - alarm_Flag_alarmsSilenced (vData.mFlags.at(AlarmStatusFlag::eFlag_alarmsSilenced )); - alarm_Flag_UserAcknowledged (vData.mFlags.at(AlarmStatusFlag::eFlag_userAcknowledged )); + alarm_Flag_systemFault (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_SYSTEM_FAULT )); + alarm_Flag_stop (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_STOP )); + alarm_Flag_noClear (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_NO_CLEAR )); + alarm_Flag_noResume (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_NO_RESUME )); + alarm_Flag_noRinseback (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_NO_RINSEBACK )); + alarm_Flag_noEndTreatment (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_NO_END_TREATMENT )); + alarm_Flag_noNewTreatment (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_NO_NEW_TREATMENT )); + alarm_Flag_UserMustAck (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_USER_MUST_ACK )); + alarm_Flag_alarmsToEscalate (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_ALARMS_TO_ESCALATE )); + alarm_Flag_alarmsSilenced (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_ALARMS_SILENCED )); + alarm_Flag_alarmsLampOn (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_LAMP_ON )); + // (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_UNUSED_1 )); + // (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_UNUSED_2 )); + // (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_UNUSED_3 )); + // (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_UNUSED_4 )); + alarm_Flag_alarmsCondition (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_TOP_CONDITION )); + emit raiseAlarm(); } @@ -130,19 +136,9 @@ AlarmAcknowledgeRequestData data; data.alarmID = (quint32)alarmID; emit requestAlarmAcknowledge(data); - onSetMinimize(true); // TODO: Remove once FW implements user acknowledge } /*! - * \brief VAlarmStatus::onToggleMinimize - * Toggles the whether the alarm should be minimized - */ -void VAlarmStatus::onSetMinimize(bool minimize) -{ - minimizeAlarm(minimize); -} - -/*! * \brief VAlarmStatus::requestSilence * Send out a request to silence alarms */ @@ -151,5 +147,4 @@ AlarmSilenceRequestData data; data.state = 1; emit requestAlarmSilence(data); - onSetMinimize(true); } Index: sources/view/hd/alarm/VAlarmStatus.h =================================================================== diff -u -r7c895d9b6c198a48ab75ac2090b0a61d99bbd1ab -r45ce6e781782be5de1480a1e7acecd1d272bcc84 --- sources/view/hd/alarm/VAlarmStatus.h (.../VAlarmStatus.h) (revision 7c895d9b6c198a48ab75ac2090b0a61d99bbd1ab) +++ sources/view/hd/alarm/VAlarmStatus.h (.../VAlarmStatus.h) (revision 45ce6e781782be5de1480a1e7acecd1d272bcc84) @@ -64,11 +64,13 @@ PROPERTY( bool , alarm_Flag_noRinseback , false) PROPERTY( bool , alarm_Flag_noEndTreatment , false) PROPERTY( bool , alarm_Flag_noNewTreatment , false) - PROPERTY( bool , alarm_Flag_bypassDialyzer , false) + PROPERTY( bool , alarm_Flag_UserMustAck , false) PROPERTY( bool , alarm_Flag_alarmsToEscalate , false) PROPERTY( bool , alarm_Flag_alarmsSilenced , false) - PROPERTY( bool , alarm_Flag_UserAcknowledged , false) - PROPERTY( bool , minimizeAlarm , false) + PROPERTY( bool , alarm_Flag_alarmsLampOn , false) + PROPERTY( bool , alarm_Flag_alarmsCondition , false) + + PROPERTY( bool , alarm_KeepMinimized , false) // coco end Q_PROPERTY(QString text READ text NOTIFY alarm_AlarmIDChanged) Q_PROPERTY(QString id READ id NOTIFY alarm_AlarmIDChanged) @@ -92,6 +94,5 @@ QString id(); void onRequestOkay(GuiAlarmID alarmID); void onRequestSilence(); - void onSetMinimize(bool minimize); }; }