Revamp code.

Remove a QVector member variable and use instead a function who
return the same vector, but created on the fly
This commit is contained in:
joshua
2022-02-09 19:15:45 +01:00
parent ba638f52e5
commit dcc5a4dd0b
2 changed files with 19 additions and 51 deletions

View File

@@ -104,7 +104,7 @@ void TerminalStrip::setData(const TerminalStripData &data) {
*/
bool TerminalStrip::addTerminal(Element *terminal)
{
for (const auto &real_t : m_real_terminals) {
for (const auto &real_t : realTerminals()) {
if (real_t->element() == terminal) {
return false;
}
@@ -119,7 +119,6 @@ bool TerminalStrip::addTerminal(Element *terminal)
//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;
}
@@ -132,7 +131,7 @@ bool TerminalStrip::addTerminal(Element *terminal)
*/
bool TerminalStrip::removeTerminal(Element *terminal)
{
for (const auto &real_t : m_real_terminals)
for (const auto &real_t : realTerminals())
{
if (real_t->element() == terminal)
{
@@ -144,7 +143,6 @@ bool TerminalStrip::removeTerminal(Element *terminal)
}
}
rebuildRealVector();
return true;
}
}
@@ -217,23 +215,6 @@ QVector<QSharedPointer<PhysicalTerminal>> TerminalStrip::physicalTerminal() cons
return m_physical_terminals;
}
/**
* @brief TerminalStrip::realTerminal
* @param terminal
* @return the real terminal linked to \p terminal
* the returned QSharedPointer can be null.
*/
QSharedPointer<RealTerminal> TerminalStrip::realTerminal(Element *terminal) const
{
for (const auto &real : qAsConst(m_real_terminals)) {
if (real->element() == terminal) {
return real;
}
}
return shared_real_terminal();
}
/**
* @brief TerminalStrip::realTerminalForUuid
* @param uuid
@@ -241,7 +222,7 @@ QSharedPointer<RealTerminal> TerminalStrip::realTerminal(Element *terminal) cons
*/
QSharedPointer<RealTerminal> TerminalStrip::realTerminalForUuid(const QUuid &uuid) const
{
for (const auto &t : qAsConst(m_real_terminals)) {
for (const auto &t : realTerminals()) {
if (t->elementUuid() == uuid) {
return t;
}
@@ -250,9 +231,17 @@ QSharedPointer<RealTerminal> TerminalStrip::realTerminalForUuid(const QUuid &uui
return QSharedPointer<RealTerminal>();
}
/**
* @brief TerminalStrip::realTerminals
* @return All real terminal owned by this strip
*/
QVector<QSharedPointer<RealTerminal>> TerminalStrip::realTerminals() const
{
return m_real_terminals;
QVector<QSharedPointer<RealTerminal>> vector_;
for (const auto &phy : qAsConst(m_physical_terminals)) {
vector_.append(phy->realTerminals());
}
return vector_;
}
@@ -291,7 +280,6 @@ bool TerminalStrip::setOrderTo(const QVector<QSharedPointer<PhysicalTerminal>> &
}
m_physical_terminals = new_order;
rebuildRealVector();
emit orderChanged();
return true;
}
@@ -337,7 +325,6 @@ bool TerminalStrip::groupTerminals(const QSharedPointer<PhysicalTerminal> &recei
}
}
rebuildRealVector();
emit orderChanged();
}
return true;
@@ -369,7 +356,6 @@ void TerminalStrip::unGroupTerminals(const QVector<QSharedPointer<RealTerminal>>
}
if (ungrouped) {
rebuildRealVector();
emit orderChanged();
}
}
@@ -390,7 +376,6 @@ bool TerminalStrip::setLevel(const QSharedPointer<RealTerminal> &real_terminal,
if (physical_terminal->realTerminals().size() > 1 &&
physical_terminal->setLevelOf(real_terminal, level))
{
rebuildRealVector();
emit orderChanged();
return true;
}
@@ -734,18 +719,20 @@ QSharedPointer<RealTerminal> TerminalStrip::nextTerminalInLevel(const QSharedPoi
QSharedPointer<RealTerminal> TerminalStrip::previousRealTerminal(const QSharedPointer<RealTerminal> &real_terminal) const
{
const auto index = m_real_terminals.indexOf(real_terminal);
const auto real_t_vector = realTerminals();
const auto index = real_t_vector.indexOf(real_terminal);
if (index) {
return m_real_terminals.at(index-1);
return real_t_vector.at(index-1);
}
return QSharedPointer<RealTerminal>();
}
QSharedPointer<RealTerminal> TerminalStrip::nextRealTerminal(const QSharedPointer<RealTerminal> &real_terminal) const
{
const auto index = m_real_terminals.indexOf(real_terminal);
if (index != m_real_terminals.size()-1) {
return m_real_terminals.at(index+1);
const auto real_t_vector = realTerminals();
const auto index = real_t_vector.indexOf(real_terminal);
if (index != real_t_vector.size()-1) {
return real_t_vector.at(index+1);
}
return QSharedPointer<RealTerminal>();
}
@@ -824,7 +811,6 @@ bool TerminalStrip::fromXml(QDomElement &xml_element)
auto raw_ptr = new PhysicalTerminal(this, real_t_vector);
m_physical_terminals.append(raw_ptr->sharedRef());
m_real_terminals.append(real_t_vector);
}
}
@@ -841,16 +827,3 @@ bool TerminalStrip::fromXml(QDomElement &xml_element)
return true;
}
/**
* @brief TerminalStrip::rebuildRealVector
* Rebuild the real terminal vector
* to be ordered
*/
void TerminalStrip::rebuildRealVector()
{
m_real_terminals.clear();
for (const auto &phy : qAsConst(m_physical_terminals)) {
m_real_terminals.append(phy->realTerminals());
}
}

View File

@@ -85,7 +85,6 @@ class TerminalStrip : public QObject
QSharedPointer<PhysicalTerminal> physicalTerminal(int index) const;
QSharedPointer<PhysicalTerminal> physicalTerminal (const QSharedPointer<RealTerminal> &real_terminal) const;
QVector<QSharedPointer<PhysicalTerminal>> physicalTerminal() const;
QSharedPointer<RealTerminal> realTerminal(Element *terminal) const;
QSharedPointer<RealTerminal> realTerminalForUuid(const QUuid &uuid) const;
QVector<QSharedPointer<RealTerminal>> realTerminals() const;
@@ -112,13 +111,9 @@ class TerminalStrip : public QObject
QDomElement toXml(QDomDocument &parent_document);
bool fromXml(QDomElement &xml_element);
private:
void rebuildRealVector();
private:
TerminalStripData m_data;
QPointer<QETProject> m_project;
QVector<QSharedPointer<RealTerminal>> m_real_terminals;
QVector<QSharedPointer<PhysicalTerminal>> m_physical_terminals;
QVector<QSharedPointer<TerminalStripBridge>> m_bridge;
};