Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef PERSONDISPLAYDETAILSMODEL_H
- #define PERSONDISPLAYDETAILSMODEL_H
- #include <QAbstractListModel>
- #include "persondisplaydetails.h"
- class PersonDisplayDetailsModel : public QAbstractListModel
- {
- Q_OBJECT
- public:
- enum PersonDisplayDetailsRoles {
- XCoordRole = Qt::UserRole + 1,
- YCoordRole,
- HeightRole,
- WidthRole,
- FRIDRole,
- DisplayTextRole,
- FaceStatusColor
- };
- explicit PersonDisplayDetailsModel(QObject* parent = nullptr);
- virtual QHash<int, QByteArray> roleNames() const override;
- virtual QVariant data(const QModelIndex& index, int role = PersonDisplayDetailsRoles::XCoordRole) const override;
- Q_INVOKABLE virtual int rowCount(const QModelIndex& parent = QModelIndex()) const override;
- void updateModelData(const QVector<PersonDisplayDetails>& personDisplayDetailsList = QVector<PersonDisplayDetails>());
- private:
- QVector<PersonDisplayDetails> m_personDisplayDetailsList;
- };
- #endif // PERSONDISPLAYDETAILSMODEL_H
- #include "persondisplaydetailsmodel.h"
- #include <QDebug>
- PersonDisplayDetailsModel::PersonDisplayDetailsModel(QObject* parent)
- : QAbstractListModel(parent)
- {
- }
- QHash<int, QByteArray> PersonDisplayDetailsModel::roleNames() const
- {
- QHash<int, QByteArray> roles;
- roles[XCoordRole] = "xCoord";
- roles[YCoordRole] = "yCoord";
- roles[HeightRole] = "faceHeight";
- roles[WidthRole] = "faceWidth";
- roles[FRIDRole] = "frID";
- roles[DisplayTextRole] = "displayText";
- roles[FaceStatusColor] = "faceStatusColor";
- return roles;
- }
- QVariant PersonDisplayDetailsModel::data(const QModelIndex& index, int role) const
- {
- if (!index.isValid()) {
- return QVariant();
- }
- if (index.row() >= this->m_personDisplayDetailsList.count()) {
- return QVariant();
- }
- const PersonDisplayDetails& personDisplayDetails = this->m_personDisplayDetailsList.at(index.row());
- switch (role) {
- case XCoordRole:
- return personDisplayDetails.getFaceBoundaryBox().getNLoc_X();
- case YCoordRole:
- return personDisplayDetails.getFaceBoundaryBox().getNLoc_Y();
- case HeightRole:
- return personDisplayDetails.getFaceBoundaryBox().getNHeight();
- case WidthRole:
- return personDisplayDetails.getFaceBoundaryBox().getNWidth();
- case FRIDRole:
- return personDisplayDetails.getFRID();
- case DisplayTextRole:
- return personDisplayDetails.getDisplayText();
- case FaceStatusColor:
- return personDisplayDetails.getFaceStatusColor();
- default:
- return QVariant();
- }
- }
- Q_INVOKABLE int PersonDisplayDetailsModel::rowCount(const QModelIndex& parent) const
- {
- if (parent.isValid()) {
- return 0;
- }
- return this->m_personDisplayDetailsList.count();
- }
- void PersonDisplayDetailsModel::updateModelData(const QVector<PersonDisplayDetails>& personDisplayDetails)
- {
- int i;
- for (i = 0; i < personDisplayDetails.size(); ++i) {
- if (i >= this->m_personDisplayDetailsList.size()) {
- beginInsertRows(QModelIndex(), rowCount(), rowCount());
- this->m_personDisplayDetailsList.append(personDisplayDetails[i]);
- endInsertRows();
- } else {
- this->m_personDisplayDetailsList[i] = personDisplayDetails[i];
- QModelIndex r1 = index(i);
- QModelIndex r2 = index(i);
- emit dataChanged(r1, r2);
- }
- }
- if (i < this->m_personDisplayDetailsList.size()) {
- beginRemoveRows(QModelIndex(), i, this->m_personDisplayDetailsList.size() - 1);
- for (; i < this->m_personDisplayDetailsList.size(); ++i) {
- this->m_personDisplayDetailsList.removeAt(i);
- }
- endRemoveRows();
- }
- }
Add Comment
Please, Sign In to add comment