DiagramDesigner/diagramCavas/source/powerEntity.cpp

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;
}