diff --git a/sources/TerminalStrip/ui/terminalstripeditor.cpp b/sources/TerminalStrip/ui/terminalstripeditor.cpp index fd9410a58..4706dc227 100644 --- a/sources/TerminalStrip/ui/terminalstripeditor.cpp +++ b/sources/TerminalStrip/ui/terminalstripeditor.cpp @@ -71,18 +71,22 @@ TerminalStripEditor::TerminalStripEditor(QETProject *project, QWidget *parent) : //Go the diagram of double clicked terminal connect(ui->m_table_widget, &QAbstractItemView::doubleClicked, this, [=](const QModelIndex &index) { - Element *elmt = nullptr; - if (this->m_model->isXrefCell(index, &elmt)) + if (m_model->columnTypeForIndex(index) == TerminalStripModel::XRef) { - auto diagram = elmt->diagram(); - if (diagram) + auto rtd = m_model->realTerminalDataForIndex(index); + if (rtd.element_) { - diagram->showMe(); - if (diagram->views().size()) + auto elmt = rtd.element_; + auto diagram = elmt->diagram(); + if (diagram) { - auto fit_view = elmt->sceneBoundingRect(); - fit_view.adjust(-200,-200,200,200); - diagram->views().at(0)->fitInView(fit_view, Qt::KeepAspectRatioByExpanding); + diagram->showMe(); + if (diagram->views().size()) + { + auto fit_view = elmt->sceneBoundingRect(); + fit_view.adjust(-200,-200,200,200); + diagram->views().at(0)->fitInView(fit_view, Qt::KeepAspectRatioByExpanding); + } } } } diff --git a/sources/TerminalStrip/ui/terminalstripmodel.cpp b/sources/TerminalStrip/ui/terminalstripmodel.cpp index 5bed80079..c5d48d352 100644 --- a/sources/TerminalStrip/ui/terminalstripmodel.cpp +++ b/sources/TerminalStrip/ui/terminalstripmodel.cpp @@ -327,31 +327,6 @@ QVector> TerminalStripModel::modifiedR return returned_vector; } -/** - * @brief TerminalStripModel::isXrefCell - * @param index - * @param elmt : Pointer of a pointer element - * @return true if the index is the Xref cell, if true the pointer \p element - * will be set to the element associated to the cell. - */ -bool TerminalStripModel::isXrefCell(const QModelIndex &index, Element **element) -{ - if (index.model() == this - && index.isValid() - && index.column() == XREF_CELL) - { - if (index.row() < rowCount()) - { - if (auto data = dataAtRow(index.row()) ; data.element_) { - *element = data.element_.data(); - } - } - return true; - } - - return false; -} - /** * @brief TerminalStripModel::levelCellCount * Check for each index of @a index_list if the cell represented by the index @@ -448,6 +423,20 @@ QVector TerminalStripModel::realTerminalDataForIndex(QModelInd return vector_; } +/** + * @brief TerminalStripModel::realTerminalDataForIndex + * @param index + * @return RealTerminalData at index @a index or null RealTerminalData if invalid + */ +RealTerminalData TerminalStripModel::realTerminalDataForIndex(const QModelIndex &index) const +{ + if (index.isValid()) { + return realDataAtIndex(index.row()); + } else { + return RealTerminalData(); + } +} + void TerminalStripModel::fillPhysicalTerminalData() { //Get all physical terminal diff --git a/sources/TerminalStrip/ui/terminalstripmodel.h b/sources/TerminalStrip/ui/terminalstripmodel.h index 4eb1d1f0c..2b2804909 100644 --- a/sources/TerminalStrip/ui/terminalstripmodel.h +++ b/sources/TerminalStrip/ui/terminalstripmodel.h @@ -1,4 +1,4 @@ -/* +/* Copyright 2006-2021 The QElectroTech Team This file is part of QElectroTech. @@ -64,10 +64,10 @@ class TerminalStripModel : public QAbstractTableModel virtual Qt::ItemFlags flags (const QModelIndex &index) const override; QVector> modifiedRealTerminalData() const; - bool isXrefCell(const QModelIndex &index, Element **element = nullptr); QVector levelCellCount(const QModelIndexList &index_list) const; QVector physicalTerminalDataForIndex(QModelIndexList index_list) const; QVector realTerminalDataForIndex(QModelIndexList index_list) const; + RealTerminalData realTerminalDataForIndex(const QModelIndex &index) const; private: void fillPhysicalTerminalData();