Index: sources/view/hd/alarm/VAlarmStatus.cpp =================================================================== diff -u -r79a6cfcb10472261f3ec26eaf0baf6f1245cd311 -r6f2622be80fcaee8d71baf78404627381157970c --- sources/view/hd/alarm/VAlarmStatus.cpp (.../VAlarmStatus.cpp) (revision 79a6cfcb10472261f3ec26eaf0baf6f1245cd311) +++ sources/view/hd/alarm/VAlarmStatus.cpp (.../VAlarmStatus.cpp) (revision 6f2622be80fcaee8d71baf78404627381157970c) @@ -16,11 +16,13 @@ // Project #include "GuiController.h" +#include "Settings.h" VIEW_DEF_CLASS_ADJUSTMENT(VAlarmStatus) void VAlarmStatus::initConnections() { ACTION_VIEW_CONNECTION(AlarmStatusData ); + ACTION_VIEW_CONNECTION(SettingsData ); ADJUST_VIEW_CONNECTION(AlarmSilenceRequestData ); ADJUST_VIEW_CONNECTION(AlarmUserActionRequestData ); /* // disabled coco begin validated: Manually tested. This model class is a placeholder and there is no use case for this now. @@ -192,3 +194,42 @@ return alarmIDText(static_cast(alarm_AlarmID())); } +QString VAlarmStatus::title () { QString s = _alarms[_alarm_AlarmID].title ; if ( ! s.isEmpty()) return s; else return tr("Alarm") ; } +QString VAlarmStatus::message () { QString s = _alarms[_alarm_AlarmID].message; if ( ! s.isEmpty()) return s; else return text() ; } +QStringList VAlarmStatus::instructionKeys () { return _alarms[_alarm_AlarmID].instructions.keys () ; } +QStringList VAlarmStatus::instructionValues () { return _alarms[_alarm_AlarmID].instructions.values () ; } + +void VAlarmStatus::onActionReceive(const SettingsData &) { + QStringList mCategorys = _Settings.categorys(); + for (const QString &category : mCategorys) { + QStringList groups = _Settings.groups(category); + if ( ! Storage::Settings::isCategoryAlarms( category ) ) continue; + + for (const auto &group : groups) { + bool ok = true; + quint32 id = group.toInt( &ok ); + if ( ! ok ) { LOG_DEBUG(QString("Not an alarm ID number [%1]").arg(group)); continue; } + + AlarmData alarmData; + InstructionData instructionData; + for (const QString &key : _Settings.keys(group)) { + if (isTitle ( key ) ) { + alarmData.title = _Settings.value(group, key).toString(); + } else if (isMessage ( key ) ) { + alarmData.message = _Settings.value(group, key).toString(); + } else { + instructionData[key] = _Settings.value(group, key).toString(); + alarmData.instructions = instructionData; + } + } + _alarms[id] = alarmData; + + /// DEBUG: + /// TODO: the MSettings model should do the same has been done here and use map instead of separate structure to iterate vertically, while map supports, keys, values. + // qDebug() << "@" << id << _alarms[id].title << _alarms[id].message << _alarms[id].instructions.keys() << _alarms[id].instructions.values(); + // for (const auto &key : _alarms[id].instructions.keys()) { + // qDebug() << "-" << key << _alarms[id].instructions.value(key); + // } + } + } +}