/* Copyright 2006-2023 The QElectroTech Team This file is part of QElectroTech. QElectroTech is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. QElectroTech is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with QElectroTech. If not, see . */ #ifndef TERMINALSTRIPBRIDGE_H #define TERMINALSTRIPBRIDGE_H #include #include #include #include #include #include class RealTerminal; class TerminalStrip; class TerminalStripBridge { friend class TerminalStrip; public: static QVector bridgeColor() {return QVector{Qt::red, Qt::blue, Qt::white, Qt::darkGray, Qt::black};} TerminalStripBridge(TerminalStrip *parent_strip = nullptr); QSharedPointer sharedRef(); QWeakPointer weakRef(); QColor color() const; void setColor(const QColor &color); QVector> realTerminals() const; static QString xmlTagName() {return QStringLiteral("terminal_strip_bridge");} QDomElement toXml(QDomDocument &parent_document) const; void fromXml(const QDomElement &dom_element); QUuid uuid() const noexcept; private: bool addTerminals(const QVector> &real_terminals); void removeTerminals(const QVector> &real_terminals); void removeTerminal(const QSharedPointer &real_terminal); private: QPointer m_strip; QVector> m_real_terminals; QColor m_color = Qt::darkGray; QUuid m_uuid = QUuid::createUuid(); QWeakPointer m_this_weak; }; #endif // TERMINALSTRIPBRIDGE_H