Revamp code, make it more simple

This commit is contained in:
joshua
2022-02-09 18:57:27 +01:00
parent ffd904749e
commit ba638f52e5
5 changed files with 36 additions and 35 deletions

View File

@@ -19,6 +19,7 @@
#include "../../qetproject.h"
#include "../terminalstrip.h"
#include "../qetgraphicsitem/element.h"
#include "../realterminal.h"
#include <QObject>
@@ -57,9 +58,13 @@ RemoveTerminalStripCommand::RemoveTerminalStripCommand(TerminalStrip *strip,
QUndoCommand *parent) :
QUndoCommand(parent),
m_strip(strip),
m_project(project),
m_elements(strip->terminalElement())
m_project(project)
{
for (const auto &real_t : strip->realTerminals())
{
if (real_t->element())
m_elements.append(real_t->element());
}
setText(QObject::tr("Supprimer un groupe de bornes"));
}

View File

@@ -105,6 +105,15 @@ TerminalStrip *RealTerminal::parentStrip() const {
}
}
/**
* @brief RealTerminal::physicalTerminal
* @return The parent physical terminal of this terminal.
* The returned QSharedPointer can be null
*/
QSharedPointer<PhysicalTerminal> RealTerminal::physicalTerminal() const {
return m_physical_terminal;
}
/**
* @brief RealTerminal::level
* @return

View File

@@ -56,6 +56,7 @@ class RealTerminal
public:
~RealTerminal();
TerminalStrip *parentStrip() const;
QSharedPointer<PhysicalTerminal> physicalTerminal() const;
QDomElement toXml(QDomDocument &parent_document) const;

View File

@@ -104,21 +104,22 @@ void TerminalStrip::setData(const TerminalStripData &data) {
*/
bool TerminalStrip::addTerminal(Element *terminal)
{
if (m_terminal_elements_vector.contains(terminal)) {
for (const auto &real_t : m_real_terminals) {
if (real_t->element() == terminal) {
return false;
}
}
if (terminal->elementData().m_type != ElementData::Terminale) {
return false;
}
m_terminal_elements_vector.append(terminal);
auto casted_ = static_cast<TerminalElement *>(terminal);
m_real_terminals.append(casted_->realTerminal());
//Create a new single level physical terminal
auto raw_phy_ptr = new PhysicalTerminal(this, QVector<QSharedPointer<RealTerminal>>{casted_->realTerminal()});
m_physical_terminals.append(raw_phy_ptr->sharedRef());
rebuildRealVector();
return true;
}
@@ -131,32 +132,23 @@ bool TerminalStrip::addTerminal(Element *terminal)
*/
bool TerminalStrip::removeTerminal(Element *terminal)
{
if (m_terminal_elements_vector.contains(terminal))
for (const auto &real_t : m_real_terminals)
{
m_terminal_elements_vector.removeOne(terminal);
//Get the real and physical terminal associated to @terminal
if (auto real_terminal = realTerminal(terminal))
if (real_t->element() == terminal)
{
if (auto physical_terminal = physicalTerminal(real_terminal))
if (auto physical_t = real_t->physicalTerminal())
{
if (physical_terminal->levelCount() == 1) {
m_physical_terminals.removeOne(physical_terminal);
} else {
auto v = physical_terminal->realTerminals();
v.removeOne(real_terminal);
physical_terminal->setTerminals(v);
physical_t->removeTerminal(real_t);
if (physical_t->realTerminalCount() == 0) {
m_physical_terminals.removeOne(physical_t);
}
}
m_real_terminals.removeOne(real_terminal);
rebuildRealVector();
return true;
}
//There is no reason to be here, but in case of....
return false;
}
return false;
}
@@ -258,6 +250,11 @@ QSharedPointer<RealTerminal> TerminalStrip::realTerminalForUuid(const QUuid &uui
return QSharedPointer<RealTerminal>();
}
QVector<QSharedPointer<RealTerminal>> TerminalStrip::realTerminals() const
{
return m_real_terminals;
}
/**
* @brief TerminalStrip::setSortedTo
@@ -753,14 +750,6 @@ QSharedPointer<RealTerminal> TerminalStrip::nextRealTerminal(const QSharedPointe
return QSharedPointer<RealTerminal>();
}
/**
* @brief TerminalStrip::terminalElement
* @return A vector of all terminal element owned by this strip
*/
QVector<QPointer<Element> > TerminalStrip::terminalElement() const {
return m_terminal_elements_vector;
}
/**
* @brief TerminalStrip::toXml
* @param parent_document
@@ -824,7 +813,6 @@ bool TerminalStrip::fromXml(QDomElement &xml_element)
{
if (terminal_elmt->uuid() == uuid_)
{
m_terminal_elements_vector.append(terminal_elmt);
real_t_vector.append(terminal_elmt->realTerminal());
//Remove the actual terminal element from the vector, they dicrease the size
//of the vector and so each iteration have less terminal element to check

View File

@@ -87,6 +87,7 @@ class TerminalStrip : public QObject
QVector<QSharedPointer<PhysicalTerminal>> physicalTerminal() const;
QSharedPointer<RealTerminal> realTerminal(Element *terminal) const;
QSharedPointer<RealTerminal> realTerminalForUuid(const QUuid &uuid) const;
QVector<QSharedPointer<RealTerminal>> realTerminals() const;
bool setOrderTo(const QVector<QSharedPointer<PhysicalTerminal>> &sorted_vector);
bool groupTerminals(const QSharedPointer<PhysicalTerminal> &receiver_terminal, const QVector<QSharedPointer<RealTerminal>> &added_terminals);
@@ -107,8 +108,6 @@ class TerminalStrip : public QObject
QSharedPointer<RealTerminal> previousRealTerminal(const QSharedPointer<RealTerminal> &real_terminal) const;
QSharedPointer<RealTerminal> nextRealTerminal(const QSharedPointer<RealTerminal> &real_terminal) const;
QVector<QPointer<Element>> terminalElement() const;
static QString xmlTagName() {return QStringLiteral("terminal_strip");}
QDomElement toXml(QDomDocument &parent_document);
bool fromXml(QDomElement &xml_element);
@@ -119,7 +118,6 @@ class TerminalStrip : public QObject
private:
TerminalStripData m_data;
QPointer<QETProject> m_project;
QVector<QPointer<Element>> m_terminal_elements_vector;
QVector<QSharedPointer<RealTerminal>> m_real_terminals;
QVector<QSharedPointer<PhysicalTerminal>> m_physical_terminals;
QVector<QSharedPointer<TerminalStripBridge>> m_bridge;