diff --git a/sources/TerminalStrip/UndoCommand/groupterminalscommand.cpp b/sources/TerminalStrip/UndoCommand/groupterminalscommand.cpp index f93176ea3..611ea2a8e 100644 --- a/sources/TerminalStrip/UndoCommand/groupterminalscommand.cpp +++ b/sources/TerminalStrip/UndoCommand/groupterminalscommand.cpp @@ -17,6 +17,7 @@ */ #include "groupterminalscommand.h" #include "../physicalterminal.h" +#include "../realterminal.h" /** * @brief GroupTerminalsCommand::GroupTerminalsCommand @@ -87,8 +88,7 @@ void UnGroupTerminalsCommand::setUp(const QVector> { for (const auto &rt_ : to_ungroup) { - auto phy_t = m_terminal_strip->physicalTerminal(rt_); - if (phy_t) + if (auto phy_t = rt_->physicalTerminal()) { //Physical have only one real terminal, no need to ungroup it if (phy_t->realTerminalCount() <= 1) { diff --git a/sources/TerminalStrip/realterminal.cpp b/sources/TerminalStrip/realterminal.cpp index 945fefc51..b2774cea0 100644 --- a/sources/TerminalStrip/realterminal.cpp +++ b/sources/TerminalStrip/realterminal.cpp @@ -97,7 +97,7 @@ void RealTerminal::setPhysicalTerminal(const QSharedPointer &p * @brief parentStrip * @return parent terminal strip or nullptr */ -TerminalStrip *RealTerminal::parentStrip() const { +TerminalStrip *RealTerminal::parentStrip() const noexcept { if (m_physical_terminal) { return m_physical_terminal->terminalStrip(); } else { @@ -110,7 +110,7 @@ TerminalStrip *RealTerminal::parentStrip() const { * @return The parent physical terminal of this terminal. * The returned QSharedPointer can be null */ -QSharedPointer RealTerminal::physicalTerminal() const { +QSharedPointer RealTerminal::physicalTerminal() const noexcept{ return m_physical_terminal; } diff --git a/sources/TerminalStrip/realterminal.h b/sources/TerminalStrip/realterminal.h index 84517368a..7b13345f3 100644 --- a/sources/TerminalStrip/realterminal.h +++ b/sources/TerminalStrip/realterminal.h @@ -55,8 +55,8 @@ class RealTerminal public: ~RealTerminal(); - TerminalStrip *parentStrip() const; - QSharedPointer physicalTerminal() const; + TerminalStrip *parentStrip() const noexcept; + QSharedPointer physicalTerminal() const noexcept; QDomElement toXml(QDomDocument &parent_document) const; diff --git a/sources/TerminalStrip/terminalstrip.cpp b/sources/TerminalStrip/terminalstrip.cpp index 41ef4ba5d..b66daa0eb 100644 --- a/sources/TerminalStrip/terminalstrip.cpp +++ b/sources/TerminalStrip/terminalstrip.cpp @@ -277,27 +277,6 @@ QSharedPointer TerminalStrip::physicalTerminal(int index) cons } } -/** - * @brief TerminalStrip::physicalTerminalData - * @param real_terminal - * @return the parent PhysicalTerminal of \p real_terminal. - * the PhysicalTerminal can be null if \p real_terminal don't belong to this strip - */ -QSharedPointer TerminalStrip::physicalTerminal (const QSharedPointer &real_terminal) const -{ - if (real_terminal.isNull()) { - return QSharedPointer(); - } - - for (auto &physical : qAsConst(m_physical_terminals)) { - if (physical->realTerminals().contains(real_terminal)) { - return physical; - } - } - - return QSharedPointer(); -} - /** * @brief TerminalStrip::physicalTerminal * @param uuid @@ -419,9 +398,9 @@ bool TerminalStrip::groupTerminals(const QSharedPointer &recei continue; } - auto physical_ = physicalTerminal(added_terminal); - physical_->removeTerminal(added_terminal); - + if (auto phy_t = added_terminal->physicalTerminal()) { + phy_t->removeTerminal(added_terminal); + } receiver_terminal->addTerminal(added_terminal); have_grouped = true; } @@ -452,7 +431,7 @@ void TerminalStrip::unGroupTerminals(const QVector> { if (real_terminal) { - if (auto physical_terminal = physicalTerminal(real_terminal)) //Get the physical terminal + if (auto physical_terminal = real_terminal->physicalTerminal()) //Get the physical terminal { if (physical_terminal->realTerminals().size() > 1) //Check if physical have more than one real terminal { @@ -480,8 +459,7 @@ bool TerminalStrip::setLevel(const QSharedPointer &real_terminal, { if (real_terminal) { - auto physical_terminal = physicalTerminal(real_terminal); - if (physical_terminal) + if (auto physical_terminal = real_terminal->physicalTerminal()) { if (physical_terminal->realTerminals().size() > 1 && physical_terminal->setLevelOf(real_terminal, level)) @@ -520,7 +498,7 @@ bool TerminalStrip::isBridgeable(const QVector> &re const int level_ = first_real_terminal->level(); // Get the physical terminal and pos - auto first_physical_terminal = physicalTerminal(first_real_terminal); + auto first_physical_terminal = first_real_terminal->physicalTerminal(); QVector physical_vector{first_physical_terminal}; QVector pos_vector{m_physical_terminals.indexOf(first_physical_terminal)}; @@ -543,7 +521,7 @@ bool TerminalStrip::isBridgeable(const QVector> &re } // Not to the same physical terminal of a previous checked real terminal - const auto physical_terminal = physicalTerminal(real_terminal); + const auto physical_terminal = real_terminal->physicalTerminal(); if (physical_vector.contains(physical_terminal)) { return false; } else { @@ -691,7 +669,7 @@ bool TerminalStrip::canUnBridge(const QVector > &re if (compar_bridge != isBridged(real_t)) { return false; } else { - sorted_terminal.insert(m_physical_terminals.indexOf(physicalTerminal(real_t)), + sorted_terminal.insert(m_physical_terminals.indexOf(real_t->physicalTerminal()), real_t); } } @@ -785,7 +763,7 @@ QSharedPointer TerminalStrip::bridgeFor(const QVector TerminalStrip::previousTerminalInLevel(const QSharedPointer &real_terminal) const { - const auto phy_t = physicalTerminal(real_terminal); + const auto phy_t = real_terminal->physicalTerminal(); if (real_terminal && phy_t) { const auto level_ = phy_t->levelOf(real_terminal); @@ -810,7 +788,7 @@ QSharedPointer TerminalStrip::previousTerminalInLevel(const QShare */ QSharedPointer TerminalStrip::nextTerminalInLevel(const QSharedPointer &real_terminal) const { - const auto phy_t = physicalTerminal(real_terminal); + const auto phy_t = real_terminal->physicalTerminal(); if (real_terminal && phy_t) { const auto level_ = phy_t->levelOf(real_terminal); diff --git a/sources/TerminalStrip/terminalstrip.h b/sources/TerminalStrip/terminalstrip.h index e4b5df484..da4765a22 100644 --- a/sources/TerminalStrip/terminalstrip.h +++ b/sources/TerminalStrip/terminalstrip.h @@ -87,7 +87,6 @@ class TerminalStrip : public QObject int pos(const QSharedPointer &terminal) const; int physicalTerminalCount() const; QSharedPointer physicalTerminal(int index) const; - QSharedPointer physicalTerminal(const QSharedPointer &real_terminal) const; QSharedPointer physicalTerminal(const QUuid &uuid) const; QVector> physicalTerminal() const; QSharedPointer realTerminalForUuid(const QUuid &uuid) const; diff --git a/sources/TerminalStrip/ui/terminalstripeditor.cpp b/sources/TerminalStrip/ui/terminalstripeditor.cpp index 4292d5625..b5bd0eb9e 100644 --- a/sources/TerminalStrip/ui/terminalstripeditor.cpp +++ b/sources/TerminalStrip/ui/terminalstripeditor.cpp @@ -717,7 +717,7 @@ void TerminalStripEditor::on_m_group_terminals_pb_clicked() if (mrtd_vector.size() >= 2) { //At this step get the first physical terminal as receiver - auto receiver_ = m_current_strip->physicalTerminal(mrtd_vector.first().real_terminal); + auto receiver_ = mrtd_vector.first().real_terminal.toStrongRef()->physicalTerminal(); QVector> vector_; int count_ = 0; @@ -728,11 +728,11 @@ void TerminalStripEditor::on_m_group_terminals_pb_clicked() //Get the better physical terminal as receiver //(physical terminal with the max of real terminal) - const auto current_physical = m_current_strip->physicalTerminal(real_t); + const auto current_physical = real_t->physicalTerminal(); int real_t_count = current_physical->realTerminalCount(); if (real_t_count > 1 && real_t_count > count_) { count_ = real_t_count; - receiver_ = m_current_strip->physicalTerminal(real_t); + receiver_ = real_t->physicalTerminal(); } } diff --git a/sources/TerminalStrip/ui/terminalstripmodel.cpp b/sources/TerminalStrip/ui/terminalstripmodel.cpp index f4f884466..4387b8a96 100644 --- a/sources/TerminalStrip/ui/terminalstripmodel.cpp +++ b/sources/TerminalStrip/ui/terminalstripmodel.cpp @@ -677,7 +677,7 @@ QPixmap TerminalStripModel::bridgePixmapFor(const QModelIndex &index) const //Check if we need to draw a none bridge pixmap //Check previous - auto phy_t = m_terminal_strip->physicalTerminal(mrtd.real_terminal); + auto phy_t = mrtd.real_terminal.toStrongRef()->physicalTerminal(); auto current_real_terminal = mrtd; auto current_phy_uuid = phy_t->uuid(); bool already_jumped_to_previous = false; @@ -691,7 +691,7 @@ QPixmap TerminalStripModel::bridgePixmapFor(const QModelIndex &index) const } //We are in the same physical terminal as previous loop - if (current_phy_uuid == m_terminal_strip->physicalTerminal(current_real_terminal.real_terminal)->uuid()) + if (current_phy_uuid == current_real_terminal.real_terminal.toStrongRef()->physicalTerminal()->uuid()) { if (current_real_terminal.bridged_ && current_real_terminal.level_ == level_column) { @@ -703,7 +703,7 @@ QPixmap TerminalStripModel::bridgePixmapFor(const QModelIndex &index) const break; } else { already_jumped_to_previous = true; - current_phy_uuid = m_terminal_strip->physicalTerminal(current_real_terminal.real_terminal)->uuid(); + current_phy_uuid = current_real_terminal.real_terminal.toStrongRef()->physicalTerminal()->uuid(); if (current_real_terminal.bridged_ && current_real_terminal.level_ == level_column) { previous_data = current_real_terminal; @@ -726,7 +726,7 @@ QPixmap TerminalStripModel::bridgePixmapFor(const QModelIndex &index) const } //We are in the same physical terminal as previous loop - if (current_phy_uuid == m_terminal_strip->physicalTerminal(current_real_terminal.real_terminal)->uuid()) + if (current_phy_uuid == current_real_terminal.real_terminal.toStrongRef()->physicalTerminal()->uuid()) { if (current_real_terminal.bridged_ && current_real_terminal.level_ == level_column) { @@ -738,7 +738,7 @@ QPixmap TerminalStripModel::bridgePixmapFor(const QModelIndex &index) const break; } else { already_jumped_to_next = true; - current_phy_uuid = m_terminal_strip->physicalTerminal(current_real_terminal.real_terminal)->uuid(); + current_phy_uuid = current_real_terminal.real_terminal.toStrongRef()->physicalTerminal()->uuid(); if (current_real_terminal.bridged_ && current_real_terminal.level_ == level_column) { next_data = current_real_terminal;