Merge branch 'terminal_strip'

* terminal_strip:
  Fix fail to build from sources
  Minor improvement about undo/redo for bridge creation
  Minor Fix : undo command for unbridge strip don't work
  Minor : add undo text
This commit is contained in:
joshua
2022-01-28 18:09:20 +01:00
6 changed files with 33 additions and 4 deletions

View File

@@ -36,8 +36,14 @@ void BridgeTerminalsCommand::undo()
void BridgeTerminalsCommand::redo() void BridgeTerminalsCommand::redo()
{ {
if (m_strip) { if (m_strip)
m_strip->setBridge(m_real_terminal_vector); {
if (m_bridge) {
m_strip->setBridge(m_bridge, m_real_terminal_vector);
} else {
m_strip->setBridge(m_real_terminal_vector);
m_bridge = m_strip->isBridged(m_real_terminal_vector.first());
}
} }
} }

View File

@@ -42,6 +42,7 @@ class BridgeTerminalsCommand : public QUndoCommand
private: private:
QPointer<TerminalStrip> m_strip; QPointer<TerminalStrip> m_strip;
QVector<QSharedPointer<RealTerminal>> m_real_terminal_vector; QVector<QSharedPointer<RealTerminal>> m_real_terminal_vector;
QSharedPointer<TerminalStripBridge> m_bridge;
}; };

View File

@@ -34,6 +34,7 @@ ChangeTerminalStripColor::ChangeTerminalStripColor(QSharedPointer<TerminalStripB
if (m_bridge) { if (m_bridge) {
m_old_color = m_bridge->color(); m_old_color = m_bridge->color();
} }
setText(QObject::tr("Modifier la couleur d'un pont de bornes"));
} }
void ChangeTerminalStripColor::redo() void ChangeTerminalStripColor::redo()

View File

@@ -469,6 +469,26 @@ bool TerminalStrip::isBridgeable(const QVector<QSharedPointer<RealTerminal>> &re
return no_bridged; return no_bridged;
} }
/**
* @brief TerminalStrip::isBridgeable
* Check if all RealTerminal of @a real_terminals can be bridged to
* the bridge @a bridge.
* @param real_terminals
* @return true if can be bridged.
*/
bool TerminalStrip::isBridgeable(QSharedPointer<TerminalStripBridge> bridge, const QVector<QSharedPointer<RealTerminal> > &real_terminals) const
{
if (real_terminals.isEmpty() ||
!m_bridge.contains(bridge)) {
return false;
}
auto vector_ = bridge->realTerminals();
vector_.append(real_terminals);
return isBridgeable(vector_);
}
/** /**
* @brief TerminalStrip::setBridge * @brief TerminalStrip::setBridge
* Set a bridge betwen all real terminal of @a real_terminals * Set a bridge betwen all real terminal of @a real_terminals
@@ -508,7 +528,7 @@ bool TerminalStrip::setBridge(const QSharedPointer<TerminalStripBridge> &bridge,
{ {
if (bridge) if (bridge)
{ {
if (!isBridgeable(real_terminals)) { if (!isBridgeable(bridge, real_terminals)) {
return false; return false;
} }

View File

@@ -93,6 +93,7 @@ class TerminalStrip : public QObject
bool setLevel(const QSharedPointer<RealTerminal> &real_terminal, int level); bool setLevel(const QSharedPointer<RealTerminal> &real_terminal, int level);
bool isBridgeable(const QVector<QSharedPointer<RealTerminal>> &real_terminals) const; bool isBridgeable(const QVector<QSharedPointer<RealTerminal>> &real_terminals) const;
bool isBridgeable(QSharedPointer<TerminalStripBridge> bridge, const QVector<QSharedPointer<RealTerminal>> &real_terminals) const;
bool setBridge(const QVector<QSharedPointer<RealTerminal>> &real_terminals); bool setBridge(const QVector<QSharedPointer<RealTerminal>> &real_terminals);
bool setBridge(const QSharedPointer<TerminalStripBridge> &bridge, const QVector<QSharedPointer<RealTerminal>> &real_terminals); bool setBridge(const QSharedPointer<TerminalStripBridge> &bridge, const QVector<QSharedPointer<RealTerminal>> &real_terminals);
void unBridge(const QVector<QSharedPointer<RealTerminal>> &real_terminals); void unBridge(const QVector<QSharedPointer<RealTerminal>> &real_terminals);

View File

@@ -38,7 +38,7 @@ inline uint qHash(const QPointer<Element> &key, uint seed) {
if (key) if (key)
return qHash(key->uuid(), seed); return qHash(key->uuid(), seed);
else else
return qHash(nullptr, seed); return qHash(QUuid(), seed);
} }
class TerminalStrip; class TerminalStrip;