2014-04-11 09:51:21 +00:00
|
|
|
/*
|
2020-10-17 20:25:30 +02:00
|
|
|
Copyright 2006-2020 The QElectroTech Team
|
|
|
|
This file is part of QElectroTech.
|
2014-04-11 09:51:21 +00:00
|
|
|
|
2020-10-17 20:25:30 +02:00
|
|
|
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.
|
2014-04-11 09:51:21 +00:00
|
|
|
|
2020-10-17 20:25:30 +02:00
|
|
|
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.
|
2014-04-11 09:51:21 +00:00
|
|
|
|
2020-10-17 20:25:30 +02:00
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
2014-04-11 09:51:21 +00:00
|
|
|
*/
|
|
|
|
#ifndef PROPERTIESINTERFACE_H
|
|
|
|
#define PROPERTIESINTERFACE_H
|
|
|
|
|
|
|
|
#include <QString>
|
|
|
|
#include <QSettings>
|
2020-10-16 11:43:45 +02:00
|
|
|
#include <QColor>
|
2014-04-11 09:51:21 +00:00
|
|
|
#include <QDomElement>
|
2020-10-16 11:43:45 +02:00
|
|
|
#include <limits>
|
|
|
|
#include "qet.h"
|
|
|
|
#include <QUuid>
|
2014-04-11 09:51:21 +00:00
|
|
|
|
|
|
|
/**
|
2020-10-17 20:25:30 +02:00
|
|
|
@brief The PropertiesInterface class
|
|
|
|
This class is an interface for have common way
|
|
|
|
to use properties in QElectroTech
|
2020-07-19 20:05:13 +02:00
|
|
|
*/
|
2014-04-11 09:51:21 +00:00
|
|
|
class PropertiesInterface
|
|
|
|
{
|
2020-10-17 20:25:30 +02:00
|
|
|
public:
|
|
|
|
PropertiesInterface();
|
|
|
|
virtual ~PropertiesInterface();
|
|
|
|
/**
|
|
|
|
@brief toSettings
|
|
|
|
Save properties to setting file.
|
|
|
|
@param settings : is use for prefix a word
|
|
|
|
befor the name of each paramètre
|
|
|
|
@param QString
|
|
|
|
*/
|
|
|
|
virtual void toSettings (QSettings &settings,
|
|
|
|
const QString = QString()) const =0;
|
|
|
|
/**
|
|
|
|
@brief fromSettings
|
|
|
|
load properties to setting file.
|
|
|
|
@param settings : is use for prefix a word
|
|
|
|
befor the name of each paramètre
|
|
|
|
@param QString
|
|
|
|
*/
|
|
|
|
virtual void fromSettings (const QSettings &settings,
|
|
|
|
const QString = QString()) =0;
|
|
|
|
/**
|
|
|
|
@brief toXml
|
|
|
|
Save properties to xml element
|
|
|
|
@param xml_document
|
|
|
|
@return QDomElement
|
|
|
|
*/
|
|
|
|
virtual QDomElement toXml (QDomDocument &xml_document) const =0;
|
|
|
|
/**
|
|
|
|
@brief fromXml
|
|
|
|
load properties to xml element
|
|
|
|
@param xml_element
|
|
|
|
@return true / false
|
|
|
|
*/
|
|
|
|
virtual bool fromXml (const QDomElement &xml_element) =0;
|
|
|
|
static bool valideXml(QDomElement& element);
|
2020-10-16 11:43:45 +02:00
|
|
|
|
2020-10-17 20:25:30 +02:00
|
|
|
/*!
|
|
|
|
* Use this functions to add properties to the xml document
|
|
|
|
*/
|
|
|
|
static QDomElement createXmlProperty(QDomDocument& doc, const QString& name, const QString value);
|
|
|
|
static QDomElement createXmlProperty(QDomDocument &doc, const QString& name, const char* value);
|
|
|
|
static QDomElement createXmlProperty(QDomDocument& doc, const QString& name, const int value);
|
|
|
|
static QDomElement createXmlProperty(QDomDocument& doc, const QString& name, const double value);
|
|
|
|
static QDomElement createXmlProperty(QDomDocument& doc, const QString& name, const bool value);
|
|
|
|
static QDomElement createXmlProperty(QDomDocument& doc, const QString& name, const QUuid value);
|
|
|
|
static QDomElement createXmlProperty(QDomDocument& doc, const QString& name, const QColor value);
|
2020-10-16 11:43:45 +02:00
|
|
|
|
2020-10-17 20:25:30 +02:00
|
|
|
static QDomElement property(const QDomElement& e, const QString& name);
|
|
|
|
static bool attribute(const QDomElement& e, const QString& attribute_name, const QString& type, QString* attr);
|
2020-10-16 11:43:45 +02:00
|
|
|
|
2020-10-17 20:25:30 +02:00
|
|
|
enum PropertyFlags {
|
|
|
|
Success = 0,
|
|
|
|
NotFound = 1,
|
|
|
|
NoValidConversion = 2,
|
|
|
|
// = 4
|
|
|
|
};
|
2020-10-16 11:43:45 +02:00
|
|
|
|
2020-10-17 20:25:30 +02:00
|
|
|
/*!
|
|
|
|
* Try not using the default Value feature. It is better to initialize the class members in the class definition!
|
|
|
|
*/
|
|
|
|
static PropertyFlags propertyInteger(const QDomElement &e, const QString& attribute_name, int *entier = nullptr);
|
|
|
|
static PropertyFlags propertyDouble(const QDomElement &e, const QString& attribute_name, double *reel = nullptr);
|
|
|
|
static PropertyFlags propertyString(const QDomElement& e, const QString& attribute_name, QString* string = nullptr);
|
|
|
|
static PropertyFlags propertyBool(const QDomElement &e, const QString& attribute_name, bool* boolean = nullptr);
|
|
|
|
static PropertyFlags propertyUuid(const QDomElement &e, const QString& attribute_name, QUuid* uuid = nullptr);
|
|
|
|
static PropertyFlags propertyColor(const QDomElement &e, const QString& attribute_name, QColor* color = nullptr);
|
2020-10-16 11:43:45 +02:00
|
|
|
|
|
|
|
|
2020-10-17 20:25:30 +02:00
|
|
|
static bool validXmlProperty(const QDomElement& e);
|
2020-10-16 11:43:45 +02:00
|
|
|
|
2020-10-17 20:25:30 +02:00
|
|
|
QVariant XmlProperty(const QDomElement& element);
|
2020-10-16 11:43:45 +02:00
|
|
|
|
2020-10-17 20:25:30 +02:00
|
|
|
/**
|
|
|
|
Permet de convertir une chaine de caracteres ("n", "s", "e" ou "w")
|
|
|
|
en orientation. Si la chaine fait plusieurs caracteres, seul le
|
|
|
|
premier est pris en compte. En cas d'incoherence, Qet::North est
|
|
|
|
retourne.
|
|
|
|
@param s Chaine de caractere cense representer une orientation
|
|
|
|
@return l'orientation designee par la chaine de caractere
|
|
|
|
*/
|
|
|
|
static Qet::Orientation orientationFromString(const QString &s);
|
2020-10-16 11:43:45 +02:00
|
|
|
|
2020-10-17 20:25:30 +02:00
|
|
|
/**
|
|
|
|
@param o une orientation
|
|
|
|
@return une chaine de caractere representant l'orientation
|
|
|
|
*/
|
|
|
|
static QString orientationToString(Qet::Orientation o);
|
2014-04-11 09:51:21 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif // PROPERTIESINTERFACE_H
|