mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-17 12:40:35 +01:00
Display terminals owned by terminal strip in the tree view
This commit is contained in:
@@ -68,6 +68,32 @@ class RealTerminal
|
||||
return m_element.data();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief label
|
||||
* @return the label of this real terminal
|
||||
*/
|
||||
QString label() const {
|
||||
if (!m_element.isNull()) {
|
||||
return m_element->actualLabel();
|
||||
} else {
|
||||
return QStringLiteral("");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief elementUuid
|
||||
* @return if this real terminal is an element
|
||||
* in a folio, return the uuid of the element
|
||||
* else return a null uuid.
|
||||
*/
|
||||
QUuid elementUuid() const {
|
||||
if (!m_element.isNull()) {
|
||||
return m_element->uuid();
|
||||
} else {
|
||||
return QUuid();
|
||||
}
|
||||
}
|
||||
|
||||
private :
|
||||
QPointer<Element> m_element;
|
||||
QPointer<TerminalStrip> m_parent_terminal_strip;
|
||||
@@ -276,6 +302,36 @@ bool TerminalStrip::haveTerminal(Element *terminal) {
|
||||
return m_terminal_elements_vector.contains(terminal);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TerminalStrip::physicalTerminalCount
|
||||
* @return the number of physical terminal.
|
||||
* A physical terminal is the representation of a real electrical terminal.
|
||||
* Notice that a physical terminal can have level (like in real life)
|
||||
*/
|
||||
int TerminalStrip::physicalTerminalCount() const {
|
||||
return m_physical_terminals.size();
|
||||
}
|
||||
|
||||
TerminalStripIndex TerminalStrip::index(int index)
|
||||
{
|
||||
TerminalStripIndex tsi_;
|
||||
|
||||
if (index < 0 ||
|
||||
index >= m_physical_terminals.size()) {
|
||||
return tsi_;
|
||||
}
|
||||
|
||||
auto phy_term = m_physical_terminals.at(index);
|
||||
|
||||
for(auto &real_term : phy_term->terminals()) {
|
||||
tsi_.m_label.append(real_term->label());
|
||||
tsi_.m_uuid.append(real_term->elementUuid());
|
||||
}
|
||||
|
||||
tsi_.m_valid = true;
|
||||
return tsi_;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief TerminalStrip::realTerminal
|
||||
* @param terminal
|
||||
@@ -286,14 +342,9 @@ QSharedPointer<RealTerminal> TerminalStrip::realTerminal(Element *terminal)
|
||||
{
|
||||
shared_real_terminal rt;
|
||||
|
||||
if (m_terminal_elements_vector.contains(terminal))
|
||||
{
|
||||
for (auto &real : qAsConst(m_real_terminals))
|
||||
{
|
||||
if (real->element() == terminal) {
|
||||
rt = real;
|
||||
break;
|
||||
}
|
||||
for (auto &real : qAsConst(m_real_terminals)) {
|
||||
if (real->element() == terminal) {
|
||||
return real;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -321,3 +372,38 @@ QSharedPointer<PhysicalTerminal> TerminalStrip::physicalTerminal(QSharedPointer<
|
||||
|
||||
return pt;
|
||||
}
|
||||
|
||||
/************************************************************************************/
|
||||
/************************************************************************************/
|
||||
/************************************************************************************/
|
||||
/************************************************************************************/
|
||||
/************************************************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
bool TerminalStripIndex::isValid() const
|
||||
{
|
||||
return m_valid;
|
||||
}
|
||||
|
||||
QString TerminalStripIndex::label(int level) const
|
||||
{
|
||||
if (level<0 ||
|
||||
level >= m_label.size()) {
|
||||
return QStringLiteral("");
|
||||
}
|
||||
|
||||
return m_label.at(level);
|
||||
}
|
||||
|
||||
QUuid TerminalStripIndex::uuid(int level) const
|
||||
{
|
||||
if (level<0 ||
|
||||
level >= m_uuid.size()) {
|
||||
return QUuid();
|
||||
}
|
||||
|
||||
return m_uuid.at(level);
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ class Element;
|
||||
class RealTerminal;
|
||||
class QETProject;
|
||||
class PhysicalTerminal;
|
||||
class TerminalStripIndex;
|
||||
|
||||
class TerminalStrip : public QObject
|
||||
{
|
||||
@@ -50,9 +51,12 @@ class TerminalStrip : public QObject
|
||||
QString description() const {return m_data.m_description;}
|
||||
QUuid uuid() const {return m_data.m_uuid;}
|
||||
|
||||
bool addTerminal(Element *terminal);
|
||||
bool removeTerminal(Element *terminal);
|
||||
bool haveTerminal(Element *terminal);
|
||||
bool addTerminal (Element *terminal);
|
||||
bool removeTerminal (Element *terminal);
|
||||
bool haveTerminal (Element *terminal);
|
||||
|
||||
int physicalTerminalCount() const;
|
||||
TerminalStripIndex index(int index = 0);
|
||||
|
||||
private:
|
||||
QSharedPointer<RealTerminal> realTerminal(Element *terminal);
|
||||
@@ -66,8 +70,23 @@ class TerminalStrip : public QObject
|
||||
QVector<QSharedPointer<PhysicalTerminal>> m_physical_terminals;
|
||||
};
|
||||
|
||||
class TerminalStripIndex
|
||||
{
|
||||
friend class TerminalStrip;
|
||||
|
||||
private :
|
||||
TerminalStripIndex () {}
|
||||
TerminalStripIndex (TerminalStripIndex *) {}
|
||||
|
||||
public:
|
||||
bool isValid() const;
|
||||
QString label(int level = 0) const;
|
||||
QUuid uuid(int level = 0) const;
|
||||
|
||||
private:
|
||||
QVector<QString> m_label;
|
||||
QVector<QUuid> m_uuid;
|
||||
bool m_valid = false;
|
||||
};
|
||||
|
||||
#endif // TERMINALSTRIP_H
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
Copyright 2006-2021 The QElectroTech Team
|
||||
This file is part of QElectroTech.
|
||||
|
||||
@@ -41,6 +41,7 @@ TerminalStripEditor::TerminalStripEditor(QETProject *project, QWidget *parent) :
|
||||
{
|
||||
ui->setupUi(this);
|
||||
buildTree();
|
||||
ui->m_terminal_strip_tw->expandRecursively(ui->m_terminal_strip_tw->rootIndex());
|
||||
setUpUndoConnections();
|
||||
}
|
||||
|
||||
@@ -51,7 +52,6 @@ TerminalStripEditor::~TerminalStripEditor() {
|
||||
delete ui;
|
||||
}
|
||||
|
||||
#include <QHashIterator>
|
||||
void TerminalStripEditor::setUpUndoConnections()
|
||||
{
|
||||
connect(ui->m_terminal_strip_tw, &TerminalStripTreeWidget::terminalAddedToStrip,
|
||||
@@ -164,16 +164,22 @@ QTreeWidgetItem* TerminalStripEditor::addTerminalStrip(TerminalStrip *terminal_s
|
||||
|
||||
//Add the terminal strip
|
||||
QStringList name{terminal_strip->name()};
|
||||
auto item = new QTreeWidgetItem(loc_qtwi, name, TerminalStripTreeWidget::Strip);
|
||||
item->setData(0, TerminalStripTreeWidget::UUID_USER_ROLE, terminal_strip->uuid());
|
||||
item->setIcon(0, QET::Icons::TerminalStrip);
|
||||
auto strip_item = new QTreeWidgetItem(loc_qtwi, name, TerminalStripTreeWidget::Strip);
|
||||
strip_item->setData(0, TerminalStripTreeWidget::UUID_USER_ROLE, terminal_strip->uuid());
|
||||
strip_item->setIcon(0, QET::Icons::TerminalStrip);
|
||||
|
||||
//Add terminal owned by the strip
|
||||
//for (auto terminal : terminal_strip->ter)
|
||||
//Add child terminal of the strip
|
||||
for (auto i=0 ; i<terminal_strip->physicalTerminalCount() ; ++i)
|
||||
{
|
||||
auto index = terminal_strip->index(i);
|
||||
auto term_item = new QTreeWidgetItem(strip_item, QStringList(index.label()), TerminalStripTreeWidget::Terminal);
|
||||
term_item->setData(0, TerminalStripTreeWidget::UUID_USER_ROLE, index.uuid().toString());
|
||||
term_item->setIcon(0, QET::Icons::ElementTerminal);
|
||||
}
|
||||
|
||||
m_item_strip_H.insert(item, terminal_strip);
|
||||
m_item_strip_H.insert(strip_item, terminal_strip);
|
||||
m_uuid_strip_H.insert(terminal_strip->uuid(), terminal_strip);
|
||||
return item;
|
||||
return strip_item;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user