QElectroTech 0.200.1-dev
Loading...
Searching...
No Matches
elementdata.h
Go to the documentation of this file.
1/*
2 Copyright 2006-2026 The QElectroTech Team
3 This file is part of QElectroTech.
4
5 QElectroTech is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 2 of the License, or
8 (at your option) any later version.
9
10 QElectroTech is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
17*/
18#ifndef ELEMENTDATA_H
19#define ELEMENTDATA_H
20
21#include "propertiesinterface.h"
22#include "../diagramcontext.h"
24
25#include <QStringList>
26#include <QVector>
27#include <QFont>
28
36{
37 Q_GADGET
38
39 public:
50 Q_ENUM(Type)
51 Q_DECLARE_FLAGS(Types, Type)
52
59 Q_ENUM(MasterType)
60
69 Q_ENUM(SlaveType)
70
77 Q_ENUM(SlaveState)
78
87 Q_ENUM(PlcIOType)
88
89
93 struct PlcIO {
95 QString address;
96 QString functionText;
97 QString comment;
98 QString crossRef;
99 int terminalCount = 1;
100 QStringList terminals;
101
105 QStringList effectiveTerminals() const {
106 if (!terminals.isEmpty())
107 return terminals;
108 int count = qMax(terminalCount, 1);
109 QStringList defaults;
110 for (int i = 0; i < count && i < 4; ++i)
111 defaults << QStringLiteral("T%1").arg(i + 1);
112 return defaults;
113 }
114
115 bool operator==(const PlcIO &other) const {
116 return type == other.type
117 && address == other.address
118 && functionText == other.functionText
119 && comment == other.comment
120 && crossRef == other.crossRef
121 && terminalCount == other.terminalCount
122 && terminals == other.terminals;
123 }
124 bool operator!=(const PlcIO &other) const {
125 return !(*this == other);
126 }
127 };
128
135 QVector<PlcIO> ios;
136 QList<int> breakPositions;
137 QMap<int, qreal> colWidths;
138 qreal rowHeight = 8.0;
139 QMap<int, bool> colVisible;
141 QFont cellFont;
142 QStringList columnNames;
143 QList<int> columnOrder;
144 bool showHeaders = true;
145
147 headerFont.setFamily(QString());
148 cellFont.setFamily(QString());
149 }
150
151 bool operator==(const PlcMasterData &other) const {
152 return ios == other.ios
154 && colWidths == other.colWidths
155 && qFuzzyCompare(rowHeight, other.rowHeight)
156 && colVisible == other.colVisible
157 && headerFont == other.headerFont
158 && cellFont == other.cellFont
159 && columnNames == other.columnNames
160 && columnOrder == other.columnOrder
161 && showHeaders == other.showHeaders;
162 }
163 bool operator!=(const PlcMasterData &other) const {
164 return !(*this == other);
165 }
166 };
167
168 static QString plcIOTypeToString(PlcIOType type);
169 static PlcIOType plcIOTypeFromString(const QString &string);
170 static QString translatedPlcIOType(PlcIOType type);
171 static QStringList plcIOTypeList();
172
180 Q_ENUM(TerminalType)
181
187 Q_ENUM(TerminalFunction)
188
189
198 int contactCount = 1;
200 QStringList labels;
201
202 bool operator==(const SlaveContactGroup &other) const {
203 return type == other.type
204 && subtype == other.subtype
205 && contactCount == other.contactCount
206 && terminalCount == other.terminalCount
207 && labels == other.labels;
208 }
209 bool operator!=(const SlaveContactGroup &other) const {
210 return !(*this == other);
211 }
212 };
213
215 ~ElementData() override {}
216
217 void toSettings(QSettings &settings, const QString prefix = QString()) const override;
218 void fromSettings(const QSettings &settings, const QString prefix = QString()) override;
219 QDomElement toXml(QDomDocument &xml_element) const override;
220 bool fromXml(const QDomElement &xml_element) override;
221 QDomElement kindInfoToXml(QDomDocument &document);
222 QDomElement plcMasterDataToXml(QDomDocument &document) const;
223 void plcMasterDataFromXml(const QDomElement &xml_plc);
224
227
230
231 void setTerminalLED(bool led);
232 bool terminalLed() const;
234
235 bool operator==(const ElementData &data) const;
236 bool operator!=(const ElementData &data) const;
237
238 QString typeToString() const;
239 static QString typeToString(ElementData::Type type);
240 static ElementData::Type typeFromString(const QString &string);
241
242 QString masterTypeToString() const;
243 static QString masterTypeToString(ElementData::MasterType type);
244 static ElementData::MasterType masterTypeFromString(const QString &string);
245
246 static QString slaveTypeToString (ElementData::SlaveType type);
247 static ElementData::SlaveType slaveTypeFromString(const QString &string);
248
249 static QString slaveStateToString(ElementData::SlaveState type);
250 static ElementData::SlaveState slaveStateFromString(const QString &string);
251
253 static ElementData::TerminalType terminalTypeFromString(const QString &string);
255
257 static ElementData::TerminalFunction terminalFunctionFromString(const QString &string);
259
261 static ElementData::SlaveState slaveContactGroupTypeFromString(const QString &string);
264
267
268 // must be public, because this class is a private member
269 // of Element/ element editor and they must access this data
271
275 QVector<SlaveContactGroup> m_slave_contact_groups;
277
280
283
288
289 private:
292
295
296 bool m_terminal_led = false;
299
300 private:
301 void kindInfoFromXml(const QDomElement &xml_element);
302};
303
304Q_DECLARE_OPERATORS_FOR_FLAGS(ElementData::Types)
305
306#endif // ELEMENTDATA_H
Definition diagramcontext.h:92
The ElementData class WARNING This class inherit from PropertiesInterface but only fromXml is actuall...
Definition elementdata.h:36
bool m_terminal_led_is_override
Definition elementdata.h:297
ElementData::TerminalFunction m_override_terminal_function
Definition elementdata.h:293
bool m_terminal_led
Definition elementdata.h:296
static QStringList plcIOTypeList()
ElementData::plcIOTypeList Return list of all translated PLC IO type strings (for combo boxes).
Definition elementdata.cpp:1206
static ElementData::TerminalType terminalTypeFromString(const QString &string)
Definition elementdata.cpp:847
void kindInfoFromXml(const QDomElement &xml_element)
Definition elementdata.cpp:923
void fromSettings(const QSettings &settings, const QString prefix=QString()) override
fromSettings load properties to setting file.
Definition elementdata.cpp:27
QString m_drawing_information
Definition elementdata.h:287
bool operator!=(const ElementData &data) const
Definition elementdata.cpp:655
QDomElement toXml(QDomDocument &xml_element) const override
toXml Save properties to xml element
Definition elementdata.cpp:32
ElementData::Type m_type
Definition elementdata.h:270
QVector< SlaveContactGroup > m_slave_contact_groups
Contact groups defined by master.
Definition elementdata.h:275
static ElementData::SlaveState slaveContactGroupTypeFromString(const QString &string)
ElementData::slaveContactGroupTypeFromString Convert a string from XML to SlaveState for slave contac...
Definition elementdata.cpp:1107
static ElementData::Type typeFromString(const QString &string)
Definition elementdata.cpp:689
ElementData::SlaveType m_slave_type
Definition elementdata.h:278
void setTerminalType(ElementData::TerminalType t_type)
ElementData::setTerminalType Override the terminal type by t_type.
Definition elementdata.cpp:480
QString masterTypeToString() const
Definition elementdata.cpp:716
ElementData::MasterType m_master_type
Definition elementdata.h:272
static QString slaveContactGroupSubtypeToString(ElementData::SlaveType type)
ElementData::slaveContactGroupSubtypeToString Convert a SlaveType to string for XML storage in slave ...
Definition elementdata.cpp:1116
bool terminalPropertiesIsOverrided() const
ElementData::terminalPropertiesIsOverrided.
Definition elementdata.cpp:557
TerminalType
Definition elementdata.h:173
@ TTSectional
Definition elementdata.h:176
@ TTGeneric
Definition elementdata.h:174
@ TTGround
Definition elementdata.h:178
@ TTFuse
Definition elementdata.h:175
@ TTDiode
Definition elementdata.h:177
NamesList m_names_list
Definition elementdata.h:286
QString typeToString() const
Definition elementdata.cpp:659
static QString slaveContactGroupTypeToString(ElementData::SlaveState type)
ElementData::slaveContactGroupTypeToString Convert a SlaveState to string for XML storage in slave co...
Definition elementdata.cpp:1098
void plcMasterDataFromXml(const QDomElement &xml_plc)
ElementData::plcMasterDataFromXml Deserialize PLC master data from XML.
Definition elementdata.cpp:387
QDomElement plcMasterDataToXml(QDomDocument &document) const
ElementData::plcMasterDataToXml Serialize PLC master data to XML (used by Element::toXml for diagram ...
Definition elementdata.cpp:274
PlcMasterData m_plc_master_data
PLC master IO table and display settings.
Definition elementdata.h:276
static QString terminalTypeToString(ElementData::TerminalType type)
Definition elementdata.cpp:830
Type
Definition elementdata.h:40
@ Terminal
Definition elementdata.h:47
@ ConductorDefinition
Definition elementdata.h:49
@ PreviousReport
Definition elementdata.h:43
@ NextReport
Definition elementdata.h:42
@ Thumbnail
Definition elementdata.h:48
@ Simple
Definition elementdata.h:41
@ Master
Definition elementdata.h:45
@ Slave
Definition elementdata.h:46
@ AllReport
Definition elementdata.h:44
MasterType
Definition elementdata.h:53
@ PLC
Definition elementdata.h:57
@ Commutator
Definition elementdata.h:56
@ Coil
Definition elementdata.h:54
@ Protection
Definition elementdata.h:55
PlcIOType
Definition elementdata.h:79
@ SortieUniverselle
Definition elementdata.h:85
@ EntreeAnalogique
Definition elementdata.h:82
@ SortieAnalogique
Definition elementdata.h:83
@ SortieDigitale
Definition elementdata.h:81
@ EntreeDigitale
Definition elementdata.h:80
@ EntreeUniverselle
Definition elementdata.h:84
static ElementData::MasterType masterTypeFromString(const QString &string)
Definition elementdata.cpp:738
TerminalFunction
Definition elementdata.h:182
@ TFGeneric
Definition elementdata.h:183
@ TFNeutral
Definition elementdata.h:185
@ TFPhase
Definition elementdata.h:184
static QString plcIOTypeToString(PlcIOType type)
ElementData::plcIOTypeToString Convert a PlcIOType to string for XML storage.
Definition elementdata.cpp:1134
DiagramContext m_informations
Definition elementdata.h:285
static QString terminalFunctionToString(ElementData::TerminalFunction function)
Definition elementdata.cpp:884
SlaveState
Definition elementdata.h:71
@ SW
Definition elementdata.h:74
@ Other
Definition elementdata.h:75
@ NO
Definition elementdata.h:72
@ NC
Definition elementdata.h:73
void setPlcMasterData(const PlcMasterData &data)
Definition elementdata.h:266
~ElementData() override
Definition elementdata.h:215
void toSettings(QSettings &settings, const QString prefix=QString()) const override
toSettings Save properties to setting file.
Definition elementdata.cpp:22
ElementData()
Definition elementdata.h:214
ElementData::TerminalFunction m_terminal_function
Definition elementdata.h:282
bool terminalLed() const
ElementData::terminalLed.
Definition elementdata.cpp:546
static QString translatedTerminalFunction(ElementData::TerminalFunction function)
Definition elementdata.cpp:913
void setTerminalLED(bool led)
ElementData::setTerminalLED Override the terminal led by led.
Definition elementdata.cpp:532
ElementData::TerminalType terminalType() const
ElementData::terminalType.
Definition elementdata.cpp:494
ElementData::TerminalType m_terminal_type
Definition elementdata.h:281
static ElementData::TerminalFunction terminalFunctionFromString(const QString &string)
Definition elementdata.cpp:897
void setTerminalFunction(ElementData::TerminalFunction t_function)
ElementData::setTerminalFunction Override the terminal function by t_function.
Definition elementdata.cpp:506
int m_contact_count
Definition elementdata.h:284
ElementData::TerminalType m_override_terminal_type
Definition elementdata.h:290
bool m_terminal_function_is_override
Definition elementdata.h:294
bool operator==(const ElementData &data) const
Definition elementdata.cpp:568
static ElementData::SlaveType slaveContactGroupSubtypeFromString(const QString &string)
ElementData::slaveContactGroupSubtypeFromString Convert a string from XML to SlaveType for slave cont...
Definition elementdata.cpp:1125
static ElementData::SlaveState slaveStateFromString(const QString &string)
Definition elementdata.cpp:812
static QString translatedTerminalType(ElementData::TerminalType type)
Definition elementdata.cpp:867
PlcMasterData plcMasterData() const
Definition elementdata.h:265
QDomElement kindInfoToXml(QDomDocument &document)
Definition elementdata.cpp:67
int m_max_slaves
Definition elementdata.h:273
ElementData::SlaveState m_slave_state
Definition elementdata.h:279
bool fromXml(const QDomElement &xml_element) override
ElementData::fromXml load properties from xml element. The tag name of xml_element must be definition...
Definition elementdata.cpp:45
static ElementData::SlaveType slaveTypeFromString(const QString &string)
Definition elementdata.cpp:775
bool m_slave_contact_groups_enabled
Whether slave contact groups table is active.
Definition elementdata.h:274
static QString translatedPlcIOType(PlcIOType type)
ElementData::translatedPlcIOType Return translated string for PlcIOType.
Definition elementdata.cpp:1183
SlaveType
Definition elementdata.h:61
@ Power
Definition elementdata.h:63
@ PLCSlave
Definition elementdata.h:67
@ DelayOff
Definition elementdata.h:65
@ SSimple
Definition elementdata.h:62
@ DelayOn
Definition elementdata.h:64
@ delayOnOff
Definition elementdata.h:66
bool m_override_terminal_led
Definition elementdata.h:298
ElementData::TerminalFunction terminalFunction() const
ElementData::terminalFunction.
Definition elementdata.cpp:520
bool m_terminal_type_is_override
Definition elementdata.h:291
static PlcIOType plcIOTypeFromString(const QString &string)
ElementData::plcIOTypeFromString Convert a string from XML to PlcIOType.
Definition elementdata.cpp:1157
static QString slaveTypeToString(ElementData::SlaveType type)
Definition elementdata.cpp:756
static QString slaveStateToString(ElementData::SlaveState type)
Definition elementdata.cpp:797
Definition nameslist.h:37
PropertiesInterface()
PropertiesInterface::PropertiesInterface.
Definition propertiesinterface.cpp:23
The PlcIO struct Represents a single IO entry in a PLC master element.
Definition elementdata.h:93
QString crossRef
Auto-filled: slave reference.
Definition elementdata.h:98
QStringList effectiveTerminals() const
Return terminal labels, generating defaults (T1, T2...) if empty.
Definition elementdata.h:105
QStringList terminals
Terminal values T1, T2, ... (size = terminalCount).
Definition elementdata.h:100
bool operator!=(const PlcIO &other) const
Definition elementdata.h:124
QString address
e.g. "1.0", "1.1"
Definition elementdata.h:95
QString functionText
e.g. "Motor K1"
Definition elementdata.h:96
int terminalCount
Number of terminals for this IO (1-4).
Definition elementdata.h:99
bool operator==(const PlcIO &other) const
Definition elementdata.h:115
PlcIOType type
Definition elementdata.h:94
QString comment
Optional comment.
Definition elementdata.h:97
The PlcMasterData struct Stores all PLC master configuration: IO table, display settings,...
Definition elementdata.h:134
qreal rowHeight
Row height in mm.
Definition elementdata.h:138
QMap< int, qreal > colWidths
Column widths (key: column index).
Definition elementdata.h:137
QVector< PlcIO > ios
All IO entries.
Definition elementdata.h:135
QFont cellFont
Font for cell content.
Definition elementdata.h:141
QStringList columnNames
Custom column header names.
Definition elementdata.h:142
bool showHeaders
Show column headers on sheet.
Definition elementdata.h:144
QList< int > breakPositions
Up to 4 break positions (IO index after which to break, 0 = disabled).
Definition elementdata.h:136
QMap< int, bool > colVisible
Column visibility (key: column index).
Definition elementdata.h:139
PlcMasterData()
Definition elementdata.h:146
QList< int > columnOrder
Column display order (logical indices).
Definition elementdata.h:143
bool operator==(const PlcMasterData &other) const
Definition elementdata.h:151
QFont headerFont
Font for column headers.
Definition elementdata.h:140
bool operator!=(const PlcMasterData &other) const
Definition elementdata.h:163
The SlaveContactGroup struct Defines a contact group that a master element provides for slave element...
Definition elementdata.h:195
bool operator==(const SlaveContactGroup &other) const
Definition elementdata.h:202
QStringList labels
Terminal labels (T1-T20), max 20 entries.
Definition elementdata.h:200
int contactCount
Number of displayed contacts.
Definition elementdata.h:198
bool operator!=(const SlaveContactGroup &other) const
Definition elementdata.h:209
int terminalCount
Number of terminals (Anschlüsse).
Definition elementdata.h:199
SlaveType subtype
Contact subtype (Simple/Power/Delay*).
Definition elementdata.h:197
SlaveState type
Contact type (NO/NC/SW/Other).
Definition elementdata.h:196