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();
case RoleSetupStatus:
return device->setupStatus();
case RoleSetupDisplayMessage:
return device->setupDisplayMessage();
case RoleInterfaces:
return device->deviceClass()->interfaces();
case RoleBaseInterface:
@ -107,7 +109,7 @@ void Devices::addDevice(Device *device)
connect(device, &Device::setupStatusChanged, this, [device, this]() {
int idx = m_devices.indexOf(device);
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]() {
int idx = m_devices.indexOf(device);
@ -145,6 +147,7 @@ QHash<int, QByteArray> Devices::roleNames() const
roles[RoleDeviceClass] = "deviceClassId";
roles[RoleParentDeviceId] = "parentDeviceId";
roles[RoleSetupStatus] = "setupStatus";
roles[RoleSetupDisplayMessage] = "setupDisplayMessage";
roles[RoleInterfaces] = "interfaces";
roles[RoleBaseInterface] = "baseInterface";
return roles;

View File

@ -47,6 +47,7 @@ public:
RoleParentDeviceId,
RoleDeviceClass,
RoleSetupStatus,
RoleSetupDisplayMessage,
RoleInterfaces,
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
if (deviceMap.contains("setupStatus")) {
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 {
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();

View File

@ -81,10 +81,16 @@ Device::DeviceSetupStatus Device::setupStatus() const
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_setupDisplayMessage = displayMessage;
emit setupStatusChanged();
}
}

View File

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

View File

@ -240,7 +240,7 @@ Page {
text: infoPane.setupInProgress ?
qsTr("Thing is being set up...")
: 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) ?
qsTr("Thing is not connected!")
: qsTr("Thing runs out of battery!")