44 lines
1.3 KiB
C++
44 lines
1.3 KiB
C++
|
|
#include <QJsonObject>
|
||
|
|
#include <QJsonArray>
|
||
|
|
#include "powerEntity.h"
|
||
|
|
#include "powerTerminal.h"
|
||
|
|
|
||
|
|
QJsonObject PowerEntity::toJson() const {
|
||
|
|
QJsonObject obj;
|
||
|
|
obj["id"] = m_id;
|
||
|
|
obj["type"] = static_cast<int>(m_type);
|
||
|
|
obj["name"] = m_name;
|
||
|
|
|
||
|
|
QJsonArray childrenArray;
|
||
|
|
for (auto child : m_children)
|
||
|
|
childrenArray.append(child->id());
|
||
|
|
obj["children"] = childrenArray;
|
||
|
|
|
||
|
|
return obj;
|
||
|
|
}
|
||
|
|
|
||
|
|
void PowerEntity::addTerminal(PowerTerminal* terminal) {
|
||
|
|
if (terminal && terminal->parentEntityId() == m_id) {
|
||
|
|
m_terminals.append(terminal);
|
||
|
|
terminal->setParent(this);
|
||
|
|
emit terminalAdded(terminal);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void PowerEntity::removeTerminal(const QString& terminalId) {
|
||
|
|
auto it = std::find_if(m_terminals.begin(), m_terminals.end(),
|
||
|
|
[terminalId](PowerTerminal* t) { return t->id() == terminalId; });
|
||
|
|
if (it != m_terminals.end()) {
|
||
|
|
PowerTerminal* term = *it;
|
||
|
|
m_terminals.erase(it);
|
||
|
|
term->deleteLater();
|
||
|
|
emit terminalRemoved(terminalId);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
PowerTerminal* PowerEntity::findTerminal(const QString& terminalId) const {
|
||
|
|
auto it = std::find_if(m_terminals.begin(), m_terminals.end(),
|
||
|
|
[terminalId](PowerTerminal* t) { return t->id() == terminalId; });
|
||
|
|
return (it != m_terminals.end()) ? *it : nullptr;
|
||
|
|
}
|