diff --git a/libnymea/plugin/device.cpp b/libnymea/plugin/device.cpp index 70a4f55d..301a2f18 100644 --- a/libnymea/plugin/device.cpp +++ b/libnymea/plugin/device.cpp @@ -260,3 +260,11 @@ Device *Devices::findById(const DeviceId &id) } return nullptr; } + +QDebug operator<<(QDebug dbg, Device *device) +{ + dbg.nospace() << "Device(" << device->name(); + dbg.nospace() << ", id" << device->id(); + dbg.nospace() << ", deviceClassId" << device->deviceClassId() << ")"; + return dbg.space(); +} diff --git a/libnymea/plugin/device.h b/libnymea/plugin/device.h index 0bac6471..1e17f3e9 100644 --- a/libnymea/plugin/device.h +++ b/libnymea/plugin/device.h @@ -94,6 +94,8 @@ private: bool m_autoCreated = false; }; +QDebug operator<<(QDebug dbg, Device *device); + class Devices: public QList { public: diff --git a/plugins/mock/devicepluginmock.cpp b/plugins/mock/devicepluginmock.cpp index 7671bb4a..c321bab4 100644 --- a/plugins/mock/devicepluginmock.cpp +++ b/plugins/mock/devicepluginmock.cpp @@ -383,6 +383,24 @@ void DevicePluginMock::onDisappear() emit autoDeviceDisappeared(device->id()); } +void DevicePluginMock::onReconfigureAutoDevice() +{ + HttpDaemon *daemon = qobject_cast(sender()); + if (!daemon) { + return; + } + Device *device = m_daemons.key(daemon); + qCDebug(dcMockDevice) << "Reconfigure auto device for" << device; + + DeviceDescriptor deviceDescriptor; + deviceDescriptor.setTitle(device->name() + " (reconfigured)"); + deviceDescriptor.setDescription("This auto device was reconfigured"); + deviceDescriptor.setDeviceId(device->id()); + deviceDescriptor.setParams(device->params()); + + emit autoDevicesAppeared(mockDeviceAutoDeviceClassId, { deviceDescriptor }); +} + void DevicePluginMock::emitDevicesDiscovered() { QList deviceDescriptors; diff --git a/plugins/mock/devicepluginmock.h b/plugins/mock/devicepluginmock.h index 72e782dd..8efe6d25 100644 --- a/plugins/mock/devicepluginmock.h +++ b/plugins/mock/devicepluginmock.h @@ -59,6 +59,7 @@ private slots: void setState(const StateTypeId &stateTypeId, const QVariant &value); void triggerEvent(const EventTypeId &id); void onDisappear(); + void onReconfigureAutoDevice(); void emitDevicesDiscovered(); void emitPushButtonDevicesDiscovered(); void emitDisplayPinDevicesDiscovered(); diff --git a/plugins/mock/httpdaemon.cpp b/plugins/mock/httpdaemon.cpp index 1aa3f727..c0799b7b 100644 --- a/plugins/mock/httpdaemon.cpp +++ b/plugins/mock/httpdaemon.cpp @@ -114,6 +114,9 @@ void HttpDaemon::readClient() } else if (url.path() == "/disappear") { qCDebug(dcMockDevice) << "Should disappear"; emit disappear(); + } else if (url.path() == "/reconfigureautodevice") { + qCDebug(dcMockDevice) << "Reconfigure auto device"; + emit reconfigureAutodevice(); } if (tokens[0] == "GET") { diff --git a/plugins/mock/httpdaemon.h b/plugins/mock/httpdaemon.h index ea86ae46..277bb04a 100644 --- a/plugins/mock/httpdaemon.h +++ b/plugins/mock/httpdaemon.h @@ -47,6 +47,7 @@ signals: void setState(const StateTypeId &stateTypeId, const QVariant &value); void triggerEvent(const EventTypeId &eventTypeId); void disappear(); + void reconfigureAutodevice(); private slots: void readClient(); diff --git a/tests/auto/devices/testdevices.cpp b/tests/auto/devices/testdevices.cpp index 39087bff..0661eac0 100644 --- a/tests/auto/devices/testdevices.cpp +++ b/tests/auto/devices/testdevices.cpp @@ -91,6 +91,7 @@ private slots: void reconfigureByDiscovery(); void reconfigureByDiscoveryAndPair(); + void reconfigureAutodevice(); void removeDevice_data(); void removeDevice(); @@ -1275,6 +1276,22 @@ void TestDevices::reconfigureByDiscoveryAndPair() } +void TestDevices::reconfigureAutodevice() +{ + // Get the current autodevice + + QVariant response = injectAndWait("Devices.GetConfiguredDevices"); + QVariantList devices = response.toMap().value("params").toMap().value("devices").toList(); + + QVariantMap autoDevice; + foreach (const QVariant &deviceVariant, devices) { + QVariantMap deviceMap = deviceVariant.toMap(); + qDebug() << deviceMap; + + } + +} + void TestDevices::removeDevice_data() {