Index: denali.pro.user =================================================================== diff -u -r13e65c3d271d503c2e2e2f1f20736652c470f8cc -rdb12df03b8067e1ccc81f190cabfb03359c3d8cb --- denali.pro.user (.../denali.pro.user) (revision 13e65c3d271d503c2e2e2f1f20736652c470f8cc) +++ denali.pro.user (.../denali.pro.user) (revision db12df03b8067e1ccc81f190cabfb03359c3d8cb) @@ -1,6 +1,6 @@ - + EnvironmentId Index: sources/storage/Settings.h =================================================================== diff -u -r265ce7409a0ea99a4ae059f5ce7978c9cdb10631 -rdb12df03b8067e1ccc81f190cabfb03359c3d8cb --- sources/storage/Settings.h (.../Settings.h) (revision 265ce7409a0ea99a4ae059f5ce7978c9cdb10631) +++ sources/storage/Settings.h (.../Settings.h) (revision db12df03b8067e1ccc81f190cabfb03359c3d8cb) @@ -75,24 +75,49 @@ eAlarms , eMessagesUnhandled , eSettingsSystem , + eGenericConfirm , }; + enum Key_Enum { + eKeyTitle , + eKeyMessage , + eKeyConfirm , + eKeyCancel , + }; + static QString category(Category_Enum vCategory) { switch (vCategory) { // NOTE: don't use default case eInstructions : return Storage::Settings_Category_Instructions ; case eConfigurationsDataList : return Storage::Settings_Category_ConfigurationsDataList ; case eAlarms : return Storage::Settings_Category_Alarms ; case eMessagesUnhandled : return Storage::Settings_Category_MessagesUnhandled ; case eSettingsSystem : return Storage::Settings_Category_SettingsSystem ; + case eGenericConfirm : return Storage::Settings_Category_GenericConfirm ; } return ""; } - static bool isCategoryInstructions (const QString &vCategory) { return vCategory == category(eInstructions ); } - static bool isCategoryConfigurationsDataList (const QString &vCategory) { return vCategory == category(eConfigurationsDataList ); } - static bool isCategoryAlarms (const QString &vCategory) { return vCategory == category(eAlarms ); } - static bool isCategoryMessagesUnhandled (const QString &vCategory) { return vCategory == category(eMessagesUnhandled ); } - static bool isCategorySettingsSystem (const QString &vCategory) { return vCategory == category(eSettingsSystem ); } + static QString key(Key_Enum vKey) { + switch (vKey) { // NOTE: don't use default + case eKeyTitle : return Storage::Settings_Key_Title ; + case eKeyMessage : return Storage::Settings_Key_Message ; + case eKeyConfirm : return Storage::Settings_Key_Confirm ; + case eKeyCancel : return Storage::Settings_Key_Cancel ; + } + return ""; + } + + static bool isCategoryInstructions (const QString &vCategory) { return vCategory == category( eInstructions ); } + static bool isCategoryConfigurationsDataList (const QString &vCategory) { return vCategory == category( eConfigurationsDataList ); } + static bool isCategoryAlarms (const QString &vCategory) { return vCategory == category( eAlarms ); } + static bool isCategoryMessagesUnhandled (const QString &vCategory) { return vCategory == category( eMessagesUnhandled ); } + static bool isCategorySettingsSystem (const QString &vCategory) { return vCategory == category( eSettingsSystem ); } + static bool isCategoryConfirm (const QString &vCategory) { return vCategory == category( eGenericConfirm ); } + static bool isKeyTitle (const QString &vKey ) { return vKey == key ( eKeyTitle ); } + static bool isKeyMessage (const QString &vKey ) { return vKey == key ( eKeyMessage ); } + static bool isKeyConfirm (const QString &vKey ) { return vKey == key ( eKeyConfirm ); } + static bool isKeyCancel (const QString &vKey ) { return vKey == key ( eKeyCancel ); } + }; } Index: sources/storage/StorageGlobals.cpp =================================================================== diff -u -r265ce7409a0ea99a4ae059f5ce7978c9cdb10631 -rdb12df03b8067e1ccc81f190cabfb03359c3d8cb --- sources/storage/StorageGlobals.cpp (.../StorageGlobals.cpp) (revision 265ce7409a0ea99a4ae059f5ce7978c9cdb10631) +++ sources/storage/StorageGlobals.cpp (.../StorageGlobals.cpp) (revision db12df03b8067e1ccc81f190cabfb03359c3d8cb) @@ -75,8 +75,12 @@ const char *Settings_Category_MessagesUnhandled = "Messages/Unhandled" ; const char *Settings_Category_SettingsSystem = "Settings/System" ; const char *Settings_Category_NoCANBus = "Development/NoCANBus" ; + const char *Settings_Category_GenericConfirm = "Confirm/Confirm" ; + const char *Settings_Key_Title = "Title" ; + const char *Settings_Key_Message = "Message" ; + const char *Settings_Key_Confirm = "Confirm" ; + const char *Settings_Key_Cancel = "Cancel" ; - // CloudSync credentials #ifdef BUILD_FOR_TARGET const char *CloudSync_Base_Path_Name = "/home/root/.cloudSync/"; Index: sources/storage/StorageGlobals.h =================================================================== diff -u -r265ce7409a0ea99a4ae059f5ce7978c9cdb10631 -rdb12df03b8067e1ccc81f190cabfb03359c3d8cb --- sources/storage/StorageGlobals.h (.../StorageGlobals.h) (revision 265ce7409a0ea99a4ae059f5ce7978c9cdb10631) +++ sources/storage/StorageGlobals.h (.../StorageGlobals.h) (revision db12df03b8067e1ccc81f190cabfb03359c3d8cb) @@ -51,6 +51,12 @@ extern const char *Settings_Category_MessagesUnhandled ; extern const char *Settings_Category_SettingsSystem ; extern const char *Settings_Category_NoCANBus ; + extern const char *Settings_Category_GenericConfirm ; + // Settings - Keys + extern const char *Settings_Key_Title ; + extern const char *Settings_Key_Message ; + extern const char *Settings_Key_Confirm ; + extern const char *Settings_Key_Cancel ; // CloudSync_Credentials_Path_Name extern const char *CloudSync_Base_Path_Name; Index: sources/view/confirm/VConfirm.cpp =================================================================== diff -u -rf502bc55feb08cd037d9caa12086d30034fe715b -rdb12df03b8067e1ccc81f190cabfb03359c3d8cb --- sources/view/confirm/VConfirm.cpp (.../VConfirm.cpp) (revision f502bc55feb08cd037d9caa12086d30034fe715b) +++ sources/view/confirm/VConfirm.cpp (.../VConfirm.cpp) (revision db12df03b8067e1ccc81f190cabfb03359c3d8cb) @@ -16,6 +16,7 @@ // Project #include "GuiController.h" +#include "Settings.h" VIEW_DEF_CLASS_ADJUSTMENT(VConfirm) @@ -26,6 +27,7 @@ void View::VConfirm::initConnections() { ACTION_VIEW_CONNECTION(DuetConfirmHDiData ); ACTION_VIEW_CONNECTION(PowerOffData ); + ACTION_VIEW_CONNECTION(SettingsData ); ADJUST_VIEW_CONNECTION(DuetConfirmUIrData ); } @@ -122,3 +124,39 @@ data.mConfirm = vConfirm; emit didAdjustment(data); } + +void View::VConfirm::onActionReceive(const SettingsData &) { + QStringList mCategorys = _Settings.categorys(); + for (const QString &category : mCategorys) { + QStringList groups = _Settings.groups(category); + if ( ! Storage::Settings::isCategoryConfirm( category ) ) continue; + + for (const auto &group : groups) { + bool ok = true; + quint32 id = group.toInt( &ok ); + if ( ! ok ) { LOG_DEBUG(QString("Not an confirm 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); + // } + } + } + // emit alarm_AlarmIDChanged(_alarm_AlarmID); // to get the dialog content in sync with the Alarm.conf in case there is an early alarm. +} Index: sources/view/confirm/VConfirm.h =================================================================== diff -u -rf502bc55feb08cd037d9caa12086d30034fe715b -rdb12df03b8067e1ccc81f190cabfb03359c3d8cb --- sources/view/confirm/VConfirm.h (.../VConfirm.h) (revision f502bc55feb08cd037d9caa12086d30034fe715b) +++ sources/view/confirm/VConfirm.h (.../VConfirm.h) (revision db12df03b8067e1ccc81f190cabfb03359c3d8cb) @@ -21,6 +21,7 @@ #include "VAdjustmentResponseBase.h" #include "MDuetConfirmHDi.h" #include "MAdjustPowerOff.h" +#include "MSettings.h" namespace View { @@ -66,6 +67,7 @@ VIEW_DEC_CLASS (VConfirm ) VIEW_DEC_SLOT (DuetConfirmHDiData ) VIEW_DEC_SLOT (PowerOffData ) + VIEW_DEC_SLOT (SettingsData ) public slots: void doConfirm(bool vConfirm); Index: sources/view/hd/alarm/VAlarmStatus.cpp =================================================================== diff -u -rf502bc55feb08cd037d9caa12086d30034fe715b -rdb12df03b8067e1ccc81f190cabfb03359c3d8cb --- sources/view/hd/alarm/VAlarmStatus.cpp (.../VAlarmStatus.cpp) (revision f502bc55feb08cd037d9caa12086d30034fe715b) +++ sources/view/hd/alarm/VAlarmStatus.cpp (.../VAlarmStatus.cpp) (revision db12df03b8067e1ccc81f190cabfb03359c3d8cb) @@ -195,16 +195,16 @@ 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 () ; } +QString VAlarmStatus::title () { if ( ! _alarm_AlarmID ) return {}; QString s = _alarms[_alarm_AlarmID].title ; if ( ! s.isEmpty()) return s; else return tr("Alarm") ; } +QString VAlarmStatus::message () { if ( ! _alarm_AlarmID ) return {}; QString s = _alarms[_alarm_AlarmID].message; if ( ! s.isEmpty()) return s; else return text() ; } +QStringList VAlarmStatus::instructionKeys () { if ( ! _alarm_AlarmID ) return {}; return _alarms[_alarm_AlarmID].instructions.keys () ; } +QStringList VAlarmStatus::instructionValues () { if ( ! _alarm_AlarmID ) return {}; 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; + QStringList groups = _Settings.groups(category); for (const auto &group : groups) { bool ok = true; @@ -214,9 +214,9 @@ AlarmData alarmData; InstructionData instructionData; for (const QString &key : _Settings.keys(group)) { - if (isTitle ( key ) ) { + if (Storage::Settings::isKeyTitle ( key ) ) { alarmData.title = _Settings.value(group, key).toString(); - } else if (isMessage ( key ) ) { + } else if (Storage::Settings::isKeyMessage ( key ) ) { alarmData.message = _Settings.value(group, key).toString(); } else { instructionData[key] = _Settings.value(group, key).toString(); Index: sources/view/hd/alarm/VAlarmStatus.h =================================================================== diff -u -r265ce7409a0ea99a4ae059f5ce7978c9cdb10631 -rdb12df03b8067e1ccc81f190cabfb03359c3d8cb --- sources/view/hd/alarm/VAlarmStatus.h (.../VAlarmStatus.h) (revision 265ce7409a0ea99a4ae059f5ce7978c9cdb10631) +++ sources/view/hd/alarm/VAlarmStatus.h (.../VAlarmStatus.h) (revision db12df03b8067e1ccc81f190cabfb03359c3d8cb) @@ -21,9 +21,10 @@ #include "main.h" // Doxygen : do not remove #include "VView.h" #include "MTreatmentAdjustRequests.h" +#include "MAlarmStatusData.h" +#include "MSettings.h" #include "GuiGlobals.h" #include "MessageGlobals.h" -#include "GuiController.h" #include "format.h" // forward declarations @@ -58,14 +59,6 @@ bool hasInstruction() { return instructions.count(); } }; - bool isTitle (const QString &vKey) { - return vKey == "Title"; - } - - bool isMessage (const QString &vKey) { - return vKey == "Message"; - } - QMap _alarms; // ********** DYNAMIC PROPERTIES: The properties which need to be updated by each alarm message received. ********** // Index: sources/view/settings/VSettings.cpp =================================================================== diff -u -r265ce7409a0ea99a4ae059f5ce7978c9cdb10631 -rdb12df03b8067e1ccc81f190cabfb03359c3d8cb --- sources/view/settings/VSettings.cpp (.../VSettings.cpp) (revision 265ce7409a0ea99a4ae059f5ce7978c9cdb10631) +++ sources/view/settings/VSettings.cpp (.../VSettings.cpp) (revision db12df03b8067e1ccc81f190cabfb03359c3d8cb) @@ -73,6 +73,7 @@ } else { //TODO: Since it is global system settings, move this to the settings controller so the C++ backend can also use it. like Date/Time formats. for (const auto &key : keys) { + // DEBUG: qDebug() << " ~~~~~~~~~~ " << key << _Settings.value(group, key).toString (); QVariantMap keyValue; if ( isservicePass (category, group, key) ) { QString mServicePass;