mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-01-08 14:49:58 +01:00
Revamp PhysicalTerminal class
This commit is contained in:
@@ -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_)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user