Index: sources/gui/qml/main.qml =================================================================== diff -u -r0470ff6f209ff0c5089f8f0849b6da04f60f8f41 -r54aae98b72e3804008acad0bbbb7573be8e35707 --- sources/gui/qml/main.qml (.../main.qml) (revision 0470ff6f209ff0c5089f8f0849b6da04f60f8f41) +++ sources/gui/qml/main.qml (.../main.qml) (revision 54aae98b72e3804008acad0bbbb7573be8e35707) @@ -6,8 +6,8 @@ * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file main.qml - * \author (last) Behrouz NematiPour - * \date (last) 25-Aug-2020 + * \author (last) Peter Lucia + * \date (last) 15-Oct-2020 * \author (original) Behrouz NematiPour * \date (original) 24-Sep-2019 * @@ -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 @@ -34,9 +34,6 @@ import VTreatmentAdjustmentDuration 0.1; import VTreatmentAdjustmentFlows 0.1; -import VTreatmentAdjustmentUltrafiltrationState 0.1; -import VTreatmentAdjustmentUltrafiltrationEdit 0.1; -import VTreatmentAdjustmentUltrafiltrationConfirm 0.1; import VTreatmentCreate 0.1; import VBluetooth 0.1; @@ -51,6 +48,10 @@ import VDGValvesStates 0.1; import VPriming 0.1; import VTreatmentBegin 0.1; +import VTreatmentEnd 0.1; +import VTreatmentAdjustmentUltrafiltrationInit 0.1; +import VVitals 0.1; +import VAlert 0.1; // Qml imports import "qrc:/globals" @@ -105,13 +106,14 @@ VTreatmentAdjustmentDuration { id: vTreatmentAdjustmentDuration } VTreatmentAdjustmentFlows { id: vTreatmentAdjustmentFlows } - VTreatmentAdjustmentUltrafiltrationState { id: vTreatmentAdjustmentUltrafiltrationState } - VTreatmentAdjustmentUltrafiltrationEdit { id: vTreatmentAdjustmentUltrafiltrationEdit } - VTreatmentAdjustmentUltrafiltrationConfirm { id: vTreatmentAdjustmentUltrafiltrationConfirm } VTreatmentCreate { id: vTreatmentCreate } VBluetooth { id: vBluetooth } VPriming { id: vPriming } VTreatmentBegin { id: vTreatmentBegin } + VTreatmentEnd { id: vTreatmentEnd } + VTreatmentAdjustmentUltrafiltrationInit { id: vTreatmentAdjustmentUltrafiltrationInit } + VVitals { id: vVitals } + VAlert { id: vAlert } // ----- Follow the below Z order ----- // 1 - Screens @@ -147,72 +149,105 @@ } } - NotificationBar { id: _alarm_bar - - anchors.bottom: _mainMenu.top - level : vAlarmStatus.alarm_Priority - text : vAlarmStatus.text; - isSilenced: vAlarmStatus.alarm_Flag_alarmsSilenced; - - onClickedNotificationBar: { - updateAlarm(); - _alarm_bar.visible = false; - _alarm_dialog.visible = true; - } + // Alarms + function alarmMinimize() { + _alarmDialog .visible = false + _alarmListDialog.visible = false + _alarmBar .visible = true } - - function isAlarmHighPriority() { - return vAlarmStatus.alarm_Priority === GuiActions.ALARM_PRIORITY_HIGH; + function alarmMaximize() { + _alarmDialog .visible = true + _alarmListDialog.visible = false + _alarmBar .visible = false } + function alarmList() { + _alarmDialog .visible = false + _alarmListDialog.visible = true + _alarmBar .visible = false + } + function alarmHide() { + _alarmDialog .visible = false + _alarmListDialog.visible = false + _alarmBar .visible = false + } - 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; + NotificationBar { id : _alarmBar + backgroundColor : _alarmDialog.backgroundColor + textColor : _alarmDialog.textColor + anchors.bottom : _mainMenu.top + text : vAlarmStatus.text; + isSilenced : vAlarmStatus.alarm_Flag_alarmsSilenced + timeout : vAlarmStatus.alarm_MuteTimeout + + onMuteClicked : vAlarmStatus.doSilence() + onListClicked : alarmList() + onMaximizeClicked : alarmMaximize() + onClicked : alarmMaximize() } - NotificationDialog { id: _alarm_dialog - alarmID: -1 + // TODO : Later need to create a base Notification dialog class + // and inherit NotificationDialog and AlarmListDialog from that + // Beter be the NotificationDialog defined as parent + // and two separate dialogs by the names of AlarmDialog , AlarmListDlialog creatd. + // Same for the Notification Bar + NotificationDialog { id : _alarmDialog + // 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.requestOkay(alarmID) + onMuteClicked : vAlarmStatus.doSilence () + onResumeClicked : vAlarmStatus.doUserActionResume () + onRinsebackClicked : vAlarmStatus.doUserActionRinseback() + onEndClicked : vAlarmStatus.doUserActionEnd () + onOkClicked : vAlarmStatus.doUserActionOk () + onMinimizeClicked : { + alarmMinimize() + // when user 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 + // DEBUG: vAlarmStatus.doClearCondition() } + } - onClickedSilence: { - _alarm_dialog.visible = false; - _alarm_bar.visible = true; - vAlarmStatus.requestSilence(); - } + AlarmListDialog { id : _alarmListDialog + isSilenced : vAlarmStatus.alarm_Flag_alarmsSilenced + timeout : vAlarmStatus.alarm_MuteTimeout + onMuteClicked : vAlarmStatus.doSilence() + onMinimizeClicked : alarmMinimize() } // 9 - Others Text { // TEST : Application version should be moved into the information screen later. - color: Colors.textMain + color : Colors.textMain anchors { - right: parent.right - margins: 10 - bottom: parent.bottom + top : parent.top + left : parent.left + leftMargin : 10 } - horizontalAlignment: Text.AlignRight - verticalAlignment: Text.AlignBottom + horizontalAlignment : Text.AlignRight + verticalAlignment : Text.AlignBottom - height: Variables.mainMenuHeight - text: Qt.application.version + height : 15 + text : Qt.application.version font.pixelSize: 14 } Rectangle { // TEST : SD-Card not present should be handled with better indication(s). color : ! _GuiView.sdIsReady ? "red" : _GuiView.sdIsReadOnly ? "gray" : "green" anchors { - right : parent.right - bottom : parent.bottom - bottomMargin: 35 - rightMargin: 10 + top : parent.top + right : parent.right + topMargin : 5 + rightMargin : 5 } width : 25 height: 25 @@ -224,52 +259,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) { @@ -291,26 +280,40 @@ } } + Alert { id: _alert } + Connections { target: vAlarmStatus - onRaiseAlarm: { - updateAlarm(); - _alarm_dialog.isSilenced = vAlarmStatus.alarm_Flag_alarmsSilenced - _alarm_bar.toggleSilence(vAlarmStatus.alarm_Flag_alarmsSilenced, - vAlarmStatus.alarm_MuteTimeout); + 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: { + [ + _alarmDialog.titleBarBackground, + _alarmDialog.titleBarForeground, + _alarmDialog.backgroundColor , + _alarmDialog.textColor , + ] = Colors.alarmPriorityColors(vAlarmStatus.alarm_Priority) + } - if (isAlarmHighPriority()) { - _alarm_dialog.visible = true; - _alarm_bar.visible = false; - } else { - if (!_alarm_dialog.visible) { - _alarm_bar.visible = true; - } + onDidAlarmRaise: { + let silenceMinimize = false + if (vAlarmStatus.alarm_Flag_alarmsSilenced && silenceMinimize) { + // 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; - } + onDidAlarmEmpty: alarmHide() } }