Fix drag and drop bug

This commit is contained in:
joshua 2021-05-03 22:25:43 +02:00
parent dbb21373e1
commit f07f4cb150
3 changed files with 38 additions and 0 deletions

View File

@ -424,6 +424,8 @@ TerminalStripIndex TerminalStrip::index(int index)
for(auto &real_term : phy_term->terminals()) {
tsi_.m_label.append(real_term->label());
tsi_.m_uuid.append(real_term->elementUuid());
tsi_.m_is_element.append(real_term->isElement());
tsi_.m_element.append(static_cast<TerminalElement*>(real_term->element()));
}
tsi_.m_valid = true;
@ -587,3 +589,23 @@ QUuid TerminalStripIndex::uuid(int level) const
return m_uuid.at(level);
}
bool TerminalStripIndex::isElement(int level) const
{
if (level<0 ||
level >= m_is_element.size()) {
return false;
}
return m_is_element.at(level);
}
TerminalElement *TerminalStripIndex::element(int level) const
{
if (level<0 ||
level >= m_element.size()) {
return nullptr;
}
return m_element.at(level);
}

View File

@ -27,7 +27,15 @@ class RealTerminal;
class QETProject;
class PhysicalTerminal;
class TerminalStripIndex;
class TerminalElement;
/**
* @brief The TerminalStrip class
* This class hold all the datas and configurations
* of a terminal strip (but the not the visual aspect).
* A terminal strip have some informations (name comment etc...)
* and is composed by terminals (draw in a diagram or described in the terminal strip)
*/
class TerminalStrip : public QObject
{
Q_OBJECT
@ -88,11 +96,15 @@ class TerminalStripIndex
bool isValid() const;
QString label(int level = 0) const;
QUuid uuid(int level = 0) const;
bool isElement(int level = 0) const;
TerminalElement *element(int level = 0) const;
private:
QVector<QString> m_label;
QVector<QUuid> m_uuid;
bool m_valid = false;
QVector<bool> m_is_element;
QVector<TerminalElement *> m_element;
};
#endif // TERMINALSTRIP_H

View File

@ -175,6 +175,10 @@ QTreeWidgetItem* TerminalStripEditor::addTerminalStrip(TerminalStrip *terminal_s
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);
if (index.isElement()) {
m_uuid_terminal_H.insert(index.uuid(), index.element());
}
}
m_item_strip_H.insert(strip_item, terminal_strip);