Add iconUrl role to deviceTypesModel
This commit is contained in:
@ -29,6 +29,7 @@ qt_add_executable(appscheincommander
|
|||||||
registergroupmodel.h registergroupmodel.cpp
|
registergroupmodel.h registergroupmodel.cpp
|
||||||
projectloader.h projectloader.cpp
|
projectloader.h projectloader.cpp
|
||||||
scheincommandersettings.h scheincommandersettings.cpp
|
scheincommandersettings.h scheincommandersettings.cpp
|
||||||
|
iconutils.h iconutils.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
qt_add_qml_module(appscheincommander
|
qt_add_qml_module(appscheincommander
|
||||||
|
@ -7,9 +7,12 @@
|
|||||||
#include <QQmlEngine>
|
#include <QQmlEngine>
|
||||||
#include <QMutexLocker>
|
#include <QMutexLocker>
|
||||||
|
|
||||||
|
#include "iconutils.h"
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
IdRole = Qt::UserRole,
|
IdRole = Qt::UserRole,
|
||||||
IconNameRole
|
IconNameRole,
|
||||||
|
IconUrlRole
|
||||||
};
|
};
|
||||||
|
|
||||||
void DeviceTypesModel::setController(DmxController *controller)
|
void DeviceTypesModel::setController(DmxController *controller)
|
||||||
@ -100,6 +103,7 @@ QVariant DeviceTypesModel::data(const QModelIndex &index, int role) const
|
|||||||
case Qt::EditRole: return deviceType.name;
|
case Qt::EditRole: return deviceType.name;
|
||||||
case IdRole: return deviceType.id;
|
case IdRole: return deviceType.id;
|
||||||
case IconNameRole: return deviceType.iconName;
|
case IconNameRole: return deviceType.iconName;
|
||||||
|
case IconUrlRole: return getIconUrl(deviceType.iconName);
|
||||||
}
|
}
|
||||||
|
|
||||||
return {};
|
return {};
|
||||||
@ -138,7 +142,8 @@ QMap<int, QVariant> DeviceTypesModel::itemData(const QModelIndex &index) const
|
|||||||
return {
|
return {
|
||||||
{ Qt::DisplayRole, deviceType.name },
|
{ Qt::DisplayRole, deviceType.name },
|
||||||
{ IdRole, deviceType.id },
|
{ IdRole, deviceType.id },
|
||||||
{ IconNameRole, deviceType.iconName }
|
{ IconNameRole, deviceType.iconName },
|
||||||
|
{ IconUrlRole, getIconUrl(deviceType.iconName) }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,7 +152,8 @@ QHash<int, QByteArray> DeviceTypesModel::roleNames() const
|
|||||||
return {
|
return {
|
||||||
{ Qt::DisplayRole, "name" },
|
{ Qt::DisplayRole, "name" },
|
||||||
{ IdRole, "id" },
|
{ IdRole, "id" },
|
||||||
{ IconNameRole, "iconName" }
|
{ IconNameRole, "iconName" },
|
||||||
|
{ IconUrlRole, "iconUrl" }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -216,7 +222,7 @@ bool DeviceTypesModel::setData(const QModelIndex &index, const QVariant &value,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
deviceType.iconName = value.toString();
|
deviceType.iconName = value.toString();
|
||||||
emit dataChanged(index, index, { IconNameRole });
|
emit dataChanged(index, index, { IconNameRole, IconUrlRole});
|
||||||
|
|
||||||
disconnect(m_controller, &DmxController::deviceTypeIconNameChanged,
|
disconnect(m_controller, &DmxController::deviceTypeIconNameChanged,
|
||||||
this, &DeviceTypesModel::otherDeviceTypeIconNameChanged);
|
this, &DeviceTypesModel::otherDeviceTypeIconNameChanged);
|
||||||
@ -377,7 +383,7 @@ void DeviceTypesModel::otherDeviceTypeIconNameChanged(int row, const QString &na
|
|||||||
}
|
}
|
||||||
|
|
||||||
const auto index = this->index(row);
|
const auto index = this->index(row);
|
||||||
emit dataChanged(index, index, { IconNameRole });
|
emit dataChanged(index, index, { IconNameRole, IconUrlRole });
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
6
iconutils.cpp
Normal file
6
iconutils.cpp
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#include "iconutils.h"
|
||||||
|
|
||||||
|
QUrl getIconUrl(QStringView name)
|
||||||
|
{
|
||||||
|
return QUrl{QString{"qrc:/scheincommander/icons/%0.png"}.arg(name)};
|
||||||
|
}
|
6
iconutils.h
Normal file
6
iconutils.h
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QUrl>
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
|
QUrl getIconUrl(QStringView name);
|
Reference in New Issue
Block a user