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 "../../qetproject.h"
#include "../terminalstrip.h" #include "../terminalstrip.h"
#include "../qetgraphicsitem/element.h" #include "../qetgraphicsitem/element.h"
#include "../realterminal.h"
#include <QObject> #include <QObject>
@@ -57,9 +58,13 @@ RemoveTerminalStripCommand::RemoveTerminalStripCommand(TerminalStrip *strip,
QUndoCommand *parent) : QUndoCommand *parent) :
QUndoCommand(parent), QUndoCommand(parent),
m_strip(strip), m_strip(strip),
m_project(project), m_project(project)
m_elements(strip->terminalElement())
{ {
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")); 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 * @brief RealTerminal::level
* @return * @return

View File

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

View File

@@ -104,21 +104,22 @@ void TerminalStrip::setData(const TerminalStripData &data) {
*/ */
bool TerminalStrip::addTerminal(Element *terminal) bool TerminalStrip::addTerminal(Element *terminal)
{ {
if (m_terminal_elements_vector.contains(terminal)) { for (const auto &real_t : m_real_terminals) {
return false; if (real_t->element() == terminal) {
return false;
}
} }
if (terminal->elementData().m_type != ElementData::Terminale) { if (terminal->elementData().m_type != ElementData::Terminale) {
return false; return false;
} }
m_terminal_elements_vector.append(terminal);
auto casted_ = static_cast<TerminalElement *>(terminal); auto casted_ = static_cast<TerminalElement *>(terminal);
m_real_terminals.append(casted_->realTerminal());
//Create a new single level physical terminal //Create a new single level physical terminal
auto raw_phy_ptr = new PhysicalTerminal(this, QVector<QSharedPointer<RealTerminal>>{casted_->realTerminal()}); auto raw_phy_ptr = new PhysicalTerminal(this, QVector<QSharedPointer<RealTerminal>>{casted_->realTerminal()});
m_physical_terminals.append(raw_phy_ptr->sharedRef()); m_physical_terminals.append(raw_phy_ptr->sharedRef());
rebuildRealVector();
return true; return true;
} }
@@ -131,32 +132,23 @@ bool TerminalStrip::addTerminal(Element *terminal)
*/ */
bool TerminalStrip::removeTerminal(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); if (real_t->element() == terminal)
//Get the real and physical terminal associated to @terminal
if (auto real_terminal = realTerminal(terminal))
{ {
if (auto physical_terminal = physicalTerminal(real_terminal)) if (auto physical_t = real_t->physicalTerminal())
{ {
if (physical_terminal->levelCount() == 1) { physical_t->removeTerminal(real_t);
m_physical_terminals.removeOne(physical_terminal); if (physical_t->realTerminalCount() == 0) {
} else { m_physical_terminals.removeOne(physical_t);
auto v = physical_terminal->realTerminals();
v.removeOne(real_terminal);
physical_terminal->setTerminals(v);
} }
} }
m_real_terminals.removeOne(real_terminal);
rebuildRealVector(); rebuildRealVector();
return true; return true;
} }
//There is no reason to be here, but in case of....
return false;
} }
return false; return false;
} }
@@ -258,6 +250,11 @@ QSharedPointer<RealTerminal> TerminalStrip::realTerminalForUuid(const QUuid &uui
return QSharedPointer<RealTerminal>(); return QSharedPointer<RealTerminal>();
} }
QVector<QSharedPointer<RealTerminal>> TerminalStrip::realTerminals() const
{
return m_real_terminals;
}
/** /**
* @brief TerminalStrip::setSortedTo * @brief TerminalStrip::setSortedTo
@@ -753,14 +750,6 @@ QSharedPointer<RealTerminal> TerminalStrip::nextRealTerminal(const QSharedPointe
return QSharedPointer<RealTerminal>(); 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 * @brief TerminalStrip::toXml
* @param parent_document * @param parent_document
@@ -824,7 +813,6 @@ bool TerminalStrip::fromXml(QDomElement &xml_element)
{ {
if (terminal_elmt->uuid() == uuid_) if (terminal_elmt->uuid() == uuid_)
{ {
m_terminal_elements_vector.append(terminal_elmt);
real_t_vector.append(terminal_elmt->realTerminal()); real_t_vector.append(terminal_elmt->realTerminal());
//Remove the actual terminal element from the vector, they dicrease the size //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 //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; QVector<QSharedPointer<PhysicalTerminal>> physicalTerminal() const;
QSharedPointer<RealTerminal> realTerminal(Element *terminal) const; QSharedPointer<RealTerminal> realTerminal(Element *terminal) const;
QSharedPointer<RealTerminal> realTerminalForUuid(const QUuid &uuid) const; QSharedPointer<RealTerminal> realTerminalForUuid(const QUuid &uuid) const;
QVector<QSharedPointer<RealTerminal>> realTerminals() const;
bool setOrderTo(const QVector<QSharedPointer<PhysicalTerminal>> &sorted_vector); bool setOrderTo(const QVector<QSharedPointer<PhysicalTerminal>> &sorted_vector);
bool groupTerminals(const QSharedPointer<PhysicalTerminal> &receiver_terminal, const QVector<QSharedPointer<RealTerminal>> &added_terminals); 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> previousRealTerminal(const QSharedPointer<RealTerminal> &real_terminal) const;
QSharedPointer<RealTerminal> nextRealTerminal(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");} static QString xmlTagName() {return QStringLiteral("terminal_strip");}
QDomElement toXml(QDomDocument &parent_document); QDomElement toXml(QDomDocument &parent_document);
bool fromXml(QDomElement &xml_element); bool fromXml(QDomElement &xml_element);
@@ -119,7 +118,6 @@ class TerminalStrip : public QObject
private: private:
TerminalStripData m_data; TerminalStripData m_data;
QPointer<QETProject> m_project; QPointer<QETProject> m_project;
QVector<QPointer<Element>> m_terminal_elements_vector;
QVector<QSharedPointer<RealTerminal>> m_real_terminals; QVector<QSharedPointer<RealTerminal>> m_real_terminals;
QVector<QSharedPointer<PhysicalTerminal>> m_physical_terminals; QVector<QSharedPointer<PhysicalTerminal>> m_physical_terminals;
QVector<QSharedPointer<TerminalStripBridge>> m_bridge; QVector<QSharedPointer<TerminalStripBridge>> m_bridge;