mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-03-19 18:09:59 +01:00
Revamp terminalStrip feature code
Move RealTerminal class in a new file Move PhysicalTerminal class in a new file. Remove the use of QWeakPointer and use instead QSharedPointer in a big part of the revamp.
This commit is contained in:
@@ -35,6 +35,8 @@
|
||||
#include "../UndoCommand/changeterminallevel.h"
|
||||
#include "../UndoCommand/bridgeterminalscommand.h"
|
||||
#include "../../utils/qetutils.h"
|
||||
#include "../physicalterminal.h"
|
||||
#include "../realterminal.h"
|
||||
|
||||
#include <QTreeWidgetItem>
|
||||
|
||||
@@ -232,10 +234,10 @@ QTreeWidgetItem* TerminalStripEditor::addTerminalStrip(TerminalStrip *terminal_s
|
||||
//Add child terminal of the strip
|
||||
for (auto i=0 ; i<terminal_strip->physicalTerminalCount() ; ++i)
|
||||
{
|
||||
auto phy_t = terminal_strip->physicalTerminal(i).toStrongRef();
|
||||
auto phy_t = terminal_strip->physicalTerminal(i);
|
||||
if (phy_t->realTerminalCount())
|
||||
{
|
||||
const auto real_t = phy_t->realTerminals().at(0).toStrongRef();
|
||||
const auto real_t = phy_t->realTerminals().at(0);
|
||||
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);
|
||||
@@ -353,7 +355,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->physicalTerminal(i).toStrongRef()->realTerminalCount();
|
||||
const auto level_count = m_current_strip->physicalTerminal(i)->realTerminalCount();
|
||||
if (level_count > 1) {
|
||||
ui->m_table_widget->setSpan(current_row, 0, level_count, 1);
|
||||
}
|
||||
@@ -434,13 +436,13 @@ void TerminalStripEditor::selectionChanged()
|
||||
{
|
||||
//Select only terminals of corresponding level cell selection
|
||||
QVector<modelRealTerminalData> model_real_terminal_level_vector;
|
||||
QVector<QWeakPointer<RealTerminal>> real_terminal_in_level_vector;
|
||||
QVector<QSharedPointer<RealTerminal>> real_terminal_in_level_vector;
|
||||
for (const auto &mrtd : model_real_terminal_vector)
|
||||
{
|
||||
if (mrtd.level_ == level_)
|
||||
{
|
||||
model_real_terminal_level_vector.append(mrtd);
|
||||
real_terminal_in_level_vector.append(mrtd.real_terminal);
|
||||
real_terminal_in_level_vector.append(mrtd.real_terminal.toStrongRef());
|
||||
}
|
||||
}
|
||||
enable_bridge = m_current_strip->isBridgeable(real_terminal_in_level_vector);
|
||||
@@ -829,11 +831,11 @@ void TerminalStripEditor::on_m_bridge_terminals_pb_clicked()
|
||||
const auto index_list = ui->m_table_widget->selectionModel()->selectedIndexes();
|
||||
const auto mrtd_vector = m_model->modelRealTerminalDataForIndex(index_list);
|
||||
|
||||
QVector <QWeakPointer<RealTerminal>> match_vector;
|
||||
QVector <QSharedPointer<RealTerminal>> match_vector;
|
||||
for (const auto &mrtd : mrtd_vector)
|
||||
{
|
||||
if (mrtd.level_ == level_) {
|
||||
match_vector.append(mrtd.real_terminal);
|
||||
match_vector.append(mrtd.real_terminal.toStrongRef());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -862,12 +864,12 @@ void TerminalStripEditor::on_m_unbridge_terminals_pb_clicked()
|
||||
|
||||
const auto index_list = ui->m_table_widget->selectionModel()->selectedIndexes();
|
||||
const auto mrtd_vector = m_model->modelRealTerminalDataForIndex(index_list);
|
||||
QVector<QWeakPointer<RealTerminal>> match_vector;
|
||||
QVector<QSharedPointer<RealTerminal>> match_vector;
|
||||
for (const auto &mrtd : mrtd_vector)
|
||||
{
|
||||
if (mrtd.level_ == level_
|
||||
&& mrtd.bridged_) {
|
||||
match_vector.append(mrtd.real_terminal);
|
||||
match_vector.append(mrtd.real_terminal.toStrongRef());
|
||||
}
|
||||
}
|
||||
m_project->undoStack()->push(new UnBridgeTerminalsCommand(m_current_strip, match_vector));
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
#include "terminalstripmodel.h"
|
||||
#include "../terminalstrip.h"
|
||||
#include "../../qetgraphicsitem/element.h"
|
||||
#include "../physicalterminal.h"
|
||||
#include "../realterminal.h"
|
||||
#include <QDebug>
|
||||
#include <QBrush>
|
||||
#include <QVector>
|
||||
@@ -481,9 +483,8 @@ void TerminalStripModel::fillPhysicalTerminalData()
|
||||
//Get all physical terminal
|
||||
if (m_terminal_strip)
|
||||
{
|
||||
for (const auto &t_ : m_terminal_strip->physicalTerminal())
|
||||
for (const auto &phy_t : m_terminal_strip->physicalTerminal())
|
||||
{
|
||||
const auto phy_t = t_.toStrongRef();
|
||||
modelPhysicalTerminalData mptd;
|
||||
mptd.pos_ = phy_t->pos();
|
||||
mptd.uuid_ = phy_t->uuid();
|
||||
@@ -642,15 +643,15 @@ QPixmap TerminalStripModel::bridgePixmapFor(const QModelIndex &index) const
|
||||
{
|
||||
if (mrtd.bridged_)
|
||||
{
|
||||
auto bridge_ = m_terminal_strip->bridgeFor(mrtd.real_terminal);
|
||||
auto bridge_ = m_terminal_strip->isBridged(mrtd.real_terminal);
|
||||
if (bridge_)
|
||||
{
|
||||
const auto previous_t = m_terminal_strip->previousTerminalInLevel(mrtd.real_terminal).toStrongRef();
|
||||
const auto previous_t = m_terminal_strip->previousTerminalInLevel(mrtd.real_terminal);
|
||||
QSharedPointer<TerminalStripBridge> previous_bridge;
|
||||
if (previous_t)
|
||||
previous_bridge = previous_t->bridge();
|
||||
|
||||
const auto next_t = m_terminal_strip->nextTerminalInLevel(mrtd.real_terminal).toStrongRef();
|
||||
const auto next_t = m_terminal_strip->nextTerminalInLevel(mrtd.real_terminal);
|
||||
QSharedPointer<TerminalStripBridge> next_bridge;
|
||||
if (next_t)
|
||||
next_bridge = next_t->bridge();
|
||||
@@ -674,7 +675,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).toStrongRef();
|
||||
auto phy_t = m_terminal_strip->physicalTerminal(mrtd.real_terminal);
|
||||
auto current_real_terminal = mrtd;
|
||||
auto current_phy_uuid = phy_t->uuid();
|
||||
bool already_jumped_to_previous = false;
|
||||
@@ -688,7 +689,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).toStrongRef()->uuid())
|
||||
if (current_phy_uuid == m_terminal_strip->physicalTerminal(current_real_terminal.real_terminal)->uuid())
|
||||
{
|
||||
if (current_real_terminal.bridged_ &&
|
||||
current_real_terminal.level_ == level_column) {
|
||||
@@ -700,7 +701,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).toStrongRef()->uuid();
|
||||
current_phy_uuid = m_terminal_strip->physicalTerminal(current_real_terminal.real_terminal)->uuid();
|
||||
if (current_real_terminal.bridged_ &&
|
||||
current_real_terminal.level_ == level_column) {
|
||||
previous_data = current_real_terminal;
|
||||
@@ -723,7 +724,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).toStrongRef()->uuid())
|
||||
if (current_phy_uuid == m_terminal_strip->physicalTerminal(current_real_terminal.real_terminal)->uuid())
|
||||
{
|
||||
if (current_real_terminal.bridged_ &&
|
||||
current_real_terminal.level_ == level_column) {
|
||||
@@ -735,7 +736,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).toStrongRef()->uuid();
|
||||
current_phy_uuid = m_terminal_strip->physicalTerminal(current_real_terminal.real_terminal)->uuid();
|
||||
if (current_real_terminal.bridged_ &&
|
||||
current_real_terminal.level_ == level_column) {
|
||||
next_data = current_real_terminal;
|
||||
@@ -744,8 +745,8 @@ QPixmap TerminalStripModel::bridgePixmapFor(const QModelIndex &index) const
|
||||
}
|
||||
} while(true);
|
||||
|
||||
auto previous_bridge = m_terminal_strip->bridgeFor(previous_data.real_terminal);
|
||||
if (previous_bridge == m_terminal_strip->bridgeFor(next_data.real_terminal))
|
||||
auto previous_bridge = m_terminal_strip->isBridged(previous_data.real_terminal);
|
||||
if (previous_bridge == m_terminal_strip->isBridged(next_data.real_terminal))
|
||||
{
|
||||
if (previous_bridge) {
|
||||
return m_bridges_pixmaps.value(previous_bridge->color_).none_;
|
||||
|
||||
Reference in New Issue
Block a user