This repository has been archived by the owner on Jan 28, 2022. It is now read-only.
/
entity.cpp
executable file
路105 lines (81 loc) 路 3.14 KB
/
entity.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include "entity.h"
#include "../config.h"
#include <QtDebug>
#include <QTimer>
Entity::Entity(const QString& type, const QVariantMap& config, QObject *integrationObj, QObject *parent) :
QObject(parent),
m_integrationObj(integrationObj),
m_type(type),
m_area(config.value("area").toString()),
m_friendly_name(config.value("friendly_name").toString()),
m_integration(config.value("integration").toString()),
m_supported_features(config.value("supported_features").toStringList()),
m_attributes(config.value("attributes"))
{
setObjectName(config.value("entity_id").toString());
QVariantMap c = Config::getInstance()->read();
QString p = QString::number(Config::getInstance()->profile());
QVariantList f = c.value("ui_config").toMap().value("profiles").toMap().value(p).toMap().value("favorites").toJsonArray().toVariantList();
m_favorite = false;
for (int i = 0; i < f.length(); i++)
{
if (f[i].toString() == config.value("entity_id").toString()) {
m_favorite = true;
}
}
}
Entity::~Entity()
{
}
void Entity::command(const QString &command, const QVariant& param)
{
QVariant returnedValue;
QMetaObject::invokeMethod(m_integrationObj, "sendCommand", Qt::AutoConnection,
Q_ARG(QString, m_type),
Q_ARG(QString, QString(entity_id())),
Q_ARG(QString, command),
Q_ARG(QVariant, param));
}
QVariantMap Entity::getDataToSave()
{
QVariantMap map;
map["type"] = m_type;
map["entity_id"] = entity_id();
map["favorite"] = m_favorite;
map["friendly_name"] = m_friendly_name;
map["integration"] = m_integration;
map["area"] = m_area;
map["supported_features"] = m_supported_features;
// map["attributes"] = m_attributes;
return map;
}
bool Entity::update(const QVariantMap &attributes)
{
}
void Entity::setFavorite(bool value)
{
QTimer::singleShot(1000, this, [=](){
QVariantMap c = Config::getInstance()->read();
QString p = QString::number(Config::getInstance()->profile());
QVariantList f = c.value("ui_config").toMap().value("profiles").toMap().value(p).toMap().value("favorites").toJsonArray().toVariantList();
if (value && f.indexOf(entity_id()) == -1) {
f.append(entity_id());
}
if (!value && f.indexOf(entity_id()) > -1) {
f.removeAt(f.indexOf(entity_id()));
}
// save to config
QVariantMap r = c.value("ui_config").toMap().value("profiles").toMap().value(p).toMap();
r.insert("favorites", f);
QVariantMap r2 = c.value("ui_config").toMap().value("profiles").toMap();
r2.insert(p, r);
QVariantMap r3 = c.value("ui_config").toMap();
r3.insert("profiles", r2);
c.insert("ui_config", r3);
Config::getInstance()->readWrite(c);
// write to config file
Config::getInstance()->getInstance()->writeConfig();
m_favorite = value;
emit favoriteChanged();
});
}