QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
KMLSchemaValidator.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QHash>
4#include <QtCore/QLoggingCategory>
5#include <QtCore/QSet>
6#include <QtCore/QStringList>
7
8class QDomDocument;
9class QDomElement;
10
11Q_DECLARE_LOGGING_CATEGORY(KMLSchemaValidatorLog)
12
13
16{
17public:
18 static KMLSchemaValidator *instance();
19
21 bool isValid = true;
22 QStringList errors;
23 QStringList warnings;
24
25 void addError(const QString &msg) { errors.append(msg); isValid = false; }
26 void addWarning(const QString &msg) { warnings.append(msg); }
27 };
28
30 ValidationResult validate(const QDomDocument &doc) const;
31
33 ValidationResult validateFile(const QString &kmlFile) const;
34
36 bool isValidEnumValue(const QString &enumTypeName, const QString &value) const;
37
39 QStringList validEnumValues(const QString &enumTypeName) const;
40
42 bool isValidElement(const QString &elementName) const;
43
45 QStringList validElements() const;
46
47private:
49 void loadSchema();
50 void parseSchemaDocument(const QDomDocument &schemaDoc);
51 void extractEnumTypes(const QDomElement &root);
52 void extractElements(const QDomElement &root);
53
54 void validateElement(const QDomElement &element, ValidationResult &result) const;
55 void validateCoordinates(const QString &coordString, ValidationResult &result) const;
56
57 QHash<QString, QStringList> _enumTypes; // enumTypeName -> valid values
58 QSet<QString> _validElements; // set of valid element names
59 bool _loaded = false;
60};
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)