mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-03-22 04:59:59 +01:00
Improve bridge edition
This commit is contained in:
@@ -49,32 +49,23 @@ UnBridgeTerminalsCommand::UnBridgeTerminalsCommand(TerminalStrip *strip,
|
||||
{
|
||||
setText(QObject::tr("Supprimer des ponts de bornes"));
|
||||
|
||||
for (const auto &real_t : real_terminal)
|
||||
if (strip->canUnBridge(real_terminal))
|
||||
{
|
||||
auto bridge_ = strip->bridgeFor(real_t);
|
||||
if (bridge_) {
|
||||
m_bridge_terminal_hash.insert(bridge_.toWeakRef(), real_t);
|
||||
}
|
||||
m_terminals = real_terminal;
|
||||
m_bridge = strip->bridgeFor(real_terminal.first());
|
||||
}
|
||||
}
|
||||
|
||||
void UnBridgeTerminalsCommand::undo()
|
||||
{
|
||||
if (m_strip)
|
||||
{
|
||||
for (const auto &bridge_ : m_bridge_terminal_hash.uniqueKeys())
|
||||
{
|
||||
if (!bridge_.isNull()) {
|
||||
auto terminal_list = m_bridge_terminal_hash.values(bridge_);
|
||||
m_strip->setBridge(bridge_.toStrongRef() , terminal_list.toVector());
|
||||
}
|
||||
}
|
||||
if (m_strip && m_bridge) {
|
||||
m_strip->setBridge(m_bridge.toStrongRef(), m_terminals);
|
||||
}
|
||||
}
|
||||
|
||||
void UnBridgeTerminalsCommand::redo()
|
||||
{
|
||||
if (m_strip) {
|
||||
m_strip->unBridge(m_bridge_terminal_hash.values().toVector());
|
||||
m_strip->unBridge(m_terminals);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,8 +61,8 @@ class UnBridgeTerminalsCommand : public QUndoCommand
|
||||
|
||||
private:
|
||||
QPointer<TerminalStrip> m_strip;
|
||||
QMultiHash<QWeakPointer<TerminalStripBridge>, QWeakPointer<RealTerminal>> m_bridge_terminal_hash; ///Key a is bridge, value is real terminal
|
||||
|
||||
QWeakPointer<TerminalStripBridge> m_bridge;
|
||||
QVector<QWeakPointer<RealTerminal>> m_terminals;
|
||||
};
|
||||
|
||||
#endif // BRIDGETERMINALSCOMMAND_H
|
||||
|
||||
Reference in New Issue
Block a user