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()
{
if (m_strip) {
m_strip->setBridge(m_real_terminal_vector);
if (m_strip)
{
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:
QPointer<TerminalStrip> m_strip;
QVector<QSharedPointer<RealTerminal>> m_real_terminal_vector;
QSharedPointer<TerminalStripBridge> m_bridge;
};

View File

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

View File

@@ -469,6 +469,26 @@ bool TerminalStrip::isBridgeable(const QVector<QSharedPointer<RealTerminal>> &re
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
* 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 (!isBridgeable(real_terminals)) {
if (!isBridgeable(bridge, real_terminals)) {
return false;
}

View File

@@ -93,6 +93,7 @@ class TerminalStrip : public QObject
bool setLevel(const QSharedPointer<RealTerminal> &real_terminal, int level);
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 QSharedPointer<TerminalStripBridge> &bridge, 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)
return qHash(key->uuid(), seed);
else
return qHash(nullptr, seed);
return qHash(QUuid(), seed);
}
class TerminalStrip;