Add userProperties

This commit is contained in:
Martin Marmsoler
2021-03-04 19:18:28 +01:00
parent ed8c1dea9d
commit 9d4b90da1a
45 changed files with 617 additions and 453 deletions

View File

@@ -26,6 +26,52 @@
#include "sources/qet.h"
#include <QUuid>
//struct Property {
// enum class Type {
// String,
// Int,
// Double,
// Bool,
// Uuid,
// Color
// };
// Property(enum Type type, QVariant& value): type(type), value(value) {};
// enum Type type;
// QVariant value;
//};
//class Property_T
//{
//public:
// enum class Type {
// String,
// Int,
// Double,
// Bool,
// Uuid,
// Color
// };
// Property_T(enum Type type): mType(type)
// {}
//public:
// enum Type mType;
//};
//class PropertyDouble: Property_T
//{
//public:
// PropertyDouble(double& value): Property_T(Property_T::Type::Double), mValue(value) {};
//public:
// double mValue;
//};
class DomElement: public QDomElement
{
public:
DomElement(): QDomElement() {};
DomElement(QDomElement& e): QDomElement(e) {};
};
/**
@brief The PropertiesInterface class
This class is an interface for have common way
@@ -34,7 +80,7 @@
class PropertiesInterface
{
public:
PropertiesInterface();
PropertiesInterface(const QString& tagname = "Properties");
virtual ~PropertiesInterface();
/**
@brief toSettings
@@ -60,26 +106,26 @@ class PropertiesInterface
@param xml_document
@return QDomElement
*/
virtual QDomElement toXml (QDomDocument &xml_document) const =0;
virtual QDomElement toXml (QDomDocument &xml_document) const;
/**
@brief fromXml
load properties to xml element
@param xml_element
@return true / false
*/
virtual bool fromXml (const QDomElement &xml_element) =0;
virtual bool fromXml (const QDomElement &xml_element);
static bool valideXml(QDomElement& element);
/*!
* 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);
static QDomElement createXmlProperty(const QString& name, const QString value);
static QDomElement createXmlProperty(const QString& name, const char* value);
static QDomElement createXmlProperty(const QString& name, const int value);
static QDomElement createXmlProperty(const QString& name, const double value);
static QDomElement createXmlProperty(const QString& name, const bool value);
static QDomElement createXmlProperty(const QString& name, const QUuid value);
static QDomElement createXmlProperty(const QString& name, const QColor value);
static QDomElement property(const QDomElement& e, const QString& name);
static bool attribute(const QDomElement& e, const QString& attribute_name, const QString& type, QString* attr);
@@ -91,17 +137,23 @@ class PropertiesInterface
// = 4
};
static PropertyFlags propertyInteger(const QString& value, int* entry = nullptr);
static PropertyFlags propertyInteger(const QDomElement &e, const QString& attribute_name, int *entier = nullptr);
static PropertyFlags propertyDouble(const QString& value, double* entry = 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 QString& value, bool* entry = nullptr);
static PropertyFlags propertyBool(const QDomElement &e, const QString& attribute_name, bool* boolean = nullptr);
static PropertyFlags propertyUuid(const QString& value, QUuid* entry = nullptr);
static PropertyFlags propertyUuid(const QDomElement &e, const QString& attribute_name, QUuid* uuid = nullptr);
static PropertyFlags propertyColor(const QString& value, QColor* entry = nullptr);
static PropertyFlags propertyColor(const QDomElement &e, const QString& attribute_name, QColor* color = nullptr);
static bool validXmlProperty(const QDomElement& e);
QVariant XmlProperty(const QDomElement& element);
void setTagName(const QString& tagname);
/**
Permet de convertir une chaine de caracteres ("n", "s", "e" ou "w")
@@ -118,6 +170,15 @@ class PropertiesInterface
@return une chaine de caractere representant l'orientation
*/
static QString orientationToString(Qet::Orientation o);
private:
virtual void toXmlPriv (QDomElement &e) const =0;
virtual bool fromXmlPriv (const QDomElement &e) =0;
void propertiesToXml(QDomElement& e) const;
bool propertiesFromXml (const QDomElement &e);
QHash<QString, QVariant> properties;
QString mTagName{""};
};
#endif // PROPERTIESINTERFACE_H