From 2b3d60071e1585e54f05da3f29178e0fa84c037b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Fri, 8 Aug 2025 14:55:46 +0200 Subject: [PATCH] nanoleaf: Add Qt6 support --- nanoleaf/integrationpluginnanoleaf.cpp | 19 +++++----- nanoleaf/integrationpluginnanoleaf.h | 16 ++++----- nanoleaf/nanoleaf.cpp | 48 +++++++++++++------------- nanoleaf/nanoleaf.h | 12 +++---- 4 files changed, 47 insertions(+), 48 deletions(-) diff --git a/nanoleaf/integrationpluginnanoleaf.cpp b/nanoleaf/integrationpluginnanoleaf.cpp index 8410c959..caf4fd3b 100644 --- a/nanoleaf/integrationpluginnanoleaf.cpp +++ b/nanoleaf/integrationpluginnanoleaf.cpp @@ -1,6 +1,6 @@ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -* Copyright 2013 - 2020, nymea GmbH +* Copyright 2013 - 2025, nymea GmbH * Contact: contact@nymea.io * * This file is part of nymea. @@ -31,8 +31,8 @@ #include "integrationpluginnanoleaf.h" #include "plugininfo.h" -#include "network/zeroconf/zeroconfservicebrowser.h" -#include "platform/platformzeroconfcontroller.h" +#include +#include #include #include @@ -60,9 +60,8 @@ void IntegrationPluginNanoleaf::discoverThings(ThingDiscoveryInfo *info) QString model = entry.txt("md"); QString firmwareVersion = entry.txt("srcvers"); - if (serialNumbers.contains(serialNo)) { + if (serialNumbers.contains(serialNo)) continue; //To avoid duplicated devices - } Thing *existingThing = myThings().findByParams(ParamList() << Param(lightPanelsThingSerialNoParamTypeId, serialNo)); if (existingThing) { @@ -199,29 +198,29 @@ void IntegrationPluginNanoleaf::executeAction(ThingActionInfo *info) if (action.actionTypeId() == lightPanelsPowerActionTypeId) { bool power = action.param(lightPanelsPowerActionPowerParamTypeId).value().toBool(); QUuid requestId = nanoleaf->setPower(power); - connect(info, &ThingActionInfo::aborted,[requestId, this](){m_asyncActions.remove(requestId);}); + connect(info, &ThingActionInfo::aborted, this, [requestId, this](){ m_asyncActions.remove(requestId); }); m_asyncActions.insert(requestId, info); } else if (action.actionTypeId() == lightPanelsBrightnessActionTypeId) { int brightness = action.param(lightPanelsBrightnessActionBrightnessParamTypeId).value().toInt(); QUuid requestId = nanoleaf->setBrightness(brightness); - connect(info, &ThingActionInfo::aborted,[requestId, this](){m_asyncActions.remove(requestId);}); + connect(info, &ThingActionInfo::aborted, this, [requestId, this](){ m_asyncActions.remove(requestId); }); m_asyncActions.insert(requestId, info); } else if (action.actionTypeId() == lightPanelsColorActionTypeId) { QColor color(action.param(lightPanelsColorActionColorParamTypeId).value().toString()); QUuid requestId = nanoleaf->setColor(color); - connect(info, &ThingActionInfo::aborted,[requestId, this](){m_asyncActions.remove(requestId);}); + connect(info, &ThingActionInfo::aborted, this, [requestId, this](){ m_asyncActions.remove(requestId); }); m_asyncActions.insert(requestId, info); } else if (action.actionTypeId() == lightPanelsColorTemperatureActionTypeId) { int colorTemperature = action.param(lightPanelsColorTemperatureActionColorTemperatureParamTypeId).value().toInt(); QUuid requestId = nanoleaf->setMired(colorTemperature); - connect(info, &ThingActionInfo::aborted,[requestId, this](){m_asyncActions.remove(requestId);}); + connect(info, &ThingActionInfo::aborted, this, [requestId, this](){ m_asyncActions.remove(requestId); }); m_asyncActions.insert(requestId, info); } else if (action.actionTypeId() == lightPanelsAlertActionTypeId) { QUuid requestId = nanoleaf->identify(); - connect(info, &ThingActionInfo::aborted,[requestId, this](){m_asyncActions.remove(requestId);}); + connect(info, &ThingActionInfo::aborted, this, [requestId, this](){ m_asyncActions.remove(requestId); }); m_asyncActions.insert(requestId, info); } } diff --git a/nanoleaf/integrationpluginnanoleaf.h b/nanoleaf/integrationpluginnanoleaf.h index 017ed2da..74e2b01c 100644 --- a/nanoleaf/integrationpluginnanoleaf.h +++ b/nanoleaf/integrationpluginnanoleaf.h @@ -1,6 +1,6 @@ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -* Copyright 2013 - 2020, nymea GmbH +* Copyright 2013 - 2025, nymea GmbH * Contact: contact@nymea.io * * This file is part of nymea. @@ -31,12 +31,12 @@ #ifndef INTEGRATIONPLUGINNANOLEAF_H #define INTEGRATIONPLUGINNANOLEAF_H -#include "integrations/integrationplugin.h" -#include "nanoleaf.h" +#include +#include +#include +#include -#include "plugintimer.h" -#include "network/networkaccessmanager.h" -#include "network/zeroconf/zeroconfservicebrowser.h" +#include "nanoleaf.h" #include @@ -66,8 +66,8 @@ public: private: ZeroConfServiceBrowser *m_zeroconfBrowser = nullptr; PluginTimer *m_pluginTimer = nullptr; - QHash m_nanoleafConnections; - QHash m_unfinishedNanoleafConnections; + QHash m_nanoleafConnections; + QHash m_unfinishedNanoleafConnections; QHash m_asyncActions; QHash m_unfinishedPairing; QHash m_asyncDeviceSetup; diff --git a/nanoleaf/nanoleaf.cpp b/nanoleaf/nanoleaf.cpp index 0102e55b..7609c2b0 100644 --- a/nanoleaf/nanoleaf.cpp +++ b/nanoleaf/nanoleaf.cpp @@ -87,7 +87,7 @@ void Nanoleaf::addUser() request.setUrl(url); request.setHeader(QNetworkRequest::KnownHeaders::ContentTypeHeader, "application/json"); QNetworkReply *reply = m_networkManager->post(request, ""); - //qDebug(dcNanoleaf()) << "Sending request" << request.url(); + //qCDebug(dcNanoleaf()) << "Sending request" << request.url(); connect(reply, &QNetworkReply::finished, this, [reply, this] { reply->deleteLater(); int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); @@ -108,7 +108,7 @@ void Nanoleaf::addUser() QJsonParseError error; QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error); if (error.error != QJsonParseError::NoError) { - qDebug(dcNanoleaf()) << "Recieved invalide JSON object"; + qCDebug(dcNanoleaf()) << "Recieved invalide JSON object"; return; } m_authToken = data.toVariant().toMap().value("auth_token").toString(); @@ -129,7 +129,7 @@ void Nanoleaf::deleteUser() QNetworkRequest request; request.setUrl(url); QNetworkReply *reply = m_networkManager->deleteResource(request); - //qDebug(dcNanoleaf()) << "Sending request" << request.url(); + //qCDebug(dcNanoleaf()) << "Sending request" << request.url(); connect(reply, &QNetworkReply::finished, this, [reply, this] { reply->deleteLater(); int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); @@ -153,7 +153,7 @@ void Nanoleaf::getControllerInfo() QNetworkRequest request; request.setUrl(url); QNetworkReply *reply = m_networkManager->get(request); - //qDebug(dcNanoleaf()) << "Sending request" << request.url(); + //qCDebug(dcNanoleaf()) << "Sending request" << request.url(); connect(reply, &QNetworkReply::finished, this, [reply, this] { reply->deleteLater(); int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); @@ -166,7 +166,7 @@ void Nanoleaf::getControllerInfo() QJsonParseError error; QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error); if (error.error != QJsonParseError::NoError) { - qDebug(dcNanoleaf()) << "Recieved invalide JSON object"; + qCDebug(dcNanoleaf()) << "Recieved invalide JSON object"; return; } emit connectionChanged(true); @@ -241,7 +241,7 @@ void Nanoleaf::getPower() QNetworkRequest request; request.setUrl(url); QNetworkReply *reply = m_networkManager->get(request); - //qDebug(dcNanoleaf()) << "Sending request" << request.url(); + //qCDebug(dcNanoleaf()) << "Sending request" << request.url(); connect(reply, &QNetworkReply::finished, this, [reply, this] { reply->deleteLater(); int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); @@ -254,7 +254,7 @@ void Nanoleaf::getPower() QJsonParseError error; QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error); if (error.error != QJsonParseError::NoError) { - qDebug(dcNanoleaf()) << "Recieved invalide JSON object"; + qCDebug(dcNanoleaf()) << "Recieved invalide JSON object"; return; } bool power = data.toVariant().toMap().value("value").toBool(); @@ -274,7 +274,7 @@ void Nanoleaf::getHue() QNetworkRequest request; request.setUrl(url); QNetworkReply *reply = m_networkManager->get(request); - //qDebug(dcNanoleaf()) << "Sending request" << request.url(); + //qCDebug(dcNanoleaf()) << "Sending request" << request.url(); connect(reply, &QNetworkReply::finished, this, [reply, this] { reply->deleteLater(); int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); @@ -286,7 +286,7 @@ void Nanoleaf::getHue() QJsonParseError error; QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error); if (error.error != QJsonParseError::NoError) { - qDebug(dcNanoleaf()) << "Recieved invalide JSON object"; + qCDebug(dcNanoleaf()) << "Recieved invalide JSON object"; return; } int hue = data.toVariant().toMap().value("value").toBool(); @@ -317,7 +317,7 @@ void Nanoleaf::getBrightness() QJsonParseError error; QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error); if (error.error != QJsonParseError::NoError) { - qDebug(dcNanoleaf()) << "Recieved invalide JSON object"; + qCDebug(dcNanoleaf()) << "Recieved invalide JSON object"; return; } int brightness = data.toVariant().toMap().value("value").toInt(); @@ -348,7 +348,7 @@ void Nanoleaf::getSaturation() QJsonParseError error; QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error); if (error.error != QJsonParseError::NoError) { - qDebug(dcNanoleaf()) << "Recieved invalide JSON object"; + qCDebug(dcNanoleaf()) << "Recieved invalide JSON object"; return; } int brightness = data.toVariant().toMap().value("value").toInt(); @@ -380,7 +380,7 @@ void Nanoleaf::getColorTemperature() QJsonParseError error; QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error); if (error.error != QJsonParseError::NoError) { - qDebug(dcNanoleaf()) << "Recieved invalide JSON object"; + qCDebug(dcNanoleaf()) << "Recieved invalide JSON object"; return; } int kelvin = data.toVariant().toMap().value("value").toInt(); @@ -412,7 +412,7 @@ void Nanoleaf::getColorMode() QJsonParseError error; QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error); if (error.error != QJsonParseError::NoError) { - qDebug(dcNanoleaf()) << "Recieved invalide JSON object"; + qCDebug(dcNanoleaf()) << "Recieved invalide JSON object"; return; } emit connectionChanged(true); @@ -443,11 +443,11 @@ void Nanoleaf::registerForEvents() request.setUrl(url); QNetworkReply *reply = m_networkManager->get(request); - connect(reply, &QNetworkReply::readyRead, this, [reply, this] { + connect(reply, &QNetworkReply::readyRead, this, [reply] { QJsonParseError error; QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error); if (error.error != QJsonParseError::NoError) { - qDebug(dcNanoleaf()) << "Recieved invalide JSON object"; + qCDebug(dcNanoleaf()) << "Recieved invalide JSON object"; return; } qCDebug(dcNanoleaf()) << "On event stream" << data.toJson(); @@ -464,7 +464,7 @@ void Nanoleaf::registerForEvents() QJsonParseError error; QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error); if (error.error != QJsonParseError::NoError) { - qDebug(dcNanoleaf()) << "Recieved invalide JSON object"; + qCDebug(dcNanoleaf()) << "Recieved invalide JSON object"; return; } qCDebug(dcNanoleaf()) << "Event received" << data.toJson(); @@ -528,7 +528,7 @@ QUuid Nanoleaf::setPower(bool power) request.setUrl(url); request.setHeader(QNetworkRequest::KnownHeaders::ContentTypeHeader, "application/json"); QNetworkReply *reply = m_networkManager->put(request, body.toJson()); - //qDebug(dcNanoleaf()) << "Sending request" << request.url(); + //qCDebug(dcNanoleaf()) << "Sending request" << request.url(); connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] { reply->deleteLater(); int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); @@ -570,7 +570,7 @@ QUuid Nanoleaf::setHue(int hue) request.setUrl(url); request.setHeader(QNetworkRequest::KnownHeaders::ContentTypeHeader, "application/json"); QNetworkReply *reply = m_networkManager->put(request, body.toJson()); - //qDebug(dcNanoleaf()) << "Sending request" << request.url(); + //qCDebug(dcNanoleaf()) << "Sending request" << request.url(); connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] { reply->deleteLater(); int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); @@ -604,7 +604,7 @@ QUuid Nanoleaf::setBrightness(int percentage) request.setUrl(url); request.setHeader(QNetworkRequest::KnownHeaders::ContentTypeHeader, "application/json"); QNetworkReply *reply = m_networkManager->put(request, body.toJson()); - //qDebug(dcNanoleaf()) << "Sending request" << request.url(); + //qCDebug(dcNanoleaf()) << "Sending request" << request.url(); connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] { reply->deleteLater(); int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); @@ -638,7 +638,7 @@ QUuid Nanoleaf::setSaturation(int percentage) request.setUrl(url); request.setHeader(QNetworkRequest::KnownHeaders::ContentTypeHeader, "application/json"); QNetworkReply *reply = m_networkManager->put(request, body.toJson()); - //qDebug(dcNanoleaf()) << "Sending request" << request.url() << body.toJson(); + //qCDebug(dcNanoleaf()) << "Sending request" << request.url() << body.toJson(); connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] { reply->deleteLater(); int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); @@ -680,7 +680,7 @@ QUuid Nanoleaf::setKelvin(int kelvin) request.setUrl(url); request.setHeader(QNetworkRequest::KnownHeaders::ContentTypeHeader, "application/json"); QNetworkReply *reply = m_networkManager->put(request, body.toJson()); - qDebug(dcNanoleaf()) << "Sending request" << request.url() << body.toJson(); + qCDebug(dcNanoleaf()) << "Sending request" << request.url() << body.toJson(); connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] { reply->deleteLater(); int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); @@ -718,7 +718,7 @@ void Nanoleaf::getEffects() QJsonParseError error; QJsonDocument data = QJsonDocument::fromJson(reply->readAll(), &error); if (error.error != QJsonParseError::NoError) { - qDebug(dcNanoleaf()) << "Recieved invalide JSON object"; + qCDebug(dcNanoleaf()) << "Recieved invalide JSON object"; return; } QStringList effects; @@ -774,7 +774,7 @@ QUuid Nanoleaf::setEffect(const QString &effect) request.setUrl(url); request.setHeader(QNetworkRequest::KnownHeaders::ContentTypeHeader, "application/json"); QNetworkReply *reply = m_networkManager->put(request, body.toJson()); - qDebug(dcNanoleaf()) << "Sending request" << request.url(); + qCDebug(dcNanoleaf()) << "Sending request" << request.url(); connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] { reply->deleteLater(); int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); @@ -802,7 +802,7 @@ QUuid Nanoleaf::identify() request.setUrl(url); request.setHeader(QNetworkRequest::KnownHeaders::ContentTypeHeader, "application/json"); QNetworkReply *reply = m_networkManager->put(request, ""); - qDebug(dcNanoleaf()) << "Sending request" << request.url(); + qCDebug(dcNanoleaf()) << "Sending request" << request.url(); connect(reply, &QNetworkReply::finished, this, [requestId, reply, this] { reply->deleteLater(); int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); diff --git a/nanoleaf/nanoleaf.h b/nanoleaf/nanoleaf.h index d0db87d8..c8d677a9 100644 --- a/nanoleaf/nanoleaf.h +++ b/nanoleaf/nanoleaf.h @@ -1,6 +1,6 @@ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -* Copyright 2013 - 2020, nymea GmbH +* Copyright 2013 - 2025, nymea GmbH * Contact: contact@nymea.io * * This file is part of nymea. @@ -37,8 +37,8 @@ #include #include -#include "network/networkaccessmanager.h" -#include "integrations/thing.h" +#include +#include class Nanoleaf : public QObject { @@ -119,11 +119,11 @@ signals: void authenticationStatusChanged(bool authenticated); void requestExecuted(QUuid requestId, bool success); - void controllerInfoReceived(const ControllerInfo &controllerInfo); + void controllerInfoReceived(const Nanoleaf::ControllerInfo &controllerInfo); void authTokenRecieved(const QString &token); void powerReceived(bool power); void brightnessReceived(int percentage); - void colorModeReceived(ColorMode colorMode); + void colorModeReceived(Nanoleaf::ColorMode colorMode); void hueReceived(int hue); void saturationReceived(int percentage); void effectListReceived(const QStringList &effects); @@ -132,7 +132,7 @@ signals: void selectedEffectReceived(const QString &effect); //Only supported by Canvas - void touchEventReceived(GestureID gesture); + void touchEventReceived(Nanoleaf::GestureID gesture); }; #endif // NANOLEAF_H