Add iconName and iconUrl role to devicesModel

This commit is contained in:
2023-02-22 22:19:26 +01:00
parent 2276e90a64
commit bf3a7fb606

View File

@@ -7,6 +7,8 @@
#include <QQmlEngine> #include <QQmlEngine>
#include <QMutexLocker> #include <QMutexLocker>
#include "iconutils.h"
enum { enum {
IdRole = Qt::UserRole, IdRole = Qt::UserRole,
DeviceTypeIdRole, DeviceTypeIdRole,
@@ -14,7 +16,9 @@ enum {
PositionRole, PositionRole,
PositionXRole, PositionXRole,
PositionYRole, PositionYRole,
PositionZRole PositionZRole,
IconNameRole,
IconUrlRole,
}; };
void DevicesModel::setController(DmxController *controller) void DevicesModel::setController(DmxController *controller)
@@ -109,14 +113,30 @@ QVariant DevicesModel::data(const QModelIndex &index, int role) const
switch (role) switch (role)
{ {
case Qt::DisplayRole: case Qt::DisplayRole:
case Qt::EditRole: return device.name; case Qt::EditRole: return device.name;
case IdRole: return device.id; case IdRole: return device.id;
case DeviceTypeIdRole: return device.deviceTypeId; case DeviceTypeIdRole: return device.deviceTypeId;
case AddressRole: return device.address; case AddressRole: return device.address;
case PositionRole: return device.position; case PositionRole: return device.position;
case PositionXRole: return device.position.x(); case PositionXRole: return device.position.x();
case PositionYRole: return device.position.y(); case PositionYRole: return device.position.y();
case PositionZRole: return device.position.z(); case PositionZRole: return device.position.z();
case IconNameRole:
if (const auto deviceTypePtr = m_controller->lightProject().deviceTypes.findById(device.deviceTypeId))
return deviceTypePtr->iconName;
else
{
qWarning() << "hilfe" << __LINE__;
return {};
}
case IconUrlRole:
if (const auto deviceTypePtr = m_controller->lightProject().deviceTypes.findById(device.deviceTypeId))
return getIconUrl(deviceTypePtr->iconName);
else
{
qWarning() << "hilfe" << __LINE__;
return {};
}
} }
return {}; return {};
@@ -150,29 +170,35 @@ QMap<int, QVariant> DevicesModel::itemData(const QModelIndex &index) const
} }
const auto &device = devices.at(index.row()); const auto &device = devices.at(index.row());
const auto deviceTypePtr = m_controller->lightProject().deviceTypes.findById(device.deviceTypeId);
return { return {
{ Qt::DisplayRole, device.name }, { Qt::DisplayRole, device.name },
{ IdRole, device.id }, { IdRole, device.id },
{ DeviceTypeIdRole, device.deviceTypeId }, { DeviceTypeIdRole, device.deviceTypeId },
{ AddressRole, device.address }, { AddressRole, device.address },
{ PositionRole, device.position }, { PositionRole, device.position },
{ PositionXRole, device.position.x() }, { PositionXRole, device.position.x() },
{ PositionYRole, device.position.y() }, { PositionYRole, device.position.y() },
{ PositionZRole, device.position.z() } { PositionZRole, device.position.z() },
{ IconNameRole, !deviceTypePtr ? QVariant{} : deviceTypePtr->iconName },
{ IconUrlRole, !deviceTypePtr ? QVariant{} : getIconUrl(deviceTypePtr->iconName) }
}; };
} }
QHash<int, QByteArray> DevicesModel::roleNames() const QHash<int, QByteArray> DevicesModel::roleNames() const
{ {
return { return {
{ Qt::DisplayRole, "name" }, { Qt::DisplayRole, "name" },
{ IdRole, "id" }, { IdRole, "id" },
{ DeviceTypeIdRole, "deviceTypeId" }, { DeviceTypeIdRole, "deviceTypeId" },
{ AddressRole, "address" }, { AddressRole, "address" },
{ PositionRole, "position" }, { PositionRole, "position" },
{ PositionXRole, "positionX" }, { PositionXRole, "positionX" },
{ PositionYRole, "positionY" }, { PositionYRole, "positionY" },
{ PositionZRole, "positionZ" } { PositionZRole, "positionZ" },
{ IconNameRole, "iconName" },
{ IconUrlRole, "iconUrl" }
}; };
} }