From 933d92ab06851c75196be5390bf8d556875e3427 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Mon, 17 Jun 2019 15:18:56 +0200 Subject: [PATCH] Intermediate commit (device browser) --- .../devices/devicemanagerimplementation.cpp | 8 +++++++ .../devices/devicemanagerimplementation.h | 2 ++ libnymea-core/jsonrpc/devicehandler.cpp | 15 +++++++++++++ libnymea-core/jsonrpc/devicehandler.h | 2 ++ libnymea/devices/devicemanager.h | 3 +++ libnymea/libnymea.pro | 2 ++ libnymea/types/browseritem.cpp | 6 ++++++ libnymea/types/browseritem.h | 21 +++++++++++++++++++ libnymea/typeutils.h | 2 ++ 9 files changed, 61 insertions(+) create mode 100644 libnymea/types/browseritem.cpp create mode 100644 libnymea/types/browseritem.h diff --git a/libnymea-core/devices/devicemanagerimplementation.cpp b/libnymea-core/devices/devicemanagerimplementation.cpp index 44f06a09..63901ab8 100644 --- a/libnymea-core/devices/devicemanagerimplementation.cpp +++ b/libnymea-core/devices/devicemanagerimplementation.cpp @@ -710,6 +710,14 @@ Device::DeviceError DeviceManagerImplementation::removeConfiguredDevice(const De return Device::DeviceErrorNoError; } +BrowserItems DeviceManagerImplementation::browseDevice(const DeviceId &deviceId, const QString &browser, const BrowserItemId &node) +{ + Q_UNUSED(deviceId) + Q_UNUSED(browser) + Q_UNUSED(node) + return BrowserItems(); +} + QString DeviceManagerImplementation::translate(const PluginId &pluginId, const QString &string, const QLocale &locale) { return m_translator->translate(pluginId, string, locale); diff --git a/libnymea-core/devices/devicemanagerimplementation.h b/libnymea-core/devices/devicemanagerimplementation.h index 5b4aa43d..66e2c7f6 100644 --- a/libnymea-core/devices/devicemanagerimplementation.h +++ b/libnymea-core/devices/devicemanagerimplementation.h @@ -97,6 +97,8 @@ public: Device::DeviceError removeConfiguredDevice(const DeviceId &deviceId) override; + BrowserItems browseDevice(const DeviceId &deviceId, const QString &browser, const BrowserItemId &node = BrowserItemId()) override; + QString translate(const PluginId &pluginId, const QString &string, const QLocale &locale) override; signals: diff --git a/libnymea-core/jsonrpc/devicehandler.cpp b/libnymea-core/jsonrpc/devicehandler.cpp index 1de015e7..85f57abe 100644 --- a/libnymea-core/jsonrpc/devicehandler.cpp +++ b/libnymea-core/jsonrpc/devicehandler.cpp @@ -665,6 +665,21 @@ JsonReply *DeviceHandler::GetStateValues(const QVariantMap ¶ms) const return createReply(returns); } +JsonReply *DeviceHandler::BrowseDevice(const QVariantMap ¶ms) const +{ + QVariantMap returns; + DeviceId deviceId = DeviceId(params.value("deviceId").toString()); + QString browser = params.value("browser").toString(); + + Device *device = NymeaCore::instance()->deviceManager()->findConfiguredDevice(deviceId); + if (!device) { + returns.insert("deviceError", JsonTypes::deviceErrorToString(Device::DeviceErrorDeviceNotFound)); + return createReply(returns); + } + NymeaCore::instance()->deviceManager()->browseDevice(device->id(), browser); + return createReply(returns); +} + void DeviceHandler::pluginConfigChanged(const PluginId &id, const ParamList &config) { QVariantMap params; diff --git a/libnymea-core/jsonrpc/devicehandler.h b/libnymea-core/jsonrpc/devicehandler.h index 7d8af31d..d0994ef3 100644 --- a/libnymea-core/jsonrpc/devicehandler.h +++ b/libnymea-core/jsonrpc/devicehandler.h @@ -57,6 +57,8 @@ public: Q_INVOKABLE JsonReply *GetStateValue(const QVariantMap ¶ms) const; Q_INVOKABLE JsonReply *GetStateValues(const QVariantMap ¶ms) const; + Q_INVOKABLE JsonReply *BrowseDevice(const QVariantMap ¶ms) const; + signals: void PluginConfigurationChanged(const QVariantMap ¶ms); void StateChanged(const QVariantMap ¶ms); diff --git a/libnymea/devices/devicemanager.h b/libnymea/devices/devicemanager.h index 14c3d793..aee6693a 100644 --- a/libnymea/devices/devicemanager.h +++ b/libnymea/devices/devicemanager.h @@ -29,6 +29,7 @@ #include "deviceplugin.h" #include "types/interface.h" #include "types/vendor.h" +#include "types/browseritem.h" class DeviceManager : public QObject { @@ -69,6 +70,8 @@ public: virtual Device::DeviceError removeConfiguredDevice(const DeviceId &deviceId) = 0; + virtual BrowserItems browseDevice(const DeviceId &deviceId, const QString &browser, const BrowserItemId &node = BrowserItemId()) = 0; + virtual QString translate(const PluginId &pluginId, const QString &string, const QLocale &locale) = 0; signals: diff --git a/libnymea/libnymea.pro b/libnymea/libnymea.pro index 262a8309..3702e1d5 100644 --- a/libnymea/libnymea.pro +++ b/libnymea/libnymea.pro @@ -15,6 +15,7 @@ HEADERS += \ libnymea.h \ platform/package.h \ platform/repository.h \ + types/browseritem.h \ typeutils.h \ loggingcategories.h \ nymeasettings.h \ @@ -110,6 +111,7 @@ SOURCES += \ coap/corelinkparser.cpp \ coap/corelink.cpp \ coap/coapobserveresource.cpp \ + types/browseritem.cpp \ types/deviceclass.cpp \ types/action.cpp \ types/actiontype.cpp \ diff --git a/libnymea/types/browseritem.cpp b/libnymea/types/browseritem.cpp new file mode 100644 index 00000000..c95cdf36 --- /dev/null +++ b/libnymea/types/browseritem.cpp @@ -0,0 +1,6 @@ +#include "browseritem.h" + +BrowserItem::BrowserItem() +{ + +} diff --git a/libnymea/types/browseritem.h b/libnymea/types/browseritem.h new file mode 100644 index 00000000..ad5e301c --- /dev/null +++ b/libnymea/types/browseritem.h @@ -0,0 +1,21 @@ +#ifndef BROWSERITEM_H +#define BROWSERITEM_H + +#include "libnymea.h" +#include "typeutils.h" + +#include + +class LIBNYMEA_EXPORT BrowserItem +{ +public: + BrowserItem(); +}; + + +class LIBNYMEA_EXPORT BrowserItems: public QList +{ + +}; + +#endif // BROWSERITEM_H diff --git a/libnymea/typeutils.h b/libnymea/typeutils.h index d7c91dfc..8aced417 100644 --- a/libnymea/typeutils.h +++ b/libnymea/typeutils.h @@ -60,6 +60,8 @@ DECLARE_TYPE_ID(Rule) DECLARE_TYPE_ID(PairingTransaction) +DECLARE_TYPE_ID(BrowserItem) + class LIBNYMEA_EXPORT Types { Q_GADGET