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()) { for(auto &real_term : phy_term->terminals()) {
tsi_.m_label.append(real_term->label()); tsi_.m_label.append(real_term->label());
tsi_.m_uuid.append(real_term->elementUuid()); 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; tsi_.m_valid = true;
@@ -587,3 +589,23 @@ QUuid TerminalStripIndex::uuid(int level) const
return m_uuid.at(level); 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 QETProject;
class PhysicalTerminal; class PhysicalTerminal;
class TerminalStripIndex; 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 class TerminalStrip : public QObject
{ {
Q_OBJECT Q_OBJECT
@@ -88,11 +96,15 @@ class TerminalStripIndex
bool isValid() const; bool isValid() const;
QString label(int level = 0) const; QString label(int level = 0) const;
QUuid uuid(int level = 0) const; QUuid uuid(int level = 0) const;
bool isElement(int level = 0) const;
TerminalElement *element(int level = 0) const;
private: private:
QVector<QString> m_label; QVector<QString> m_label;
QVector<QUuid> m_uuid; QVector<QUuid> m_uuid;
bool m_valid = false; bool m_valid = false;
QVector<bool> m_is_element;
QVector<TerminalElement *> m_element;
}; };
#endif // TERMINALSTRIP_H #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); 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->setData(0, TerminalStripTreeWidget::UUID_USER_ROLE, index.uuid().toString());
term_item->setIcon(0, QET::Icons::ElementTerminal); 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); m_item_strip_H.insert(strip_item, terminal_strip);