#include "VAlarmInstructionsModel.h" VIEW_DEF_CLASS_EX(VAlarmInstructionsModel, QAbstractListModel) void VAlarmInstructionsModel::initConnections() { } /*! * \brief Retrieve the role names set for this list model. * \return Role names used for this model. */ QHash View::VAlarmInstructionsModel::roleNames() const { return _dataRoles; } /*! * \brief Get the number of rows in this list model. * \return Number of rows in this list model. */ int View::VAlarmInstructionsModel::rowCount(const QModelIndex &) const { return _data.size(); } /*! * \brief Retrieve the data stored at the given index for the specified role. * \param[in] index Index of the data in the list model. * \param[in] role Role of the data to fetch. * \return Data at index for role or Invalid if index or role are not valid. */ QVariant View::VAlarmInstructionsModel::data(const QModelIndex &vIndex, int vRole) const { // check for invalid or out of bounds index if ( ! vIndex.isValid() || vIndex.row() >= rowCount()) { return QVariant(); } switch (vRole) { case eRole_Instruction : return _data[vIndex.row()].value(eRole_Instruction) ; case eRole_Image : return _data[vIndex.row()].value(eRole_Image) ; } return QString("Alarm %1").arg(vIndex.row()); } /*! * \brief Retrieve the data stored at the given index for the specified role and expose to QML * \param[in] vRow Index of the data in the list model. */ QVariantMap View::VAlarmInstructionsModel::get(int vRow) const { if (vRow < 0 || vRow >= rowCount()) { return {}; } QHash roles = roleNames(); QVariantMap map; for (auto it = roles.begin(); it != roles.end(); ++it) { map[it.value()] = data(index(vRow, 0), it.key()); } return map; } /*! * \brief Clear any data contained in this list model. */ void View::VAlarmInstructionsModel::clear() { beginRemoveRows(QModelIndex(), 0, rowCount()); _data.clear(); endRemoveRows(); } /*! * \brief Sets the value of the data in this list model at the given index and for the given role. * \param[in] index Location of data to update. * \param[in] value Value to set. * \param[in] role The role of the data at the given index to set. * \return Return true if data was set properly, otherwise false. */ bool View::VAlarmInstructionsModel::setData(const QModelIndex &vIndex, const QVariant& vValue, int vRole) { if (! vIndex.isValid() || vIndex.row() >= _data.count()) { return false; } if (_data[vIndex.row()][vRole] != vValue) { _data[vIndex.row()][vRole] = vValue; // explicitly emit a dataChanged signal to notify anybody bound to this property (vRole) emit dataChanged(vIndex, vIndex, QVector(1, vRole)); } return true; } /*! * \brief Appends a row of data to the end of the model. * \param[in] data The data to append. */ void View::VAlarmInstructionsModel::appendData(const QHash &vData) { int index = qBound(rowCount(), 0, rowCount()); beginInsertRows(QModelIndex(), index, index); _data.insert(rowCount(), vData); endInsertRows(); }