167 lines
4.8 KiB
C
Raw Normal View History

/*
2024-03-29 10:09:48 +01:00
Copyright 2006-2024 The QElectroTech Team
2021-02-13 13:07:36 +01:00
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 <http://www.gnu.org/licenses/>.
*/
#ifndef ELEMENTDATA_H
#define ELEMENTDATA_H
#include "propertiesinterface.h"
2021-02-13 13:07:36 +01:00
#include "../diagramcontext.h"
#include "../NameList/nameslist.h"
/**
* @brief The ElementData class
* WARNING
* This class inherit from PropertiesInterface but
* only fromXml is actually reimplemented.
*/
class ElementData : public PropertiesInterface
{
Q_GADGET
public:
enum Type {
Simple = 1,
NextReport = 2,
PreviousReport = 4,
AllReport = 6,
Master = 8,
Slave = 16,
Terminale = 32,
Thumbnail = 64};
2021-02-13 13:07:36 +01:00
Q_ENUM(Type)
Q_DECLARE_FLAGS(Types, Type)
2021-02-13 13:07:36 +01:00
enum MasterType {
Coil,
Protection,
Commutator
};
Q_ENUM(MasterType)
enum SlaveType {
SSimple,
Power,
DelayOn,
DelayOff,
delayOnOff
};
Q_ENUM(SlaveType)
enum SlaveState {
NO,
NC,
SW,
Other
2021-02-13 13:07:36 +01:00
};
Q_ENUM(SlaveState)
enum TerminalType {
TTGeneric,
TTFuse,
TTSectional,
TTDiode,
TTGround
};
Q_ENUM(TerminalType)
enum TerminalFunction {
TFGeneric,
TFPhase,
TFNeutral,
};
Q_ENUM(TerminalFunction)
2021-02-13 13:07:36 +01:00
ElementData() {}
~ElementData() override {}
void toSettings(QSettings &settings, const QString prefix = QString()) const override;
void fromSettings(const QSettings &settings, const QString prefix = QString()) override;
QDomElement toXml(QDomDocument &xml_element) const override;
bool fromXml(const QDomElement &xml_element) override;
QDomElement kindInfoToXml(QDomDocument &document);
void setTerminalType(ElementData::TerminalType t_type);
ElementData::TerminalType terminalType() const;
void setTerminalFunction(ElementData::TerminalFunction t_function);
ElementData::TerminalFunction terminalFunction() const;
void setTerminalLED(bool led);
bool terminalLed() const;
bool terminalPropertiesIsOverrided() const;
bool operator==(const ElementData &data) const;
bool operator!=(const ElementData &data) const;
2021-02-13 13:07:36 +01:00
QString typeToString() const;
2021-02-13 13:07:36 +01:00
static QString typeToString(ElementData::Type type);
static ElementData::Type typeFromString(const QString &string);
QString masterTypeToString() const;
2021-02-13 13:07:36 +01:00
static QString masterTypeToString(ElementData::MasterType type);
static ElementData::MasterType masterTypeFromString(const QString &string);
static QString slaveTypeToString (ElementData::SlaveType type);
static ElementData::SlaveType slaveTypeFromString(const QString &string);
static QString slaveStateToString(ElementData::SlaveState type);
static ElementData::SlaveState slaveStateFromString(const QString &string);
static QString terminalTypeToString(ElementData::TerminalType type);
static ElementData::TerminalType terminalTypeFromString(const QString &string);
2021-06-07 19:26:41 +02:00
static QString translatedTerminalType(ElementData::TerminalType type);
static QString terminalFunctionToString(ElementData::TerminalFunction function);
static ElementData::TerminalFunction terminalFunctionFromString(const QString &string);
static QString translatedTerminalFunction(ElementData::TerminalFunction function);
2021-02-13 13:07:36 +01:00
// must be public, because this class is a private member
// of Element/ element editor and they must access this data
ElementData::Type m_type = ElementData::Simple;
2021-02-13 13:07:36 +01:00
ElementData::MasterType m_master_type = ElementData::Coil;
2021-02-13 13:07:36 +01:00
ElementData::SlaveType m_slave_type = ElementData::SSimple;
ElementData::SlaveState m_slave_state = ElementData::NO;
ElementData::TerminalType m_terminal_type = ElementData::TTGeneric;
ElementData::TerminalFunction m_terminal_function = ElementData::TFGeneric;
2021-02-13 13:07:36 +01:00
int m_contact_count = 1;
DiagramContext m_informations;
NamesList m_names_list;
QString m_drawing_information;
private:
ElementData::TerminalType m_override_terminal_type = ElementData::TTGeneric;
bool m_terminal_type_is_override = false;
ElementData::TerminalFunction m_override_terminal_function = ElementData::TFGeneric;
bool m_terminal_function_is_override = false;
bool m_terminal_led = false;
bool m_terminal_led_is_override = false;
bool m_override_terminal_led = false;
2021-02-13 13:07:36 +01:00
private:
void kindInfoFromXml(const QDomElement &xml_element);
};
Q_DECLARE_OPERATORS_FOR_FLAGS(ElementData::Types)
2021-02-13 13:07:36 +01:00
#endif // ELEMENTDATA_H