From bb03280583686a67e5d06b87b62be5599682e980 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Fri, 1 May 2015 22:19:08 +0200 Subject: [PATCH] added device added/removed notification --- libguh/devicemanager.cpp | 5 +++++ libguh/devicemanager.h | 2 ++ server/guhcore.cpp | 2 ++ server/guhcore.h | 3 +++ server/jsonrpc/devicehandler.cpp | 28 ++++++++++++++++++++++++++++ server/jsonrpc/devicehandler.h | 6 ++++++ 6 files changed, 46 insertions(+) diff --git a/libguh/devicemanager.cpp b/libguh/devicemanager.cpp index 436aecc3..4b511df1 100644 --- a/libguh/devicemanager.cpp +++ b/libguh/devicemanager.cpp @@ -473,6 +473,9 @@ DeviceManager::DeviceError DeviceManager::addConfiguredDeviceInternal(const Devi m_configuredDevices.append(device); storeConfiguredDevices(); postSetupDevice(device); + + emit deviceAdded(device); + return DeviceErrorNoError; } @@ -502,6 +505,8 @@ DeviceManager::DeviceError DeviceManager::removeConfiguredDevice(const DeviceId settings.remove(""); settings.endGroup(); + emit deviceRemoved(deviceId); + return DeviceErrorNoError; } diff --git a/libguh/devicemanager.h b/libguh/devicemanager.h index 298721a5..7547b611 100644 --- a/libguh/devicemanager.h +++ b/libguh/devicemanager.h @@ -108,6 +108,8 @@ signals: void loaded(); void eventTriggered(const Event &event); void deviceStateChanged(Device *device, const QUuid &stateTypeId, const QVariant &value); + void deviceRemoved(const DeviceId &deviceId); + void deviceAdded(Device *device); void devicesDiscovered(const DeviceClassId &deviceClassId, const QList &devices); void deviceSetupFinished(Device *device, DeviceError status); void pairingFinished(const PairingTransactionId &pairingTransactionId, DeviceError status, const DeviceId &deviceId = DeviceId()); diff --git a/server/guhcore.cpp b/server/guhcore.cpp index 33c9ce03..f5613b33 100644 --- a/server/guhcore.cpp +++ b/server/guhcore.cpp @@ -355,6 +355,8 @@ GuhCore::GuhCore(QObject *parent) : connect(m_deviceManager, &DeviceManager::eventTriggered, this, &GuhCore::gotEvent); connect(m_deviceManager, &DeviceManager::deviceStateChanged, this, &GuhCore::deviceStateChanged); + connect(m_deviceManager, &DeviceManager::deviceAdded, this, &GuhCore::deviceAdded); + connect(m_deviceManager, &DeviceManager::deviceRemoved, this, &GuhCore::deviceRemoved); connect(m_deviceManager, &DeviceManager::actionExecutionFinished, this, &GuhCore::actionExecutionFinished); connect(m_deviceManager, &DeviceManager::devicesDiscovered, this, &GuhCore::devicesDiscovered); diff --git a/server/guhcore.h b/server/guhcore.h index 68f8d801..bd46930f 100644 --- a/server/guhcore.h +++ b/server/guhcore.h @@ -87,6 +87,9 @@ signals: void eventTriggered(const Event &event); void deviceStateChanged(Device *device, const QUuid &stateTypeId, const QVariant &value); void actionExecuted(const ActionId &id, DeviceManager::DeviceError status); + void deviceRemoved(const DeviceId &deviceId); + void deviceAdded(Device *device); + void devicesDiscovered(const DeviceClassId &deviceClassId, const QList deviceDescriptors); void deviceSetupFinished(Device *device, DeviceManager::DeviceError status); diff --git a/server/jsonrpc/devicehandler.cpp b/server/jsonrpc/devicehandler.cpp index b3209cd0..b323d48f 100644 --- a/server/jsonrpc/devicehandler.cpp +++ b/server/jsonrpc/devicehandler.cpp @@ -208,7 +208,19 @@ DeviceHandler::DeviceHandler(QObject *parent) : params.insert("value", JsonTypes::basicTypeToString(JsonTypes::Variant)); setParams("StateChanged", params); + params.clear(); returns.clear(); + setDescription("DeviceRemoved", "Emitted whenever a Device was removed."); + params.insert("deviceId", JsonTypes::basicTypeToString(JsonTypes::Uuid)); + setParams("DeviceRemoved", params); + + params.clear(); returns.clear(); + setDescription("DeviceAdded", "Emitted whenever a Device was added."); + params.insert("device", JsonTypes::deviceRef()); + setParams("DeviceAdded", params); + connect(GuhCore::instance(), &GuhCore::deviceStateChanged, this, &DeviceHandler::deviceStateChanged); + connect(GuhCore::instance(), &GuhCore::deviceRemoved, this, &DeviceHandler::deviceRemovedNotification); + connect(GuhCore::instance(), &GuhCore::deviceAdded, this, &DeviceHandler::deviceAddedNotification); connect(GuhCore::instance(), &GuhCore::devicesDiscovered, this, &DeviceHandler::devicesDiscovered, Qt::QueuedConnection); connect(GuhCore::instance(), &GuhCore::deviceSetupFinished, this, &DeviceHandler::deviceSetupFinished); connect(GuhCore::instance(), &GuhCore::pairingFinished, this, &DeviceHandler::pairingFinished); @@ -514,6 +526,22 @@ void DeviceHandler::deviceStateChanged(Device *device, const QUuid &stateTypeId, emit StateChanged(params); } +void DeviceHandler::deviceRemovedNotification(const QUuid &deviceId) +{ + QVariantMap params; + params.insert("deviceId", deviceId); + + emit DeviceRemoved(params); +} + +void DeviceHandler::deviceAddedNotification(Device *device) +{ + QVariantMap params; + params.insert("device", JsonTypes::packDevice(device)); + + emit DeviceAdded(params); +} + void DeviceHandler::devicesDiscovered(const DeviceClassId &deviceClassId, const QList deviceDescriptors) { if (!m_discoverRequests.contains(deviceClassId)) { diff --git a/server/jsonrpc/devicehandler.h b/server/jsonrpc/devicehandler.h index 5f93d54b..84035e24 100644 --- a/server/jsonrpc/devicehandler.h +++ b/server/jsonrpc/devicehandler.h @@ -64,10 +64,16 @@ public: signals: void StateChanged(const QVariantMap ¶ms); + void DeviceRemoved(const QVariantMap ¶ms); + void DeviceAdded(const QVariantMap ¶ms); private slots: void deviceStateChanged(Device *device, const QUuid &stateTypeId, const QVariant &value); + void deviceRemovedNotification(const QUuid &deviceId); + + void deviceAddedNotification(Device *device); + void devicesDiscovered(const DeviceClassId &deviceClassId, const QList deviceDescriptors); void deviceSetupFinished(Device *device, DeviceManager::DeviceError status);