mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-17 12:40:35 +01:00
Level terminals can be disassembled
This commit is contained in:
@@ -276,7 +276,7 @@ bool TerminalStripModel::isXrefCell(const QModelIndex &index, Element **element)
|
||||
* @return A vector of PhysicalTerminalData represented by index_list.
|
||||
* If sereval index point to the same terminal the vector have only one PhysicalTerminalData
|
||||
*/
|
||||
QVector<PhysicalTerminalData> TerminalStripModel::terminalsForIndex(QModelIndexList index_list) const
|
||||
QVector<PhysicalTerminalData> TerminalStripModel::physicalTerminalDataForIndex(QModelIndexList index_list) const
|
||||
{
|
||||
QVector<PhysicalTerminalData> vector_;
|
||||
if (index_list.isEmpty()) {
|
||||
@@ -299,6 +299,36 @@ QVector<PhysicalTerminalData> TerminalStripModel::terminalsForIndex(QModelIndexL
|
||||
return vector_;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TerminalStripModel::realTerminalDataForIndex
|
||||
* @param index_list
|
||||
* @return
|
||||
*/
|
||||
QVector<RealTerminalData> TerminalStripModel::realTerminalDataForIndex(QModelIndexList index_list) const
|
||||
{
|
||||
QVector<RealTerminalData> vector_;
|
||||
if (index_list.isEmpty()) {
|
||||
return vector_;
|
||||
}
|
||||
|
||||
QSet<int> set_;
|
||||
//We use a QSet to avoid insert several time the same terminal.
|
||||
for (auto index : index_list) {
|
||||
if (index.isValid()) {
|
||||
set_.insert(index.row());
|
||||
}
|
||||
}
|
||||
|
||||
for (auto i : set_) {
|
||||
const auto rtd_ = realDataAtIndex(i);
|
||||
if (rtd_.level_ > -1) {
|
||||
vector_.append(realDataAtIndex(i));
|
||||
}
|
||||
}
|
||||
|
||||
return vector_;
|
||||
}
|
||||
|
||||
void TerminalStripModel::fillRealTerminalData()
|
||||
{
|
||||
//Get all physical terminal
|
||||
@@ -406,6 +436,32 @@ PhysicalTerminalData TerminalStripModel::physicalDataAtIndex(int index) const
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TerminalStripModel::realDataAtIndex
|
||||
* @param index
|
||||
* @return the realTerminalData at index \p index.
|
||||
*/
|
||||
RealTerminalData TerminalStripModel::realDataAtIndex(int index) const
|
||||
{
|
||||
if (m_physical_terminal_data.isEmpty()) {
|
||||
return RealTerminalData();
|
||||
}
|
||||
|
||||
int current_checked_index = -1;
|
||||
|
||||
for (const auto & ptd_ : qAsConst(m_physical_terminal_data))
|
||||
{
|
||||
for (const auto & rtd_ : qAsConst(ptd_.real_terminals_vector)) {
|
||||
++current_checked_index;
|
||||
if (current_checked_index == index) {
|
||||
return rtd_;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return RealTerminalData();
|
||||
}
|
||||
|
||||
/***********************************************************
|
||||
* Alittle delegate for add a combobox to edit type
|
||||
* and a spinbox to edit the level of a terminal
|
||||
|
||||
Reference in New Issue
Block a user