Fix icons missing in device settings page
This commit is contained in:
@ -93,13 +93,17 @@ ColumnLayout {
|
|||||||
Label { text: qsTr("DeviceType:") }
|
Label { text: qsTr("DeviceType:") }
|
||||||
IconComboBox {
|
IconComboBox {
|
||||||
id: deviceTypeCombobox
|
id: deviceTypeCombobox
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
Layout.preferredHeight: 64
|
||||||
|
|
||||||
model: DeviceTypesModel {
|
model: DeviceTypesModel {
|
||||||
controller: __controller
|
controller: __controller
|
||||||
}
|
}
|
||||||
textRole: "name"
|
textRole: "name"
|
||||||
valueRole: "id"
|
valueRole: "id"
|
||||||
iconSourceRole: "iconUrl"
|
iconSourceRole: "iconUrl"
|
||||||
|
iconSourceRoleInt: DeviceTypesModel.IconUrlRole
|
||||||
currentIndex: listView.currentData ? deviceTypeCombobox.indexOfValue(listView.currentData.deviceTypeId) : -1
|
currentIndex: listView.currentData ? deviceTypeCombobox.indexOfValue(listView.currentData.deviceTypeId) : -1
|
||||||
onActivated: if (listView.currentData) listView.currentData.deviceTypeId = currentValue; else console.warn('discarded');
|
onActivated: if (listView.currentData) listView.currentData.deviceTypeId = currentValue; else console.warn('discarded');
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,15 @@ ComboBox {
|
|||||||
id: comboBox
|
id: comboBox
|
||||||
|
|
||||||
property string iconSourceRole
|
property string iconSourceRole
|
||||||
|
property int iconSourceRoleInt
|
||||||
|
|
||||||
|
property string iconSource: comboBox.currentIndex === -1
|
||||||
|
? ""
|
||||||
|
: Array.isArray(comboBox.model)
|
||||||
|
? comboBox.model[comboBox.currentIndex][comboBox.iconSourceRole]
|
||||||
|
: (comboBox.model as ListModel)?.get(comboBox.currentIndex)[comboBox.iconSourceRole]
|
||||||
|
?? (comboBox.model as FolderListModel)?.get(comboBox.currentIndex, comboBox.iconSourceRole)
|
||||||
|
?? comboBox.model.data(comboBox.model.index(comboBox.currentIndex, 0), comboBox.iconSourceRoleInt)
|
||||||
|
|
||||||
delegate: ItemDelegate {
|
delegate: ItemDelegate {
|
||||||
height: 64
|
height: 64
|
||||||
@ -23,45 +32,7 @@ ComboBox {
|
|||||||
}
|
}
|
||||||
contentItem: IconChooserDelegateLayout {
|
contentItem: IconChooserDelegateLayout {
|
||||||
text: comboBox.displayText
|
text: comboBox.displayText
|
||||||
iconSource: {
|
iconSource: comboBox.iconSource
|
||||||
// console.log("QAbstractListModel", model instanceof QAbstractListModel);
|
|
||||||
// console.log("QAbstractItemModel", model instanceof QAbstractItemModel);
|
|
||||||
// console.log("FolderListModel", model instanceof FolderListModel);
|
|
||||||
// console.log("DeviceTypesModel", model instanceof DeviceTypesModel);
|
|
||||||
// console.log("QtObject", model instanceof QtObject);
|
|
||||||
|
|
||||||
if (comboBox.currentIndex < 0)
|
|
||||||
return '';
|
|
||||||
if (!comboBox.model)
|
|
||||||
return '';
|
|
||||||
if (!comboBox.iconSourceRole)
|
|
||||||
return '';
|
|
||||||
|
|
||||||
if (model instanceof FolderListModel)
|
|
||||||
return model.get(comboBox.currentIndex, iconSourceRole);
|
|
||||||
else if ('get' in model)
|
|
||||||
{
|
|
||||||
const data = model.get(comboBox.currentIndex);
|
|
||||||
console.log(data);
|
|
||||||
return data[iconSourceRole];
|
|
||||||
}
|
|
||||||
else if ('roleNames' in model || 'itemData' in model)
|
|
||||||
{
|
|
||||||
if (!('roleNames' in model && 'itemData' in model))
|
|
||||||
throw 'roleNames or itemData not defined!';
|
|
||||||
|
|
||||||
const roleNames = model.roleNames();
|
|
||||||
console.log('roleNames', roleNames);
|
|
||||||
|
|
||||||
const index = model.index(comboBox.currentIndex, 0);
|
|
||||||
const itemData = model.itemData(index);
|
|
||||||
console.log('itemData', itemData);
|
|
||||||
|
|
||||||
throw 'getting data from model using roleNames and itemData is not yet implemented.';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
throw 'unknown model type' + typeof model;
|
|
||||||
}
|
|
||||||
isInsideMaterialComboBox: true
|
isInsideMaterialComboBox: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,12 +9,6 @@
|
|||||||
|
|
||||||
#include "iconutils.h"
|
#include "iconutils.h"
|
||||||
|
|
||||||
enum {
|
|
||||||
IdRole = Qt::UserRole,
|
|
||||||
IconNameRole,
|
|
||||||
IconUrlRole
|
|
||||||
};
|
|
||||||
|
|
||||||
void DeviceTypesModel::setController(DmxController *controller)
|
void DeviceTypesModel::setController(DmxController *controller)
|
||||||
{
|
{
|
||||||
if (m_controller == controller)
|
if (m_controller == controller)
|
||||||
|
@ -12,6 +12,13 @@ class DeviceTypesModel : public QAbstractListModel
|
|||||||
public:
|
public:
|
||||||
using QAbstractListModel::QAbstractListModel;
|
using QAbstractListModel::QAbstractListModel;
|
||||||
|
|
||||||
|
enum Roles {
|
||||||
|
IdRole = Qt::UserRole,
|
||||||
|
IconNameRole,
|
||||||
|
IconUrlRole
|
||||||
|
};
|
||||||
|
Q_ENUM(Roles)
|
||||||
|
|
||||||
DmxController *controller() { return m_controller; }
|
DmxController *controller() { return m_controller; }
|
||||||
const DmxController *controller() const { return m_controller; }
|
const DmxController *controller() const { return m_controller; }
|
||||||
void setController(DmxController *controller);
|
void setController(DmxController *controller);
|
||||||
|
Reference in New Issue
Block a user