Index: sources/model/MListModel.cpp =================================================================== diff -u -r8c7b9550b05f223be9d094e850e06f9ed80adb70 -r04922336fb5b75145d4b89343c77928da28f6ef6 --- sources/model/MListModel.cpp (.../MListModel.cpp) (revision 8c7b9550b05f223be9d094e850e06f9ed80adb70) +++ sources/model/MListModel.cpp (.../MListModel.cpp) (revision 04922336fb5b75145d4b89343c77928da28f6ef6) @@ -45,10 +45,18 @@ return QVariant(); } - // ensure the role is in the data and return it, otherwise return invalid - return (_data[vIndex.row()].find(vRole) != _data[vIndex.row()].end()) - ? _data[vIndex.row()][vRole] - : QVariant(); + // ensure the data is not empty + if ( _data.isEmpty() ) { return QVariant(); } + + // ensure the role is in the data + if ( _data[vIndex.row()].find(vRole) == _data[vIndex.row()].end()) { return QVariant(); } + + QVariant mData = _data[vIndex.row()][vRole]; + + // check if data is valid + if (! mData.isValid()) { return QVariant(); } + + return mData; } /*! @@ -57,15 +65,33 @@ */ QVariantMap View::MListModel::get(int vRow) const { - if (vRow < 0 || vRow >= rowCount()) { - return {}; - } + // Row bounds check + if (vRow < 0 || vRow >= rowCount()) { return {}; } QHash roles = roleNames(); + + // Check if roles are defined + if ( roles.isEmpty() ) { return {}; } + QVariantMap map; - for (auto it = roles.begin(); it != roles.end(); ++it) { - map[it.value()] = data(index(vRow, 0), it.key()); + for (auto it = roles.cbegin(); it != roles.cend(); ++it) { + const int role = it.key(); + const QByteArray roleName = it.value(); + + if ( roleName.isEmpty() ) { + qWarning() << "Empty role name for role id:" << role; + continue; + } + + QVariant value = data(index(vRow, 0), role); + if ( ! value.isValid() ) { + qWarning() << "Invalid value for role:" << roleName << "row:" << vRow; + continue; + } + + map.insert(QString::fromUtf8(roleName), value); } + return map; } Index: sources/view/hd/alarm/VAlarmStatus.cpp =================================================================== diff -u -r8c7b9550b05f223be9d094e850e06f9ed80adb70 -r04922336fb5b75145d4b89343c77928da28f6ef6 --- sources/view/hd/alarm/VAlarmStatus.cpp (.../VAlarmStatus.cpp) (revision 8c7b9550b05f223be9d094e850e06f9ed80adb70) +++ sources/view/hd/alarm/VAlarmStatus.cpp (.../VAlarmStatus.cpp) (revision 04922336fb5b75145d4b89343c77928da28f6ef6) @@ -213,9 +213,7 @@ .arg(_Settings.value(category, group, key).toString()); QHash instructionStep; instructionStep.insert(eRole_Instruction, key); - instructionStep.insert(eRole_Image, QFile::exists(imagePath) ? "file:" + imagePath : - QStringLiteral("file:%1%2").arg(_location) - .arg("defaultImage.png")); + instructionStep.insert(eRole_Image, QFile::exists(imagePath) ? "file:" + imagePath : "") ; instructionData.append(instructionStep); alarmData.instructions = instructionData; Index: sources/view/hd/alarm/VAlarmStatus.h =================================================================== diff -u -r8c7b9550b05f223be9d094e850e06f9ed80adb70 -r04922336fb5b75145d4b89343c77928da28f6ef6 --- sources/view/hd/alarm/VAlarmStatus.h (.../VAlarmStatus.h) (revision 8c7b9550b05f223be9d094e850e06f9ed80adb70) +++ sources/view/hd/alarm/VAlarmStatus.h (.../VAlarmStatus.h) (revision 04922336fb5b75145d4b89343c77928da28f6ef6) @@ -85,7 +85,7 @@ Q_PROPERTY(QString title READ title NOTIFY alarm_AlarmIDChanged ) Q_PROPERTY(QString listTitle READ listTitle NOTIFY alarm_AlarmIDChanged ) Q_PROPERTY(QString text READ text NOTIFY alarm_AlarmIDChanged ) - Q_PROPERTY(MListModel* instructions READ instructions NOTIFY alarm_AlarmIDChanged) + Q_PROPERTY(MListModel* instructions READ instructions NOTIFY alarm_AlarmIDChanged) VIEW_DEC_CLASS ( VAlarmStatus ) VIEW_DEC_SLOT ( AlarmStatusData ) @@ -105,9 +105,9 @@ QString listTitle (); QString text (); QString alarmIDText (GuiAlarmID vEnum); - MListModel* instructions() { return &_instructionsList; } ; + MListModel* instructions () { return &_instructionsList; } ; - MListModel _instructionsList; + MListModel _instructionsList; signals: void didAlarmRaise();