mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-03-19 09:49:58 +01:00
Revamp terminalStrip feature code
Move RealTerminal class in a new file Move PhysicalTerminal class in a new file. Remove the use of QWeakPointer and use instead QSharedPointer in a big part of the revamp.
This commit is contained in:
@@ -40,97 +40,6 @@ struct TerminalStripBridge
|
||||
QUuid uuid_ = QUuid::createUuid();
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief The RealTerminal class
|
||||
* Represent a real terminal.
|
||||
* A real terminal can be a drawed terminal in a folio
|
||||
* or a terminal set by user but not present
|
||||
* on any folio (for example a reserved terminal).
|
||||
*
|
||||
* When create a new instance of RealTerminal you must
|
||||
* call sharedRef() and only use the returned QSharedPointer
|
||||
* instead of the raw pointer
|
||||
*/
|
||||
class RealTerminal
|
||||
{
|
||||
friend class TerminalStrip;
|
||||
friend class PhysicalTerminal;
|
||||
|
||||
private:
|
||||
RealTerminal(TerminalStrip *strip, Element *element = nullptr);
|
||||
QSharedPointer<RealTerminal> sharedRef();
|
||||
QWeakPointer<RealTerminal> weakRef();
|
||||
|
||||
bool fromXml(QDomElement xml_element, const QVector<TerminalElement *> &terminal_vector);
|
||||
QDomElement toXml(QDomDocument &parent_document) const;
|
||||
|
||||
public:
|
||||
TerminalStrip *parentStrip() const;
|
||||
int level() const;
|
||||
QString label() const;
|
||||
QString Xref() const;
|
||||
QString cable() const;
|
||||
QString cableWire() const;
|
||||
QString conductor() const;
|
||||
|
||||
ElementData::TerminalType type() const;
|
||||
ElementData::TerminalFunction function() const;
|
||||
|
||||
bool isLed() const;
|
||||
bool isElement() const;
|
||||
bool isBridged() const;
|
||||
|
||||
QSharedPointer<TerminalStripBridge> bridge() const;
|
||||
|
||||
Element* element() const;
|
||||
QUuid elementUuid() const;
|
||||
QUuid uuid() const;
|
||||
|
||||
static QString xmlTagName();
|
||||
|
||||
private :
|
||||
QPointer<Element> m_element;
|
||||
QPointer<TerminalStrip> m_parent_terminal_strip;
|
||||
QUuid m_uuid = QUuid::createUuid();
|
||||
QWeakPointer<RealTerminal> m_this_weak;
|
||||
};
|
||||
|
||||
class PhysicalTerminal
|
||||
{
|
||||
friend class TerminalStrip;
|
||||
|
||||
private:
|
||||
PhysicalTerminal(TerminalStrip *parent_strip, QVector<QSharedPointer<RealTerminal>> terminals);
|
||||
QSharedPointer<PhysicalTerminal> sharedRef();
|
||||
QWeakPointer<PhysicalTerminal> weakRef();
|
||||
|
||||
QDomElement toXml(QDomDocument &parent_document) const;
|
||||
|
||||
void setTerminals(const QVector<QSharedPointer<RealTerminal>> &terminals);
|
||||
void addTerminal(const QSharedPointer<RealTerminal> &terminal);
|
||||
bool removeTerminal(const QSharedPointer<RealTerminal> &terminal);
|
||||
|
||||
bool setLevelOf(const QSharedPointer<RealTerminal> &terminal, int level);
|
||||
|
||||
public:
|
||||
PhysicalTerminal(){}
|
||||
|
||||
int levelCount() const;
|
||||
int levelOf(const QWeakPointer<RealTerminal> &terminal) const;
|
||||
QVector<QWeakPointer<RealTerminal>> realTerminals() const;
|
||||
QUuid uuid() const;
|
||||
int pos() const;
|
||||
int realTerminalCount() const;
|
||||
|
||||
static QString xmlTagName();
|
||||
|
||||
private:
|
||||
QPointer<TerminalStrip> m_parent_terminal_strip;
|
||||
QVector<QSharedPointer<RealTerminal>> m_real_terminal;
|
||||
QUuid m_uuid = QUuid::createUuid();
|
||||
QWeakPointer<PhysicalTerminal> m_this_weak;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief The TerminalStrip class
|
||||
* This class hold all the datas and configurations
|
||||
@@ -178,28 +87,30 @@ class TerminalStrip : public QObject
|
||||
bool addTerminal (Element *terminal);
|
||||
bool removeTerminal (Element *terminal);
|
||||
|
||||
int pos(const QWeakPointer<PhysicalTerminal> &terminal) const;
|
||||
int pos(const QSharedPointer<PhysicalTerminal> &terminal) const;
|
||||
int physicalTerminalCount() const;
|
||||
QWeakPointer<PhysicalTerminal> physicalTerminal(int index) const;
|
||||
QWeakPointer<PhysicalTerminal> physicalTerminal (const QWeakPointer<RealTerminal> &real_terminal) const;
|
||||
QVector<QWeakPointer<PhysicalTerminal>> physicalTerminal() const;
|
||||
QSharedPointer<PhysicalTerminal> physicalTerminal(int index) const;
|
||||
QSharedPointer<PhysicalTerminal> physicalTerminal (const QSharedPointer<RealTerminal> &real_terminal) const;
|
||||
QVector<QSharedPointer<PhysicalTerminal>> physicalTerminal() const;
|
||||
QSharedPointer<RealTerminal> realTerminal(Element *terminal) const;
|
||||
|
||||
bool setOrderTo(const QVector<QWeakPointer<PhysicalTerminal>> &sorted_vector);
|
||||
bool groupTerminals(const QWeakPointer<PhysicalTerminal> &receiver_terminal, const QVector<QWeakPointer<RealTerminal>> &added_terminals);
|
||||
void unGroupTerminals(const QVector<QWeakPointer<RealTerminal>> &terminals_to_ungroup);
|
||||
bool setLevel(const QWeakPointer<RealTerminal> &real_terminal, int level);
|
||||
bool setOrderTo(const QVector<QSharedPointer<PhysicalTerminal>> &sorted_vector);
|
||||
bool groupTerminals(const QSharedPointer<PhysicalTerminal> &receiver_terminal, const QVector<QSharedPointer<RealTerminal>> &added_terminals);
|
||||
void unGroupTerminals(const QVector<QSharedPointer<RealTerminal>> &terminals_to_ungroup);
|
||||
bool setLevel(const QSharedPointer<RealTerminal> &real_terminal, int level);
|
||||
|
||||
bool isBridgeable(const QVector<QWeakPointer<RealTerminal>> &real_terminals) const;
|
||||
bool setBridge(const QVector<QWeakPointer<RealTerminal>> &real_terminals);
|
||||
bool setBridge(const QSharedPointer<TerminalStripBridge> &bridge, const QVector<QWeakPointer<RealTerminal>> &real_terminals);
|
||||
void unBridge(const QVector<QWeakPointer<RealTerminal>> &real_terminals);
|
||||
bool canUnBridge(const QVector <QWeakPointer<RealTerminal>> &real_terminals) const;
|
||||
QSharedPointer<TerminalStripBridge> bridgeFor(const QWeakPointer<RealTerminal> &real_terminal) const;
|
||||
bool isBridgeable(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);
|
||||
bool canUnBridge(const QVector <QSharedPointer<RealTerminal>> &real_terminals) const;
|
||||
QSharedPointer<TerminalStripBridge> isBridged(const QSharedPointer<RealTerminal> real_terminal) const;
|
||||
QSharedPointer<TerminalStripBridge> bridgeFor (const QVector<QSharedPointer<RealTerminal>> &terminal_vector) const;
|
||||
|
||||
QWeakPointer<RealTerminal> previousTerminalInLevel(const QWeakPointer<RealTerminal> &real_terminal) const;
|
||||
QWeakPointer<RealTerminal> nextTerminalInLevel(const QWeakPointer<RealTerminal> &real_terminal) const;
|
||||
QWeakPointer<RealTerminal> previousRealTerminal(const QWeakPointer<RealTerminal> &real_terminal) const;
|
||||
QWeakPointer<RealTerminal> nextRealTerminal(const QWeakPointer<RealTerminal> &real_terminal) const;
|
||||
QSharedPointer<RealTerminal> previousTerminalInLevel(const QSharedPointer<RealTerminal> &real_terminal) const;
|
||||
QSharedPointer<RealTerminal> nextTerminalInLevel(const QSharedPointer<RealTerminal> &real_terminal) const;
|
||||
QSharedPointer<RealTerminal> previousRealTerminal(const QSharedPointer<RealTerminal> &real_terminal) const;
|
||||
QSharedPointer<RealTerminal> nextRealTerminal(const QSharedPointer<RealTerminal> &real_terminal) const;
|
||||
|
||||
QVector<QPointer<Element>> terminalElement() const;
|
||||
|
||||
@@ -208,10 +119,6 @@ class TerminalStrip : public QObject
|
||||
bool fromXml(QDomElement &xml_element);
|
||||
|
||||
private:
|
||||
QSharedPointer<RealTerminal> realTerminal(Element *terminal);
|
||||
QSharedPointer<PhysicalTerminal> physicalTerminal(QSharedPointer<RealTerminal> terminal) const;
|
||||
QSharedPointer<TerminalStripBridge> isBridged(const QSharedPointer<RealTerminal> real_terminal) const;
|
||||
QSharedPointer<TerminalStripBridge> bridgeFor (const QVector<QSharedPointer<RealTerminal>> &terminal_vector) const;
|
||||
void rebuildRealVector();
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user