mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-20 08:10:52 +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();
|
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 :
|
private :
|
||||||
QPointer<Element> m_element;
|
QPointer<Element> m_element;
|
||||||
QPointer<TerminalStrip> m_parent_terminal_strip;
|
QPointer<TerminalStrip> m_parent_terminal_strip;
|
||||||
@@ -276,6 +302,36 @@ bool TerminalStrip::haveTerminal(Element *terminal) {
|
|||||||
return m_terminal_elements_vector.contains(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
|
* @brief TerminalStrip::realTerminal
|
||||||
* @param terminal
|
* @param terminal
|
||||||
@@ -286,14 +342,9 @@ QSharedPointer<RealTerminal> TerminalStrip::realTerminal(Element *terminal)
|
|||||||
{
|
{
|
||||||
shared_real_terminal rt;
|
shared_real_terminal rt;
|
||||||
|
|
||||||
if (m_terminal_elements_vector.contains(terminal))
|
for (auto &real : qAsConst(m_real_terminals)) {
|
||||||
{
|
if (real->element() == terminal) {
|
||||||
for (auto &real : qAsConst(m_real_terminals))
|
return real;
|
||||||
{
|
|
||||||
if (real->element() == terminal) {
|
|
||||||
rt = real;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -321,3 +372,38 @@ QSharedPointer<PhysicalTerminal> TerminalStrip::physicalTerminal(QSharedPointer<
|
|||||||
|
|
||||||
return pt;
|
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 RealTerminal;
|
||||||
class QETProject;
|
class QETProject;
|
||||||
class PhysicalTerminal;
|
class PhysicalTerminal;
|
||||||
|
class TerminalStripIndex;
|
||||||
|
|
||||||
class TerminalStrip : public QObject
|
class TerminalStrip : public QObject
|
||||||
{
|
{
|
||||||
@@ -50,9 +51,12 @@ class TerminalStrip : public QObject
|
|||||||
QString description() const {return m_data.m_description;}
|
QString description() const {return m_data.m_description;}
|
||||||
QUuid uuid() const {return m_data.m_uuid;}
|
QUuid uuid() const {return m_data.m_uuid;}
|
||||||
|
|
||||||
bool addTerminal(Element *terminal);
|
bool addTerminal (Element *terminal);
|
||||||
bool removeTerminal(Element *terminal);
|
bool removeTerminal (Element *terminal);
|
||||||
bool haveTerminal(Element *terminal);
|
bool haveTerminal (Element *terminal);
|
||||||
|
|
||||||
|
int physicalTerminalCount() const;
|
||||||
|
TerminalStripIndex index(int index = 0);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QSharedPointer<RealTerminal> realTerminal(Element *terminal);
|
QSharedPointer<RealTerminal> realTerminal(Element *terminal);
|
||||||
@@ -66,8 +70,23 @@ class TerminalStrip : public QObject
|
|||||||
QVector<QSharedPointer<PhysicalTerminal>> m_physical_terminals;
|
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
|
#endif // TERMINALSTRIP_H
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/*
|
/*
|
||||||
Copyright 2006-2021 The QElectroTech Team
|
Copyright 2006-2021 The QElectroTech Team
|
||||||
This file is part of QElectroTech.
|
This file is part of QElectroTech.
|
||||||
|
|
||||||
@@ -41,6 +41,7 @@ TerminalStripEditor::TerminalStripEditor(QETProject *project, QWidget *parent) :
|
|||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
buildTree();
|
buildTree();
|
||||||
|
ui->m_terminal_strip_tw->expandRecursively(ui->m_terminal_strip_tw->rootIndex());
|
||||||
setUpUndoConnections();
|
setUpUndoConnections();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,7 +52,6 @@ TerminalStripEditor::~TerminalStripEditor() {
|
|||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <QHashIterator>
|
|
||||||
void TerminalStripEditor::setUpUndoConnections()
|
void TerminalStripEditor::setUpUndoConnections()
|
||||||
{
|
{
|
||||||
connect(ui->m_terminal_strip_tw, &TerminalStripTreeWidget::terminalAddedToStrip,
|
connect(ui->m_terminal_strip_tw, &TerminalStripTreeWidget::terminalAddedToStrip,
|
||||||
@@ -164,16 +164,22 @@ QTreeWidgetItem* TerminalStripEditor::addTerminalStrip(TerminalStrip *terminal_s
|
|||||||
|
|
||||||
//Add the terminal strip
|
//Add the terminal strip
|
||||||
QStringList name{terminal_strip->name()};
|
QStringList name{terminal_strip->name()};
|
||||||
auto item = new QTreeWidgetItem(loc_qtwi, name, TerminalStripTreeWidget::Strip);
|
auto strip_item = new QTreeWidgetItem(loc_qtwi, name, TerminalStripTreeWidget::Strip);
|
||||||
item->setData(0, TerminalStripTreeWidget::UUID_USER_ROLE, terminal_strip->uuid());
|
strip_item->setData(0, TerminalStripTreeWidget::UUID_USER_ROLE, terminal_strip->uuid());
|
||||||
item->setIcon(0, QET::Icons::TerminalStrip);
|
strip_item->setIcon(0, QET::Icons::TerminalStrip);
|
||||||
|
|
||||||
//Add terminal owned by the strip
|
//Add child terminal of the strip
|
||||||
//for (auto terminal : terminal_strip->ter)
|
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);
|
m_uuid_strip_H.insert(terminal_strip->uuid(), terminal_strip);
|
||||||
return item;
|
return strip_item;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user