Revamp RealTerminal class...... again

I don't know what I want, I'm crazy :D.
Next commit will also revamp PhysicalTerminal
and TerminalStripBridge class, code will be more clear and
easy to understand.
This commit is contained in:
joshua
2021-12-23 18:37:17 +01:00
parent 02b385e0b7
commit a2e5989f3b
7 changed files with 342 additions and 387 deletions

View File

@@ -234,13 +234,13 @@ QTreeWidgetItem* TerminalStripEditor::addTerminalStrip(TerminalStrip *terminal_s
auto ptd = terminal_strip->physicalTerminalData(i);
if (ptd.realTerminalCount())
{
const auto real_t = ptd.realTerminalDatas().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());
const auto real_t = ptd.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);
if (real_t.element()) {
m_uuid_terminal_H.insert(real_t.elementUuid(), qgraphicsitem_cast<TerminalElement *>(real_t.element()));
if (real_t->element()) {
m_uuid_terminal_H.insert(real_t->elementUuid(), qgraphicsitem_cast<TerminalElement *>(real_t->element()));
}
}
}
@@ -644,7 +644,7 @@ void TerminalStripEditor::on_m_dialog_button_box_clicked(QAbstractButton *button
if (element->elementData() != current_data)
m_project->undoStack()->push(new ChangeElementDataCommand(element, current_data));
if (data_.level_ != m_current_strip->realTerminalDataFor(data_.real_terminal).level())
if (data_.level_ != data_.real_terminal.toStrongRef()->level())
m_project->undoStack()->push(new ChangeTerminalLevel(m_current_strip, data_.real_terminal, data_.level_));
}
}

View File

@@ -487,11 +487,11 @@ void TerminalStripModel::fillPhysicalTerminalData()
mptd.pos_ = ptd.pos();
mptd.uuid_ = ptd.uuid();
for (const auto &rtd : ptd.realTerminalDatas())
for (const auto &real_t : ptd.realTerminals())
{
if (!rtd.isNull())
if (!real_t.isNull())
{
mptd.real_data.append(modelRealData(rtd));
mptd.real_data.append(modelRealData(real_t));
}
}
@@ -644,8 +644,15 @@ QPixmap TerminalStripModel::bridgePixmapFor(const QModelIndex &index) const
auto bridge_ = m_terminal_strip->bridgeFor(mrtd.real_terminal);
if (bridge_)
{
auto previous_bridge = m_terminal_strip->previousTerminalInLevel(mrtd.real_terminal).bridge();
auto next_bridge = m_terminal_strip->nextTerminalInLevel(mrtd.real_terminal).bridge();
const auto previous_t = m_terminal_strip->previousTerminalInLevel(mrtd.real_terminal).toStrongRef();
QSharedPointer<TerminalStripBridge> previous_bridge;
if (previous_t)
previous_bridge = previous_t->bridge();
const auto next_t = m_terminal_strip->nextTerminalInLevel(mrtd.real_terminal).toStrongRef();
QSharedPointer<TerminalStripBridge> next_bridge;
if (next_t)
next_bridge = next_t->bridge();
auto color_ = bridge_->color_;
auto pixmap_ = m_bridges_pixmaps.value(color_);
@@ -747,23 +754,24 @@ QPixmap TerminalStripModel::bridgePixmapFor(const QModelIndex &index) const
return QPixmap();
}
modelRealTerminalData TerminalStripModel::modelRealData(const RealTerminalData &data)
modelRealTerminalData TerminalStripModel::modelRealData(const QWeakPointer<RealTerminal> &real_terminal)
{
modelRealTerminalData mrtd;
if (!data.isNull())
const auto real_t = real_terminal.toStrongRef();
if (!real_terminal.isNull())
{
mrtd.level_ = data.level();
mrtd.label_ = data.label();
mrtd.Xref_ = data.Xref();
mrtd.cable_ = data.cable();
mrtd.cable_wire = data.cableWire();
mrtd.conductor_ = data.conductor();
mrtd.led_ = data.isLed();
mrtd.type_ = data.type();
mrtd.function_ = data.function();
mrtd.element_ = data.element();
mrtd.real_terminal = data.realTerminal();
mrtd.bridged_ = data.isBridged();
mrtd.level_ = real_t->level();
mrtd.label_ = real_t->label();
mrtd.Xref_ = real_t->Xref();
mrtd.cable_ = real_t->cable();
mrtd.cable_wire = real_t->cableWire();
mrtd.conductor_ = real_t->conductor();
mrtd.led_ = real_t->isLed();
mrtd.type_ = real_t->type();
mrtd.function_ = real_t->function();
mrtd.element_ = real_t->element();
mrtd.real_terminal = real_terminal;
mrtd.bridged_ = real_t->isBridged();
}
return mrtd;

View File

@@ -124,7 +124,7 @@ class TerminalStripModel : public QAbstractTableModel
modelRealTerminalData realDataAtIndex(int index) const;
QPixmap bridgePixmapFor(const QModelIndex &index) const;
static modelRealTerminalData modelRealData(const RealTerminalData &data);
static modelRealTerminalData modelRealData(const QWeakPointer<RealTerminal> &real_terminal);
private:
QPointer<TerminalStrip> m_terminal_strip;