Index: sources/gui/qml/AlarmItem.qml =================================================================== diff -u -r7a1509a80fed2dd51aa28b460acbf0227d0c96d7 -r76d4131d70c18cbfaf47c242c17258e80161e8dc --- sources/gui/qml/AlarmItem.qml (.../AlarmItem.qml) (revision 7a1509a80fed2dd51aa28b460acbf0227d0c96d7) +++ sources/gui/qml/AlarmItem.qml (.../AlarmItem.qml) (revision 76d4131d70c18cbfaf47c242c17258e80161e8dc) @@ -53,6 +53,11 @@ _alarmBar .visible = true } function alarmMaximize() { + // The has alarm check has been added here to let other components call this function, + // without worrying about the alarmDialog popoing up without an alarm present. + // Look at the PowerItem as an example. + if ( ! vAlarmStatus.hasAlarm ) return; + _alarmDialog .visible = true _alarmListDialog.visible = false _alarmBar .visible = false Index: sources/gui/qml/PowerItem.qml =================================================================== diff -u -rc15ce613e372838316d42c40a86953e6f0aa05d3 -r76d4131d70c18cbfaf47c242c17258e80161e8dc --- sources/gui/qml/PowerItem.qml (.../PowerItem.qml) (revision c15ce613e372838316d42c40a86953e6f0aa05d3) +++ sources/gui/qml/PowerItem.qml (.../PowerItem.qml) (revision 76d4131d70c18cbfaf47c242c17258e80161e8dc) @@ -52,6 +52,10 @@ } PowerOff { id: _powerOffDialog + onVisibleChanged: { + if (visible) _alarmItem.alarmHide() + else _alarmItem.alarmMaximize() + } onAccepted: { _GuiView.doActionTransmit(GuiActions.ID_PowerOff, GuiActions.Accepted) } @@ -65,10 +69,12 @@ switch (vpoweroff) { case GuiActions.Command: _powerOffDialog.open() + _alarmItem.alarmHide() break; case GuiActions.Timeout: _powerOffDialog.close() + _alarmItem.alarmMaximize() break; case GuiActions.Rejected: Index: sources/gui/qml/components/Slider.qml =================================================================== diff -u -r61f16c988a159401c92730b4cbfca5085c77222f -r76d4131d70c18cbfaf47c242c17258e80161e8dc --- sources/gui/qml/components/Slider.qml (.../Slider.qml) (revision 61f16c988a159401c92730b4cbfca5085c77222f) +++ sources/gui/qml/components/Slider.qml (.../Slider.qml) (revision 76d4131d70c18cbfaf47c242c17258e80161e8dc) @@ -114,7 +114,7 @@ if ( ! stepSnap ) start = minimum value = Math.round((value - start) / step) * step + start let decimals = Math.round(-Math.log10(step)) - if (decimals >= 0) value = value.toFixed(decimals) + if (decimals > 0) value = value.toFixed(decimals) if ( value < minimum ) { value = minimum; return; } if ( value > maximum ) { value = maximum; return; } Index: sources/gui/qml/main.qml =================================================================== diff -u -r2dd767833cf0cf706c457951c2d78e7e20aff768 -r76d4131d70c18cbfaf47c242c17258e80161e8dc --- sources/gui/qml/main.qml (.../main.qml) (revision 2dd767833cf0cf706c457951c2d78e7e20aff768) +++ sources/gui/qml/main.qml (.../main.qml) (revision 76d4131d70c18cbfaf47c242c17258e80161e8dc) @@ -285,7 +285,6 @@ font.pixelSize: 14 } - PowerItem { id: _powerItem } SDItem { id: _sdItem // TODO: disable this later. this is only for diagnostic purpose. onDoubleClicked : { @@ -297,8 +296,11 @@ Keyboard { id: _keyboard } // AlarmItem should always be at the end so nothing covers it - AlarmItem { id: _alarmItem ; z: 998 } + AlarmItem { id: _alarmItem ; z: 997 } + // PowerOff screen should still be avilable. Even if the Alarm happens the Power option should be available. + PowerItem { id: _powerItem ; z: 998 } + // this dialog as an exception can cover the Alarm for debugging and testing. DiagnosticsDialog { id: _diagnosticsDialog; z: 999 } Index: sources/main.h =================================================================== diff -u -raeb915075b9e13e5c1aaf2800ba6db03b6c24a0b -r76d4131d70c18cbfaf47c242c17258e80161e8dc --- sources/main.h (.../main.h) (revision aeb915075b9e13e5c1aaf2800ba6db03b6c24a0b) +++ sources/main.h (.../main.h) (revision 76d4131d70c18cbfaf47c242c17258e80161e8dc) @@ -158,6 +158,38 @@ return _##vVARIABLE ; \ } //--------------------------------------------------------------------------------// +#define READONLY_BASE(vTYPE , vVARIABLE , vDEFVALUE, vSIGNAL) \ + /*! \brief Qt Read-Only Property declaration + \details The Qt Property definition by Q_PROPERTY documentation. + */\ + Q_PROPERTY( vTYPE vVARIABLE \ + READ vVARIABLE \ + NOTIFY vVARIABLE##vSIGNAL) \ + Q_SIGNALS: \ + /*! \brief Property notify signal + \details The property notify signal (...Changed) + which will be emitted by property setter + - if only the value has been changed \n + - or it's the first time property is set. \n + \return current value + */\ + void vVARIABLE##vSIGNAL( const vTYPE & v##vVARIABLE ); \ + private: \ + vTYPE _##vVARIABLE = vDEFVALUE; \ + bool _##vVARIABLE##Changed = false; \ + protected: \ + /*! \brief Property getter + \details The property getter which reads the private variable + \return current value + */\ + vTYPE vVARIABLE () const { \ + return _##vVARIABLE ; \ + } +//--------------------------------------------------------------------------------// +#define READONLY( vTYPE , vVARIABLE , vDEFVALUE ) \ + READONLY_BASE( vTYPE , vVARIABLE , vDEFVALUE , Changed ) \ + PROPERTY_SLOT( vTYPE , vVARIABLE) +//--------------------------------------------------------------------------------// #define PROPERTY( vTYPE , vVARIABLE , vDEFVALUE ) \ PROPERTY_BASE( vTYPE , vVARIABLE , vDEFVALUE , Changed ) \ PROPERTY_SLOT( vTYPE , vVARIABLE) Index: sources/view/hd/alarm/VAlarmStatus.cpp =================================================================== diff -u -r7a1509a80fed2dd51aa28b460acbf0227d0c96d7 -r76d4131d70c18cbfaf47c242c17258e80161e8dc --- sources/view/hd/alarm/VAlarmStatus.cpp (.../VAlarmStatus.cpp) (revision 7a1509a80fed2dd51aa28b460acbf0227d0c96d7) +++ sources/view/hd/alarm/VAlarmStatus.cpp (.../VAlarmStatus.cpp) (revision 76d4131d70c18cbfaf47c242c17258e80161e8dc) @@ -147,6 +147,7 @@ emit didAlarmEmpty(); } else { + hasAlarm(true); if ( // alarm id properties _alarm_AlarmIDChanged Index: sources/view/hd/alarm/VAlarmStatus.h =================================================================== diff -u -rfc329c788fe9453983072bee937ccbc95b4ed6e4 -r76d4131d70c18cbfaf47c242c17258e80161e8dc --- sources/view/hd/alarm/VAlarmStatus.h (.../VAlarmStatus.h) (revision fc329c788fe9453983072bee937ccbc95b4ed6e4) +++ sources/view/hd/alarm/VAlarmStatus.h (.../VAlarmStatus.h) (revision 76d4131d70c18cbfaf47c242c17258e80161e8dc) @@ -49,6 +49,7 @@ // friends friend class ::tst_views; + READONLY( bool , hasAlarm , false) // coco begin validated: Has been validated manually PROPERTY( quint32 , alarm_Priority , 0) PROPERTY( quint32 , alarm_AlarmID , 0)