Index: sources/gui/qml/main.qml =================================================================== diff -u -r8f71000a841da5e8f18efccbb30a7655d3a211cd -r64d87d540594252e8039ab2595016d98f1e3cc28 --- sources/gui/qml/main.qml (.../main.qml) (revision 8f71000a841da5e8f18efccbb30a7655d3a211cd) +++ sources/gui/qml/main.qml (.../main.qml) (revision 64d87d540594252e8039ab2595016d98f1e3cc28) @@ -1,14 +1,15 @@ /*! * * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. - * \copyright \n - * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, \n - * IN PART OR IN WHOLE, \n - * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. \n + * \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 main.qml - * \date 2019/09/30 - * \author Behrouz NematiPour + * \file main.qml + * \author (last) Behrouz NematiPour + * \date (last) 12-Sep-2020 + * \author (original) Behrouz NematiPour + * \date (original) 24-Sep-2019 * */ @@ -29,15 +30,23 @@ import VTreatmentTime 0.1; import VAlarmStatus 0.1; import VPowerOff 0.1; +import VHDOperationMode 0.1; import VTreatmentAdjustmentDuration 0.1; import VTreatmentAdjustmentFlows 0.1; import VTreatmentAdjustmentUltrafiltrationState 0.1; import VTreatmentAdjustmentUltrafiltrationEdit 0.1; import VTreatmentAdjustmentUltrafiltrationConfirm 0.1; -import VLoadCellReadings 0.1; -import VTemperatureSensors 0.1; +import VDGDrainPump 0.1; +import VDGHeaters 0.1; +import VDGLoadCellReadings 0.1; +import VDGOperationMode 0.1; +import VDGPressures 0.1; +import VDGROPump 0.1; +import VDGReservoir 0.1; +import VDGTemperatures 0.1; +import VDGValvesStates 0.1; // Qml imports import "qrc:/globals" @@ -59,7 +68,7 @@ onDidActionReceive: { //console.debug(vAction, vData) switch(vAction) { - case GuiActions.PowerOffBroadcast: + case GuiActions.ID_ShuttingDown: _autoHideInfo.showDialog( qsTr("System is shutting down"), 5000 // if any error happens and shutdown is not successful then after 5 seconds dialog hides. @@ -71,18 +80,45 @@ // TODO : When Testing data on Setting screen is removed // This needs to be moved into the Treatment______.qml + VAlarmStatus { id: vAlarmStatus + onRaiseAlarm: { + updateAlarm(); + _alarm_dialog.isSilenced = vAlarmStatus.alarm_Flag_alarmsSilenced + _alarm_bar.toggleSilence(vAlarmStatus.alarm_Flag_alarmsSilenced, + vAlarmStatus.alarm_MuteTimeout); + if (isAlarmHighPriority()) { + _alarm_dialog.visible = true; + _alarm_bar.visible = false; + } else { + if (!_alarm_dialog.visible) { + _alarm_bar.visible = true; + } + } + } - VAlarmStatus { id: vAlarmStatus } - VPowerOff { id: vPowerOff } + onHideAlarm: { + _alarm_bar.visible = false; + _alarm_dialog.visible = false; + } + } + VPowerOff { id: vPowerOff } + VHDOperationMode { id: vHDOperationMode } VTreatmentBloodFlow { id: vTreatmentBloodFlow } VTreatmentDialysateFlow { id: vTreatmentDialysateFlow } VTreatmentPressureOcclusion { id: vTreatmentPressureOcclusion } VTreatmentUltrafiltration { id: vTreatmentUltrafiltration } VTreatmentTime { id: vTreatmentTime } - VLoadCellReadings { id: vLoadCellReadings } - VTemperatureSensors { id: vTemperatureSensors } + VDGDrainPump { id: vDGDrainPump } + VDGHeaters { id: vDGHeaters } + VDGLoadCellReadings { id: vDGLoadCellReadings } + VDGOperationMode { id: vDGOperationMode } + VDGPressures { id: vDGPressures } + VDGROPump { id: vDGROPump } + VDGReservoir { id: vDGReservoir } + VDGTemperatures { id: vDGTemperatures } + VDGValvesStates { id: vDGValvesStates } VTreatmentAdjustmentDuration { id: vTreatmentAdjustmentDuration } VTreatmentAdjustmentFlows { id: vTreatmentAdjustmentFlows } @@ -117,25 +153,70 @@ PowerOff { id: _powerOffDialog onAccepted: { - _GuiView.doActionTransmit(GuiActions.PowerOff, GuiActions.Accepted) + _GuiView.doActionTransmit(GuiActions.ID_PowerOff, GuiActions.Accepted) } onRejected: { - _GuiView.doActionTransmit(GuiActions.PowerOff, GuiActions.Rejected) + _GuiView.doActionTransmit(GuiActions.ID_PowerOff, GuiActions.Rejected) } } - NotificationBar { id: _alarm + NotificationBar { id: _alarm_bar + anchors.bottom: _mainMenu.top level : vAlarmStatus.alarm_Priority - text : vAlarmStatus.text + text : vAlarmStatus.text; + isSilenced: vAlarmStatus.alarm_Flag_alarmsSilenced; + + onClickedNotificationBar: { + updateAlarm(); + _alarm_bar.setFlashing(false); + _alarm_bar.visible = false; + _alarm_dialog.visible = true; + } + + } + function isAlarmHighPriority() { + return vAlarmStatus.alarm_Priority === GuiActions.ALARM_PRIORITY_HIGH; + } + + 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; + } + + NotificationDialog { id: _alarm_dialog + alarmID: -1 + onClosed: { + _alarm_bar.visible = true; + } + onClickedOkay: { + _alarm_dialog.visible = false; + vAlarmStatus.requestOkay(alarmID) + if (isAlarmHighPriority()) { + _alarm_bar.setFlashing(true); + return; + } + _alarm_bar.setFlashing(false); + } + + onClickedSilence: { + _alarm_dialog.visible = false; + vAlarmStatus.requestSilence(); + } + } + // 9 - Others Text { // TEST : Application version should be moved into the information screen later. color: Colors.textMain anchors { right: parent.right - margins: 10 + margins: 5 bottom: parent.bottom } horizontalAlignment: Text.AlignRight @@ -146,6 +227,73 @@ 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 + } + width : 25 + height: 25 + radius: width + Image { id: _imageMicrosd + anchors.fill: parent + source: "qrc:/images/iMicroSD" + } + 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) {