Add setupDisplayMessage

This commit is contained in:
Michael Zanetti 2020-01-29 23:50:16 +01:00
parent f2fe43573d
commit b18dcc5b00
6 changed files with 21 additions and 7 deletions

View File

@ -84,6 +84,8 @@ QVariant Devices::data(const QModelIndex &index, int role) const
return device->parentDeviceId().toString(); return device->parentDeviceId().toString();
case RoleSetupStatus: case RoleSetupStatus:
return device->setupStatus(); return device->setupStatus();
case RoleSetupDisplayMessage:
return device->setupDisplayMessage();
case RoleInterfaces: case RoleInterfaces:
return device->deviceClass()->interfaces(); return device->deviceClass()->interfaces();
case RoleBaseInterface: case RoleBaseInterface:
@ -107,7 +109,7 @@ void Devices::addDevice(Device *device)
connect(device, &Device::setupStatusChanged, this, [device, this]() { connect(device, &Device::setupStatusChanged, this, [device, this]() {
int idx = m_devices.indexOf(device); int idx = m_devices.indexOf(device);
if (idx < 0) return; if (idx < 0) return;
emit dataChanged(index(idx), index(idx), {RoleSetupStatus}); emit dataChanged(index(idx), index(idx), {RoleSetupStatus, RoleSetupDisplayMessage});
}); });
connect(device->states(), &States::dataChanged, this, [device, this]() { connect(device->states(), &States::dataChanged, this, [device, this]() {
int idx = m_devices.indexOf(device); int idx = m_devices.indexOf(device);
@ -145,6 +147,7 @@ QHash<int, QByteArray> Devices::roleNames() const
roles[RoleDeviceClass] = "deviceClassId"; roles[RoleDeviceClass] = "deviceClassId";
roles[RoleParentDeviceId] = "parentDeviceId"; roles[RoleParentDeviceId] = "parentDeviceId";
roles[RoleSetupStatus] = "setupStatus"; roles[RoleSetupStatus] = "setupStatus";
roles[RoleSetupDisplayMessage] = "setupDisplayMessage";
roles[RoleInterfaces] = "interfaces"; roles[RoleInterfaces] = "interfaces";
roles[RoleBaseInterface] = "baseInterface"; roles[RoleBaseInterface] = "baseInterface";
return roles; return roles;

View File

@ -47,6 +47,7 @@ public:
RoleParentDeviceId, RoleParentDeviceId,
RoleDeviceClass, RoleDeviceClass,
RoleSetupStatus, RoleSetupStatus,
RoleSetupDisplayMessage,
RoleInterfaces, RoleInterfaces,
RoleBaseInterface RoleBaseInterface
}; };

View File

@ -243,9 +243,10 @@ Device* JsonTypes::unpackDevice(const QVariantMap &deviceMap, DeviceClasses *dev
// As of JSONRPC 4.2 setupComplete is deprecated and setupStatus is new // As of JSONRPC 4.2 setupComplete is deprecated and setupStatus is new
if (deviceMap.contains("setupStatus")) { if (deviceMap.contains("setupStatus")) {
QMetaEnum setupStatusEnum = QMetaEnum::fromType<Device::DeviceSetupStatus>(); QMetaEnum setupStatusEnum = QMetaEnum::fromType<Device::DeviceSetupStatus>();
device->setSetupStatus(static_cast<Device::DeviceSetupStatus>(setupStatusEnum.keyToValue(deviceMap.value("setupStatus").toByteArray().data()))); device->setSetupStatus(static_cast<Device::DeviceSetupStatus>(setupStatusEnum.keyToValue(deviceMap.value("setupStatus").toByteArray().data())),
deviceMap.value("setupDisplayMessage").toString());
} else { } else {
device->setSetupStatus(deviceMap.value("setupComplete").toBool() ? Device::DeviceSetupStatusComplete : Device::DeviceSetupStatusNone); device->setSetupStatus(deviceMap.value("setupComplete").toBool() ? Device::DeviceSetupStatusComplete : Device::DeviceSetupStatusNone, QString());
} }
Params *params = device->params(); Params *params = device->params();

View File

@ -81,10 +81,16 @@ Device::DeviceSetupStatus Device::setupStatus() const
return m_setupStatus; return m_setupStatus;
} }
void Device::setSetupStatus(Device::DeviceSetupStatus setupStatus) QString Device::setupDisplayMessage() const
{ {
if (m_setupStatus != setupStatus) { return m_setupDisplayMessage;
}
void Device::setSetupStatus(Device::DeviceSetupStatus setupStatus, const QString &displayMessage)
{
if (m_setupStatus != setupStatus || m_setupDisplayMessage != displayMessage) {
m_setupStatus = setupStatus; m_setupStatus = setupStatus;
m_setupDisplayMessage = displayMessage;
emit setupStatusChanged(); emit setupStatusChanged();
} }
} }

View File

@ -49,6 +49,7 @@ class Device : public QObject
Q_PROPERTY(bool isChild READ isChild CONSTANT) Q_PROPERTY(bool isChild READ isChild CONSTANT)
Q_PROPERTY(QString name READ name NOTIFY nameChanged) Q_PROPERTY(QString name READ name NOTIFY nameChanged)
Q_PROPERTY(DeviceSetupStatus setupStatus READ setupStatus NOTIFY setupStatusChanged) Q_PROPERTY(DeviceSetupStatus setupStatus READ setupStatus NOTIFY setupStatusChanged)
Q_PROPERTY(QString setupDisplayMessage READ setupDisplayMessage NOTIFY setupStatusChanged)
Q_PROPERTY(Params *params READ params NOTIFY paramsChanged) Q_PROPERTY(Params *params READ params NOTIFY paramsChanged)
Q_PROPERTY(Params *settings READ settings NOTIFY settingsChanged) Q_PROPERTY(Params *settings READ settings NOTIFY settingsChanged)
Q_PROPERTY(States *states READ states NOTIFY statesChanged) Q_PROPERTY(States *states READ states NOTIFY statesChanged)
@ -76,7 +77,8 @@ public:
bool isChild() const; bool isChild() const;
DeviceSetupStatus setupStatus() const; DeviceSetupStatus setupStatus() const;
void setSetupStatus(DeviceSetupStatus setupStatus); QString setupDisplayMessage() const;
void setSetupStatus(DeviceSetupStatus setupStatus, const QString &displayMessage);
Params *params() const; Params *params() const;
void setParams(Params *params); void setParams(Params *params);
@ -109,6 +111,7 @@ private:
QUuid m_id; QUuid m_id;
QUuid m_parentDeviceId; QUuid m_parentDeviceId;
DeviceSetupStatus m_setupStatus; DeviceSetupStatus m_setupStatus;
QString m_setupDisplayMessage;
Params *m_params = nullptr; Params *m_params = nullptr;
Params *m_settings = nullptr; Params *m_settings = nullptr;
States *m_states = nullptr; States *m_states = nullptr;

View File

@ -240,7 +240,7 @@ Page {
text: infoPane.setupInProgress ? text: infoPane.setupInProgress ?
qsTr("Thing is being set up...") qsTr("Thing is being set up...")
: infoPane.setupFailure ? : infoPane.setupFailure ?
qsTr("Thing setup failed!") (root.device.setupDisplayMessage.length > 0 ? root.device.setupDisplayMessage : qsTr("Thing setup failed!"))
: (infoPane.connectedState !== null && infoPane.connectedState.value === false) ? : (infoPane.connectedState !== null && infoPane.connectedState.value === false) ?
qsTr("Thing is not connected!") qsTr("Thing is not connected!")
: qsTr("Thing runs out of battery!") : qsTr("Thing runs out of battery!")