337 lines
7.4 KiB
C++
337 lines
7.4 KiB
C++
// SPDX-License-Identifier: LGPL-3.0-or-later
|
|
|
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
*
|
|
* Copyright (C) 2013 - 2024, nymea GmbH
|
|
* Copyright (C) 2024 - 2026, chargebyte austria GmbH
|
|
*
|
|
* This file is part of libnymea-app.
|
|
*
|
|
* libnymea-app is free software: you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public License
|
|
* as published by the Free Software Foundation, either version 3
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* libnymea-app is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with libnymea-app. If not, see <https://www.gnu.org/licenses/>.
|
|
*
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
|
|
#include "thingclass.h"
|
|
|
|
#include <QDebug>
|
|
|
|
ThingClass::ThingClass(QObject *parent)
|
|
: QObject(parent)
|
|
{}
|
|
|
|
QUuid ThingClass::id() const
|
|
{
|
|
return m_id;
|
|
}
|
|
|
|
void ThingClass::setId(const QUuid &id)
|
|
{
|
|
m_id = id;
|
|
}
|
|
|
|
QUuid ThingClass::vendorId() const
|
|
{
|
|
return m_vendorId;
|
|
}
|
|
|
|
void ThingClass::setVendorId(const QUuid &vendorId)
|
|
{
|
|
m_vendorId = vendorId;
|
|
}
|
|
|
|
QUuid ThingClass::pluginId() const
|
|
{
|
|
return m_pluginId;
|
|
}
|
|
|
|
void ThingClass::setPluginId(const QUuid &pluginId)
|
|
{
|
|
m_pluginId = pluginId;
|
|
}
|
|
|
|
QString ThingClass::name() const
|
|
{
|
|
return m_name;
|
|
}
|
|
|
|
void ThingClass::setName(const QString &name)
|
|
{
|
|
m_name = name;
|
|
}
|
|
|
|
QString ThingClass::displayName() const
|
|
{
|
|
return m_displayName;
|
|
}
|
|
|
|
void ThingClass::setDisplayName(const QString &displayName)
|
|
{
|
|
m_displayName = displayName;
|
|
}
|
|
|
|
QStringList ThingClass::createMethods() const
|
|
{
|
|
return m_createMethods;
|
|
}
|
|
|
|
void ThingClass::setCreateMethods(const QStringList &createMethods)
|
|
{
|
|
m_createMethods = createMethods;
|
|
}
|
|
|
|
ThingClass::DiscoveryType ThingClass::discoveryType() const
|
|
{
|
|
return m_discoveryType;
|
|
}
|
|
|
|
void ThingClass::setDiscoveryType(ThingClass::DiscoveryType discoveryType)
|
|
{
|
|
m_discoveryType = discoveryType;
|
|
}
|
|
|
|
ThingClass::SetupMethod ThingClass::setupMethod() const
|
|
{
|
|
return m_setupMethod;
|
|
}
|
|
|
|
void ThingClass::setSetupMethod(ThingClass::SetupMethod setupMethod)
|
|
{
|
|
m_setupMethod = setupMethod;
|
|
}
|
|
|
|
QStringList ThingClass::interfaces() const
|
|
{
|
|
return m_interfaces;
|
|
}
|
|
|
|
void ThingClass::setInterfaces(const QStringList &interfaces)
|
|
{
|
|
m_interfaces = interfaces;
|
|
}
|
|
|
|
QStringList ThingClass::providedInterfaces() const
|
|
{
|
|
return m_providedInterfaces;
|
|
}
|
|
|
|
void ThingClass::setProvidedInterfaces(const QStringList &providedInterfaces)
|
|
{
|
|
m_providedInterfaces = providedInterfaces;
|
|
}
|
|
|
|
QString ThingClass::baseInterface() const
|
|
{
|
|
foreach (const QString &interface, m_interfaces) {
|
|
if (interface == "gateway") {
|
|
return "gateway";
|
|
}
|
|
if (interface == "shutter") {
|
|
return "shutter";
|
|
}
|
|
if (interface == "blind") {
|
|
return "blind";
|
|
}
|
|
if (interface == "garagedoor") {
|
|
return "garagedoor";
|
|
}
|
|
if (interface == "inputtrigger") {
|
|
return "inputtrigger";
|
|
}
|
|
if (interface == "awning") {
|
|
return "awning";
|
|
}
|
|
if (interface == "outputtrigger") {
|
|
return "outputtrigger";
|
|
}
|
|
if (interface == "light") {
|
|
return "light";
|
|
}
|
|
if (interface == "sensor") {
|
|
return "sensor";
|
|
}
|
|
if (interface == "weather") {
|
|
return "weather";
|
|
}
|
|
if (interface == "media") {
|
|
return "media";
|
|
}
|
|
if (interface == "button" || interface == "powerswitch") {
|
|
return "button";
|
|
}
|
|
if (interface == "notifications") {
|
|
return "notifications";
|
|
}
|
|
if (interface == "powersocket") {
|
|
return "powersocket";
|
|
}
|
|
if (interface == "smartmeter") {
|
|
return "smartmeter";
|
|
}
|
|
if (interface == "heating") {
|
|
return "heating";
|
|
}
|
|
if (interface == "evcharger") {
|
|
return "evcharger";
|
|
}
|
|
if (interface == "irrigation") {
|
|
return "irrigation";
|
|
}
|
|
if (interface == "barcodescanner") {
|
|
return "barcodescanner";
|
|
}
|
|
if (interface == "cleaningrobot") {
|
|
return "cleaningrobot";
|
|
}
|
|
if (interface == "account") {
|
|
return "account";
|
|
}
|
|
if (interface == "thermostat") {
|
|
return "thermostat";
|
|
}
|
|
if (interface == "electricvehicle") {
|
|
return "electricvehicle";
|
|
}
|
|
if (interface == "ventilation") {
|
|
return "ventilation";
|
|
}
|
|
if (interface == "fingerprintreader") {
|
|
return "fingerprintreader";
|
|
}
|
|
}
|
|
return "uncategorized";
|
|
}
|
|
|
|
bool ThingClass::browsable() const
|
|
{
|
|
return m_browsable;
|
|
}
|
|
|
|
void ThingClass::setBrowsable(bool browsable)
|
|
{
|
|
m_browsable = browsable;
|
|
}
|
|
|
|
ParamTypes *ThingClass::paramTypes() const
|
|
{
|
|
return m_paramTypes;
|
|
}
|
|
|
|
void ThingClass::setParamTypes(ParamTypes *paramTypes)
|
|
{
|
|
if (m_paramTypes) {
|
|
m_paramTypes->deleteLater();
|
|
}
|
|
m_paramTypes = paramTypes;
|
|
emit paramTypesChanged();
|
|
}
|
|
|
|
ParamTypes *ThingClass::settingsTypes() const
|
|
{
|
|
return m_settingsTypes;
|
|
}
|
|
|
|
void ThingClass::setSettingsTypes(ParamTypes *settingsTypes)
|
|
{
|
|
if (m_settingsTypes) {
|
|
m_settingsTypes->deleteLater();
|
|
}
|
|
m_settingsTypes = settingsTypes;
|
|
emit settingsTypesChanged();
|
|
}
|
|
|
|
ParamTypes *ThingClass::discoveryParamTypes() const
|
|
{
|
|
return m_discoveryParamTypes;
|
|
}
|
|
|
|
void ThingClass::setDiscoveryParamTypes(ParamTypes *paramTypes)
|
|
{
|
|
if (m_discoveryParamTypes) {
|
|
m_discoveryParamTypes->deleteLater();
|
|
}
|
|
m_discoveryParamTypes = paramTypes;
|
|
emit discoveryParamTypesChanged();
|
|
}
|
|
|
|
StateTypes *ThingClass::stateTypes() const
|
|
{
|
|
return m_stateTypes;
|
|
}
|
|
|
|
void ThingClass::setStateTypes(StateTypes *stateTypes)
|
|
{
|
|
if (m_stateTypes) {
|
|
m_stateTypes->deleteLater();
|
|
}
|
|
m_stateTypes = stateTypes;
|
|
emit stateTypesChanged();
|
|
}
|
|
|
|
EventTypes *ThingClass::eventTypes() const
|
|
{
|
|
return m_eventTypes;
|
|
}
|
|
|
|
void ThingClass::setEventTypes(EventTypes *eventTypes)
|
|
{
|
|
if (m_eventTypes) {
|
|
m_eventTypes->deleteLater();
|
|
}
|
|
m_eventTypes = eventTypes;
|
|
emit eventTypesChanged();
|
|
}
|
|
|
|
ActionTypes *ThingClass::actionTypes() const
|
|
{
|
|
return m_actionTypes;
|
|
}
|
|
|
|
void ThingClass::setActionTypes(ActionTypes *actionTypes)
|
|
{
|
|
if (m_actionTypes) {
|
|
m_actionTypes->deleteLater();
|
|
}
|
|
m_actionTypes = actionTypes;
|
|
emit actionTypesChanged();
|
|
}
|
|
|
|
ActionTypes *ThingClass::browserItemActionTypes() const
|
|
{
|
|
return m_browserItemActionTypes;
|
|
}
|
|
|
|
void ThingClass::setBrowserItemActionTypes(ActionTypes *browserActionTypes)
|
|
{
|
|
if (m_browserItemActionTypes) {
|
|
m_browserItemActionTypes->deleteLater();
|
|
}
|
|
m_browserItemActionTypes = browserActionTypes;
|
|
emit browserItemActionTypesChanged();
|
|
}
|
|
|
|
bool ThingClass::hasActionType(const QUuid &actionTypeId)
|
|
{
|
|
foreach (ActionType *actionType, m_actionTypes->actionTypes()) {
|
|
if (actionType->id() == actionTypeId) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool ThingClass::isAutoCreated() const
|
|
{
|
|
return m_createMethods.contains("CreateMethodAuto");
|
|
}
|