Skip to content

Commit 4655edd

Browse files
committed
little fix
1 parent 991bd78 commit 4655edd

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

device.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ DeviceList::DeviceList(QSettings *config, QObject *parent) : QObject(parent), m_
3030
file.close();
3131
}
3232

33+
m_specialExposes = {"light", "switch", "cover", "lock", "thermostat"};
34+
3335
connect(m_databaseTimer, &QTimer::timeout, this, &DeviceList::writeDatabase);
3436
connect(m_propertiesTimer, &QTimer::timeout, this, &DeviceList::writeProperties);
3537

@@ -369,17 +371,16 @@ void DeviceList::setupEndpoint(const Endpoint &endpoint, const QJsonObject &json
369371
{
370372
QString exposeName = it->toString(), itemName = it->toString().split('_').value(0), optionName = multiple ? QString("%1_%2").arg(itemName, QString::number(endpoint->id())) : itemName;
371373
QMap <QString, QVariant> option = m_exposeOptions.value(itemName).toMap();
372-
QList <QString> list = {"light", "switch", "cover", "lock", "thermostat"};
373374
Expose expose;
374375
int type;
375376

376-
if (!list.contains(itemName))
377+
if (!m_specialExposes.contains(itemName))
377378
{
378379
option.insert(device->options().value(optionName).toMap());
379380
device->options().insert(optionName, option);
380381
}
381382

382-
type = QMetaType::type(QString(list.contains(itemName) ? itemName : option.value("type").toString()).append("Expose").toUtf8());
383+
type = QMetaType::type(QString(m_specialExposes.contains(itemName) ? itemName : option.value("type").toString()).append("Expose").toUtf8());
383384

384385
expose = Expose(type ? reinterpret_cast <ExposeObject*> (QMetaType::create(type)) : new ExposeObject(itemName));
385386
expose->setName(exposeName);
@@ -702,10 +703,12 @@ void DeviceList::recognizeDevice(const Device &device)
702703
expose->setParent(it.value().data());
703704
recognizeMultipleExpose(device, it.value(), expose);
704705

706+
if (!m_specialExposes.contains(expose->name()))
707+
device->options().insert(QString("%1_%2").arg(expose->name(), QString::number(it.key())), m_exposeOptions.value(expose->name()).toMap());
708+
705709
if (list.contains(expose->name()))
706710
continue;
707711

708-
device->options().insert(QString("%1_%2").arg(expose->name(), QString::number(it.key())), m_exposeOptions.value(expose->name()).toMap());
709712
list.append(expose->name());
710713
}
711714

device.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ class DeviceList : public QObject, public QMap <QByteArray, Device>
210210
bool m_names, m_permitJoin, m_sync;
211211

212212
QMap <QString, QVariant> m_exposeOptions;
213+
QList <QString> m_specialExposes;
213214

214215
void unserializeDevices(const QJsonArray &devices);
215216
void unserializeProperties(const QJsonObject &properties);

0 commit comments

Comments
 (0)