Revamp PhysicalTerminal class

This commit is contained in:
joshua
2021-12-23 22:17:37 +01:00
parent a2e5989f3b
commit 2ea9f8a2c6
9 changed files with 303 additions and 315 deletions

View File

@@ -34,6 +34,7 @@
#include "../UndoCommand/groupterminalscommand.h"
#include "../UndoCommand/changeterminallevel.h"
#include "../UndoCommand/bridgeterminalscommand.h"
#include "../../utils/qetutils.h"
#include <QTreeWidgetItem>
@@ -231,10 +232,10 @@ QTreeWidgetItem* TerminalStripEditor::addTerminalStrip(TerminalStrip *terminal_s
//Add child terminal of the strip
for (auto i=0 ; i<terminal_strip->physicalTerminalCount() ; ++i)
{
auto ptd = terminal_strip->physicalTerminalData(i);
if (ptd.realTerminalCount())
auto phy_t = terminal_strip->physicalTerminal(i).toStrongRef();
if (phy_t->realTerminalCount())
{
const auto real_t = ptd.realTerminals().at(0).toStrongRef();
const auto real_t = phy_t->realTerminals().at(0).toStrongRef();
auto terminal_item = new QTreeWidgetItem(strip_item, QStringList(real_t->label()), TerminalStripTreeWidget::Terminal);
terminal_item->setData(0, TerminalStripTreeWidget::UUID_USER_ROLE, real_t->elementUuid());
terminal_item->setIcon(0, QET::Icons::ElementTerminal);
@@ -352,7 +353,7 @@ void TerminalStripEditor::spanMultiLevelTerminals()
auto current_row = 0;
for (auto i = 0 ; i < m_current_strip->physicalTerminalCount() ; ++i)
{
const auto level_count = m_current_strip->physicalTerminalData(i).realTerminalCount();
const auto level_count = m_current_strip->physicalTerminal(i).toStrongRef()->realTerminalCount();
if (level_count > 1) {
ui->m_table_widget->setSpan(current_row, 0, level_count, 1);
}
@@ -677,13 +678,15 @@ void TerminalStripEditor::on_m_group_terminals_pb_clicked()
auto mrtd_vector = m_model->modelRealTerminalDataForIndex(ui->m_table_widget->selectionModel()->selectedIndexes());
if (mrtd_vector.size() >= 2)
{
auto receiver_ = m_current_strip->physicalTerminalData(mrtd_vector.takeFirst().real_terminal);
auto receiver_ = m_current_strip->physicalTerminal(mrtd_vector.takeFirst().real_terminal);
QVector<QWeakPointer<RealTerminal>> vector_;
for (const auto & mrtd : mrtd_vector) {
vector_.append(mrtd.real_terminal);
}
m_project->undoStack()->push(new GroupTerminalsCommand(m_current_strip, receiver_, vector_));
m_project->undoStack()->push(new GroupTerminalsCommand(m_current_strip,
receiver_,
QETUtils::weakVectorToShared(vector_)));
}
}
}
@@ -701,7 +704,8 @@ void TerminalStripEditor::on_m_ungroup_pb_clicked()
for (const auto &mrtd : mrtd_vector) {
vector_.append(mrtd.real_terminal);
}
m_project->undoStack()->push(new UnGroupTerminalsCommand(m_current_strip, vector_));
m_project->undoStack()->push(new UnGroupTerminalsCommand(m_current_strip,
QETUtils::weakVectorToShared(vector_)));
}
}

View File

@@ -481,13 +481,14 @@ void TerminalStripModel::fillPhysicalTerminalData()
//Get all physical terminal
if (m_terminal_strip)
{
for (const auto &ptd : m_terminal_strip->physicalTerminalData())
for (const auto &t_ : m_terminal_strip->physicalTerminal())
{
const auto phy_t = t_.toStrongRef();
modelPhysicalTerminalData mptd;
mptd.pos_ = ptd.pos();
mptd.uuid_ = ptd.uuid();
mptd.pos_ = phy_t->pos();
mptd.uuid_ = phy_t->uuid();
for (const auto &real_t : ptd.realTerminals())
for (const auto &real_t : phy_t->realTerminals())
{
if (!real_t.isNull())
{
@@ -673,9 +674,9 @@ QPixmap TerminalStripModel::bridgePixmapFor(const QModelIndex &index) const
//Check if we need to draw a none bridge pixmap
//Check previous
auto physical_data = m_terminal_strip->physicalTerminalData(mrtd.real_terminal);
auto phy_t = m_terminal_strip->physicalTerminal(mrtd.real_terminal).toStrongRef();
auto current_real_terminal = mrtd;
auto current_phy_uuid = physical_data.uuid();
auto current_phy_uuid = phy_t->uuid();
bool already_jumped_to_previous = false;
modelRealTerminalData previous_data;
@@ -687,7 +688,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->physicalTerminalData(current_real_terminal.real_terminal).uuid())
if (current_phy_uuid == m_terminal_strip->physicalTerminal(current_real_terminal.real_terminal).toStrongRef()->uuid())
{
if (current_real_terminal.bridged_ &&
current_real_terminal.level_ == level_column) {
@@ -699,7 +700,7 @@ QPixmap TerminalStripModel::bridgePixmapFor(const QModelIndex &index) const
break;
} else {
already_jumped_to_previous = true;
current_phy_uuid = m_terminal_strip->physicalTerminalData(current_real_terminal.real_terminal).uuid();
current_phy_uuid = m_terminal_strip->physicalTerminal(current_real_terminal.real_terminal).toStrongRef()->uuid();
if (current_real_terminal.bridged_ &&
current_real_terminal.level_ == level_column) {
previous_data = current_real_terminal;
@@ -710,7 +711,7 @@ QPixmap TerminalStripModel::bridgePixmapFor(const QModelIndex &index) const
//Check next
current_real_terminal = mrtd;
current_phy_uuid = physical_data.uuid();
current_phy_uuid = phy_t->uuid();
bool already_jumped_to_next = false;
modelRealTerminalData next_data;
@@ -722,7 +723,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->physicalTerminalData(current_real_terminal.real_terminal).uuid())
if (current_phy_uuid == m_terminal_strip->physicalTerminal(current_real_terminal.real_terminal).toStrongRef()->uuid())
{
if (current_real_terminal.bridged_ &&
current_real_terminal.level_ == level_column) {
@@ -734,7 +735,7 @@ QPixmap TerminalStripModel::bridgePixmapFor(const QModelIndex &index) const
break;
} else {
already_jumped_to_next = true;
current_phy_uuid = m_terminal_strip->physicalTerminalData(current_real_terminal.real_terminal).uuid();
current_phy_uuid = m_terminal_strip->physicalTerminal(current_real_terminal.real_terminal).toStrongRef()->uuid();
if (current_real_terminal.bridged_ &&
current_real_terminal.level_ == level_column) {
next_data = current_real_terminal;