Files
qelectrotech-source-mirror/sources/properties/elementdata.h
Tadeáš Pilař 1a2fea84ff Add 'Other' option for slave device contact type
This option alows for displaying XRef without contact drawing.
This is useful for spliting one physical part into multiple
logical elements when the slave element is not a switch.
2022-06-23 05:41:33 +02:00

167 lines
4.8 KiB
C++

/*
Copyright 2006-2021 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 <http://www.gnu.org/licenses/>.
*/
#ifndef ELEMENTDATA_H
#define ELEMENTDATA_H
#include "propertiesinterface.h"
#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};
Q_ENUM(Type)
Q_DECLARE_FLAGS(Types, Type)
enum MasterType {
Coil,
Protection,
Commutator
};
Q_ENUM(MasterType)
enum SlaveType {
SSimple,
Power,
DelayOn,
DelayOff,
delayOnOff
};
Q_ENUM(SlaveType)
enum SlaveState {
NO,
NC,
SW,
Other
};
Q_ENUM(SlaveState)
enum TerminalType {
TTGeneric,
TTFuse,
TTSectional,
TTDiode,
TTGround
};
Q_ENUM(TerminalType)
enum TerminalFunction {
TFGeneric,
TFPhase,
TFNeutral,
};
Q_ENUM(TerminalFunction)
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;
QString typeToString() const;
static QString typeToString(ElementData::Type type);
static ElementData::Type typeFromString(const QString &string);
QString masterTypeToString() const;
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);
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);
// 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;
ElementData::MasterType m_master_type = ElementData::Coil;
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;
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;
private:
void kindInfoFromXml(const QDomElement &xml_element);
};
Q_DECLARE_OPERATORS_FOR_FLAGS(ElementData::Types)
#endif // ELEMENTDATA_H