Index: sources/gui/qml/components/NotificationBar.qml =================================================================== diff -u -r0cfc05c548b7ef581ed1a7bd50a040654c252ca3 -rc66e8e38c6c26cf108c975a7b068e45fe5b56f89 --- sources/gui/qml/components/NotificationBar.qml (.../NotificationBar.qml) (revision 0cfc05c548b7ef581ed1a7bd50a040654c252ca3) +++ sources/gui/qml/components/NotificationBar.qml (.../NotificationBar.qml) (revision c66e8e38c6c26cf108c975a7b068e45fe5b56f89) @@ -36,6 +36,21 @@ _bell.source = isSilenced ? "qrc:/images/bell-off.svg" : "qrc:/images/bell.svg" } + Timer { + id: _timer + interval: 1000; + running: false; + repeat: true; + onTriggered: { + _root.visible = !_root.visible; + + } + } + + function setFlashing(enable) { + _timer.running = enable; + } + visible : _text.text height : Variables.notificationHeight Index: sources/gui/qml/dialogs/Alarm.qml =================================================================== diff -u -r1a364403f0d1839397054b1eca4d51201b0cf943 -rc66e8e38c6c26cf108c975a7b068e45fe5b56f89 --- sources/gui/qml/dialogs/Alarm.qml (.../Alarm.qml) (revision 1a364403f0d1839397054b1eca4d51201b0cf943) +++ sources/gui/qml/dialogs/Alarm.qml (.../Alarm.qml) (revision c66e8e38c6c26cf108c975a7b068e45fe5b56f89) @@ -32,10 +32,24 @@ property alias okayBtn : _okay; property alias dismissBtn : _dismiss; property bool isSilenced : false; + property int alarmID : -1 signal pressedSilence(); signal pressedOkay(); + Timer { + id: _timer + interval: 1; + running: false; + onTriggered: { + _root.visible = !_root.visible; + } + } + + function setFlashing(enable) { + _timer.running = enable; + } + radius: 0; Rectangle { id: _titleBar; Index: sources/gui/qml/main.qml =================================================================== diff -u -r733dbd53c542d94baa4862b6d657aa555209ee00 -rc66e8e38c6c26cf108c975a7b068e45fe5b56f89 --- sources/gui/qml/main.qml (.../main.qml) (revision 733dbd53c542d94baa4862b6d657aa555209ee00) +++ sources/gui/qml/main.qml (.../main.qml) (revision c66e8e38c6c26cf108c975a7b068e45fe5b56f89) @@ -111,23 +111,23 @@ VAlarmStatus { id: vAlarmStatus onRaiseAlarm: { updateAlarm(); - _notification.isSilenced = vAlarmStatus.alarm_Flag_alarmsSilenced - _notification_bar.toggleSilence(vAlarmStatus.alarm_Flag_alarmsSilenced, + _alarm_dialog.isSilenced = vAlarmStatus.alarm_Flag_alarmsSilenced + _alarm_bar.toggleSilence(vAlarmStatus.alarm_Flag_alarmsSilenced, vAlarmStatus.alarm_MuteTimeout); - if (vAlarmStatus.alarm_Priority === GuiActions.ALARM_PRIORITY_HIGH) { - _notification.visible = true; - _notification_bar.visible = false; + if (isAlarmHighPriority()) { + _alarm_dialog.visible = true; + _alarm_bar.visible = false; } else { - if (!_notification.visible) { - _notification_bar.visible = true; + if (!_alarm_dialog.visible) { + _alarm_bar.visible = true; } } } onHideAlarm: { - _notification_bar.visible = false; - _notification.visible = false; + _alarm_bar.visible = false; + _alarm_dialog.visible = false; } } VPowerOff { id: vPowerOff @@ -187,43 +187,53 @@ } - NotificationBar { id: _notification_bar + NotificationBar { id: _alarm_bar anchors.bottom: _mainMenu.top level : vAlarmStatus.alarm_Priority text : vAlarmStatus.text; isSilenced: vAlarmStatus.alarm_Flag_alarmsSilenced; - MouseArea { id: _TouchArea anchors.fill: parent; onClicked: { updateAlarm(); - _notification.visible = true; - _notification_bar.visible = false; - + _alarm_bar.setFlashing(false); + _alarm_bar.visible = false; + _alarm_dialog.visible = true; } } } + function isAlarmHighPriority() { + return vAlarmStatus.alarm_Priority === GuiActions.ALARM_PRIORITY_HIGH; + } + function updateAlarm() { - _notification.titleText = "Alarm"; - _notification.description = vAlarmStatus.text; - [_notification.backgroundColor, _notification.textColor] = getRootTextFromAlarmLevel(vAlarmStatus.alarm_Priority); - [_notification.titleBarBackground, _notification.titleBarForeground] = getAlarmTopBarColors(vAlarmStatus.alarm_Priority); - _notification_bar.backgroundColor = _notification.titleBarBackground; + _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 { id: _notification + Alarm { id: _alarm_dialog onClosed: { - _notification_bar.visible = true; + _alarm_bar.visible = true; } onPressedOkay: { - _notification.visible = false; + _alarm_dialog.visible = false; + vAlarmStatus.requestOkay(alarmID) + if (isAlarmHighPriority()) { + _alarm_bar.setFlashing(true); + return; + } + _alarm_bar.setFlashing(false); } onPressedSilence: { - _notification.visible = false; + _alarm_dialog.visible = false; vAlarmStatus.requestSilence(); } } Index: sources/view/valarmstatus.cpp =================================================================== diff -u -r255df1f61af0193b8f2f9630bdf3ce68be0f5e29 -rc66e8e38c6c26cf108c975a7b068e45fe5b56f89 --- sources/view/valarmstatus.cpp (.../valarmstatus.cpp) (revision 255df1f61af0193b8f2f9630bdf3ce68be0f5e29) +++ sources/view/valarmstatus.cpp (.../valarmstatus.cpp) (revision c66e8e38c6c26cf108c975a7b068e45fe5b56f89) @@ -13,18 +13,29 @@ */ #include "valarmstatus.h" -// Qt +using namespace Gui; +using namespace View; -// Project -#include "guicontroller.h" -#include "format.h" +VAlarmStatus::VAlarmStatus(QObject *parent) +{ + Q_UNUSED(parent); -VIEW_DEF(VAlarmStatus, AlarmStatusData) + connect(&_GuiController, SIGNAL(didActionReceive(AlarmStatusData)), + this , SLOT(onActionReceive(AlarmStatusData))); -using namespace Gui; + connect(this, SIGNAL(requestActionTransmit(GuiActionType,QVariantList)), + &_GuiController, SLOT(doActionTransmit(GuiActionType,QVariantList))); +} void VAlarmStatus::onActionReceive(const AlarmStatusData &vData) { + GuiAlarmID alarmID = static_cast(vData.mTop); + if (acknowledgedAlarms.contains(alarmID)) { + qDebug() << "Alarm ID " << alarmID << " has been acknowleged and is visible. "; + LOG_EVENT(QObject::tr("Alarm ID %0 has been acknowleged and is visible. ").arg(alarmID)); + return; + } + alarm_Priority (vData.mState ); alarm_AlarmID (vData.mTop ); alarm_EscalateIn (vData.mMuteTimeout ); @@ -39,14 +50,13 @@ 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 )); + if (vData.mTop > GuiAlarmID::ALARM_ID_NO_ALARM) { emit raiseAlarm(); } else { emit hideAlarm(); } - connect(this, SIGNAL(requestActionTransmit(GuiActionType,QVariantList)), - &_GuiController, SLOT(doActionTransmit(GuiActionType,QVariantList))); } /*! @@ -111,6 +121,17 @@ * \brief VAlarmStatus::requestSilence * Send out a request to silence alarms. */ +void VAlarmStatus::requestOkay(GuiAlarmID alarmID) +{ + // TODO: Update with needed data. Placeholder for now. + qDebug() << "Requested okay alarm id: " << alarmID; + acknowledgedAlarms.append(alarmID); +} + +/*! + * \brief VAlarmStatus::requestSilence + * Send out a request to silence alarms. + */ void VAlarmStatus::requestSilence() { // TODO: Update with needed data. Placeholder for now. Index: sources/view/valarmstatus.h =================================================================== diff -u -r255df1f61af0193b8f2f9630bdf3ce68be0f5e29 -rc66e8e38c6c26cf108c975a7b068e45fe5b56f89 --- sources/view/valarmstatus.h (.../valarmstatus.h) (revision 255df1f61af0193b8f2f9630bdf3ce68be0f5e29) +++ sources/view/valarmstatus.h (.../valarmstatus.h) (revision c66e8e38c6c26cf108c975a7b068e45fe5b56f89) @@ -21,6 +21,8 @@ #include "vview.h" #include "guiglobals.h" #include "messageglobals.h" +#include "guicontroller.h" +#include "format.h" using namespace Can; // namespace @@ -30,7 +32,10 @@ class VAlarmStatus : public QObject { Q_OBJECT +public: + VAlarmStatus(QObject *parent = NULL); +private: PROPERTY( quint32 , alarm_Priority , 0) PROPERTY( quint32 , alarm_AlarmID , 0) PROPERTY( quint32 , alarm_EscalateIn , 0) @@ -46,12 +51,9 @@ PROPERTY( bool , alarm_Flag_alarmsToEscalate , false) PROPERTY( bool , alarm_Flag_alarmsSilenced , false) - - Q_PROPERTY(QString text READ text NOTIFY alarm_AlarmIDChanged) Q_PROPERTY(QString id READ id NOTIFY alarm_AlarmIDChanged) - VIEW_DEC(VAlarmStatus, AlarmStatusData) signals: void raiseAlarm(); void hideAlarm(); @@ -60,10 +62,16 @@ private: QString alarmPriorityText (GuiAlarmPriority vEnum); QString alarmIDText (GuiAlarmID vEnum); + QList acknowledgedAlarms; +private slots: + void onActionReceive(const AlarmStatusData &vData); + + public slots: QString text(); QString id(); + void requestOkay(GuiAlarmID alarmID); void requestSilence(); };