diff --git a/sources/TerminalStrip/GraphicsItem/demoterminalstrip.cpp b/sources/TerminalStrip/GraphicsItem/demoterminalstrip.cpp
new file mode 100644
index 000000000..958e8bf7e
--- /dev/null
+++ b/sources/TerminalStrip/GraphicsItem/demoterminalstrip.cpp
@@ -0,0 +1,142 @@
+/*
+ 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 .
+*/
+#include "demoterminalstrip.h"
+
+namespace TerminalStripDrawer
+{
+
+/*========= DemoBridge =========*/
+ class DemoBridge : public AbstractBridgeInterface
+ {
+ public:
+ DemoBridge(const QUuid &uuid) :
+ m_uuid { uuid } {}
+
+ QUuid uuid() const override {
+ return m_uuid;
+ }
+
+ private:
+ const QUuid m_uuid;
+ };
+
+ class DemoRealTerminal : public AbstractRealTerminalInterface
+ {
+ public:
+ DemoRealTerminal(const QString &label, const QUuid &bridge) :
+ m_label { label },
+ m_bridge { bridge }
+ {}
+
+ QString label() const override {
+ return m_label;
+ }
+
+ bool isBridged() const override {
+ return true;
+ }
+
+ DemoBridge *bridge() const override {
+ return new DemoBridge { m_bridge };
+ }
+
+ private:
+ QString m_label;
+ QUuid m_bridge;
+ };
+
+ class DemoPhysicalTerminal : public AbstractPhysicalTerminalInterface
+ {
+ public:
+ DemoPhysicalTerminal(QVector> real_terminals) :
+ m_real_terminals { real_terminals}
+ {}
+
+ QVector> realTerminals() const override {
+ return m_real_terminals;
+ }
+
+ private:
+ QVector> m_real_terminals;
+ };
+
+
+
+/*========= DemoTerminalStrip =========*/
+
+ /**
+ * @brief DemoTerminalStrip::DemoTerminalStrip
+ */
+ DemoTerminalStrip::DemoTerminalStrip()
+ {
+ build();
+ }
+
+ QVector > DemoTerminalStrip::physicalTerminal() const
+ {
+ return m_physical_terminal;
+ }
+
+ void DemoTerminalStrip::build()
+ {
+ QUuid lvl_1 = QUuid::createUuid();
+ QUuid lvl_2 = QUuid::createUuid();
+ QUuid lvl_3 = QUuid::createUuid();
+
+ QVector > real_terminals_vector;
+
+ real_terminals_vector << QSharedPointer {
+ new DemoRealTerminal( QStringLiteral("24vdc"),
+ lvl_1)};
+ real_terminals_vector << QSharedPointer {
+ new DemoRealTerminal( QStringLiteral("0vdc"),
+ lvl_2)};
+ real_terminals_vector << QSharedPointer {
+ new DemoRealTerminal( QStringLiteral("signal"),
+ lvl_3)};
+ m_physical_terminal << QSharedPointer {
+ new DemoPhysicalTerminal {real_terminals_vector}};
+
+ real_terminals_vector.clear();
+ real_terminals_vector << QSharedPointer {
+ new DemoRealTerminal( QStringLiteral("24vdc"),
+ lvl_1)};
+ real_terminals_vector << QSharedPointer {
+ new DemoRealTerminal( QStringLiteral("0vdc"),
+ lvl_2)};
+ real_terminals_vector << QSharedPointer {
+ new DemoRealTerminal( QStringLiteral("signal"),
+ lvl_3)};
+ m_physical_terminal << QSharedPointer {
+ new DemoPhysicalTerminal {real_terminals_vector}};
+
+ real_terminals_vector.clear();
+ real_terminals_vector << QSharedPointer {
+ new DemoRealTerminal( QStringLiteral("24vdc"),
+ lvl_1)};
+ real_terminals_vector << QSharedPointer {
+ new DemoRealTerminal( QStringLiteral("0vdc"),
+ lvl_2)};
+ real_terminals_vector << QSharedPointer {
+ new DemoRealTerminal( QStringLiteral("signal"),
+ lvl_3)};
+ m_physical_terminal << QSharedPointer {
+ new DemoPhysicalTerminal {real_terminals_vector}};
+ }
+
+}
diff --git a/sources/TerminalStrip/GraphicsItem/demoterminalstrip.h b/sources/TerminalStrip/GraphicsItem/demoterminalstrip.h
new file mode 100644
index 000000000..ea8bd069d
--- /dev/null
+++ b/sources/TerminalStrip/GraphicsItem/demoterminalstrip.h
@@ -0,0 +1,50 @@
+/*
+ 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 DEMOTERMINALSTRIP_H
+#define DEMOTERMINALSTRIP_H
+
+#include "terminalstripdrawer.h"
+
+namespace TerminalStripDrawer {
+
+class DemoTerminalStrip : public AbstractTerminalStripInterface
+{
+ public:
+ DemoTerminalStrip();
+
+ QString installation() const override {
+ return QStringLiteral("=INST");
+ }
+ QString location() const override {
+ return QStringLiteral("+LOC" );
+ }
+ QString name() const override {
+ return QStringLiteral("X1");
+ }
+ QVector> physicalTerminal() const override;
+
+ private:
+ void build();
+
+ private:
+ QVector> m_physical_terminal;
+};
+
+} //End namespace TerminalStripDrawer
+
+#endif // DEMOTERMINALSTRIP_H
diff --git a/sources/TerminalStrip/GraphicsItem/terminalstripdrawer.cpp b/sources/TerminalStrip/GraphicsItem/terminalstripdrawer.cpp
index 8448cecfa..ace229a36 100644
--- a/sources/TerminalStrip/GraphicsItem/terminalstripdrawer.cpp
+++ b/sources/TerminalStrip/GraphicsItem/terminalstripdrawer.cpp
@@ -1,5 +1,5 @@
/*
- Copyright 2006-2022 The QElectroTech Team
+ Copyright 2006-2023 The QElectroTech Team
This file is part of QElectroTech.
QElectroTech is free software: you can redistribute it and/or modify
@@ -31,15 +31,15 @@ namespace TerminalStripDrawer {
* @param strip
* @param pattern
*/
-TerminalStripDrawer::TerminalStripDrawer(QPointer strip,
+TerminalStripDrawer::TerminalStripDrawer(QSharedPointer strip,
QSharedPointer layout) :
- m_strip{new TrueTerminalStrip{strip.data()}},
- m_pattern(layout)
+ m_strip { strip },
+ m_pattern { layout }
{}
-void TerminalStripDrawer::setStrip(TerminalStrip *strip)
+void TerminalStripDrawer::setStrip(QSharedPointer strip)
{
- m_strip.reset(new TrueTerminalStrip{strip});
+ m_strip = strip;
}
/**
diff --git a/sources/TerminalStrip/GraphicsItem/terminalstripdrawer.h b/sources/TerminalStrip/GraphicsItem/terminalstripdrawer.h
index d32f434e8..fbb00cefe 100644
--- a/sources/TerminalStrip/GraphicsItem/terminalstripdrawer.h
+++ b/sources/TerminalStrip/GraphicsItem/terminalstripdrawer.h
@@ -62,16 +62,15 @@ namespace TerminalStripDrawer
virtual QString location() const = 0;
virtual QString name() const = 0;
virtual QVector> physicalTerminal() const = 0;
- virtual bool operator()() = 0;
};
class TerminalStripDrawer
{
public:
- TerminalStripDrawer(QPointer strip = QPointer(),
+ TerminalStripDrawer(QSharedPointer strip = QSharedPointer { nullptr },
QSharedPointer layout = QSharedPointer());
- void setStrip(TerminalStrip *strip);
+ void setStrip(QSharedPointer strip);
void paint(QPainter *painter);
QRectF boundingRect() const;
@@ -83,7 +82,7 @@ namespace TerminalStripDrawer
int width() const;
private:
- QScopedPointer m_strip;
+ QSharedPointer m_strip;
QSharedPointer m_pattern;
bool m_debug_draw { false };
};
diff --git a/sources/TerminalStrip/GraphicsItem/terminalstripitem.cpp b/sources/TerminalStrip/GraphicsItem/terminalstripitem.cpp
index c6e2c344b..77f28adee 100644
--- a/sources/TerminalStrip/GraphicsItem/terminalstripitem.cpp
+++ b/sources/TerminalStrip/GraphicsItem/terminalstripitem.cpp
@@ -17,16 +17,21 @@
*/
#include "terminalstripitem.h"
+
#include "../diagram.h"
-#include "../terminalstrip.h"
-#include "../ui/terminalstripeditorwindow.h"
#include "../../project/projectpropertieshandler.h"
#include "../../qetgraphicsitem/qgraphicsitemutility.h"
+#include "../terminalstrip.h"
+#include "../ui/terminalstripeditorwindow.h"
+#include "trueterminalstrip.h"
-TerminalStripItem::TerminalStripItem(QPointer strip, QGraphicsItem *parent) :
- QetGraphicsItem{parent},
- m_strip{strip},
- m_drawer{strip}
+TerminalStripItem::TerminalStripItem(QPointer strip,
+ QGraphicsItem *parent) :
+ QetGraphicsItem { parent },
+ m_strip { strip },
+ m_drawer { QSharedPointer {
+ new TerminalStripDrawer::TrueTerminalStrip { strip }}
+ }
{
setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
setAcceptHoverEvents(true);
@@ -43,7 +48,8 @@ TerminalStripItem::TerminalStripItem(QGraphicsItem *parent) :
void TerminalStripItem::setTerminalStrip(TerminalStrip *strip)
{
m_strip = strip;
- m_drawer.setStrip(strip);
+ m_drawer.setStrip(QSharedPointer {
+ new TerminalStripDrawer::TrueTerminalStrip { strip }});
m_pending_strip_uuid = QUuid();
if (!m_drawer.haveLayout()) {
diff --git a/sources/TerminalStrip/GraphicsItem/trueterminalstrip.cpp b/sources/TerminalStrip/GraphicsItem/trueterminalstrip.cpp
index 612f01425..15273e4c1 100644
--- a/sources/TerminalStrip/GraphicsItem/trueterminalstrip.cpp
+++ b/sources/TerminalStrip/GraphicsItem/trueterminalstrip.cpp
@@ -25,6 +25,11 @@
namespace TerminalStripDrawer
{
+ /**
+ * @brief TrueTerminalStrip::TrueTerminalStrip
+ * Constructor, this class don't take ownership of @a strip
+ * @param strip
+ */
TrueTerminalStrip::TrueTerminalStrip(TerminalStrip *strip) :
m_strip { strip }
{}
@@ -69,11 +74,6 @@ namespace TerminalStripDrawer
return vector_;
}
- bool TrueTerminalStrip::operator()()
- {
- return m_strip;
- }
-
TruePhysicalTerminal::TruePhysicalTerminal(QSharedPointer physical) :
m_physical { physical }
{}
diff --git a/sources/TerminalStrip/GraphicsItem/trueterminalstrip.h b/sources/TerminalStrip/GraphicsItem/trueterminalstrip.h
index 9853304f7..10b3775fa 100644
--- a/sources/TerminalStrip/GraphicsItem/trueterminalstrip.h
+++ b/sources/TerminalStrip/GraphicsItem/trueterminalstrip.h
@@ -35,8 +35,7 @@ namespace TerminalStripDrawer
QString installation() const override;
QString location() const override;
QString name() const override;
- QVector> physicalTerminal() const override;
- bool operator()() override;
+ QVector> physicalTerminal() const override;
private:
QPointer m_strip;