QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
ParameterMetaData.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QJsonValue>
4#include <QtCore/QObject>
5#include <QtCore/QStringView>
6#include <QtCore/QVersionNumber>
7
8#include "FactMetaData.h"
9
10class QJsonObject;
11
12class ParameterMetaData : public QObject
13{
14public:
15 explicit ParameterMetaData(QObject *parent = nullptr);
16 ~ParameterMetaData() override;
17
18 void loadParameterFactMetaDataFile(const QString &metaDataFile);
20
21 static QVersionNumber versionFromMetaDataFile(const QString &metaDataFile);
22 static QVersionNumber versionFromJsonData(const QByteArray &jsonData);
23 static QVersionNumber versionFromJsonData(const QByteArray &jsonData, bool *validJson);
24 static QVersionNumber versionFromFileName(const QString &fileName);
25
27
28protected:
29 virtual void parseParameterJson(const QJsonObject &json) = 0;
30 virtual FactMetaData *_lookupMetaData(const QString &name, FactMetaData::ValueType_t type);
31 virtual FactMetaData *_createDefaultMetaData(const QString &name, FactMetaData::ValueType_t type);
32 virtual void _postProcessMetaData(const QString &name, FactMetaData *metaData);
33
36 QString value;
37 QString description;
38 };
39
40 static bool textToBool(QStringView text) { return text.compare(u"true", Qt::CaseInsensitive) == 0; }
41 static bool jsonToBool(const QJsonValue &value) { return value.isBool() ? value.toBool() : textToBool(value.toString()); }
42 static bool setRawConvertedValue(FactMetaData *metaData, const QString &rawText, void (FactMetaData::*setter)(const QVariant &));
43 static void setEnumFromPairs(FactMetaData *metaData, const QList<ValueDescPair> &pairs);
44 static void setBitmaskFromPairs(FactMetaData *metaData, const QList<ValueDescPair> &pairs);
45
48};
QHash< QString, FactMetaData * > NameToMetaDataMap_t
QMap< QString, QString > DefineMap_t
virtual FactMetaData * _createDefaultMetaData(const QString &name, FactMetaData::ValueType_t type)
virtual void parseParameterJson(const QJsonObject &json)=0
static const FactMetaData::DefineMap_t kEmptyDefines
static bool textToBool(QStringView text)
static void setBitmaskFromPairs(FactMetaData *metaData, const QList< ValueDescPair > &pairs)
static QVersionNumber versionFromMetaDataFile(const QString &metaDataFile)
static QVersionNumber versionFromJsonData(const QByteArray &jsonData)
static bool setRawConvertedValue(FactMetaData *metaData, const QString &rawText, void(FactMetaData::*setter)(const QVariant &))
FactMetaData::NameToMetaDataMap_t _cachedMetaData
FactMetaData * getMetaDataForFact(const QString &name, FactMetaData::ValueType_t type)
static void setEnumFromPairs(FactMetaData *metaData, const QList< ValueDescPair > &pairs)
void loadParameterFactMetaDataFile(const QString &metaDataFile)
virtual FactMetaData * _lookupMetaData(const QString &name, FactMetaData::ValueType_t type)
static bool jsonToBool(const QJsonValue &value)
virtual void _postProcessMetaData(const QString &name, FactMetaData *metaData)
static QVersionNumber versionFromFileName(const QString &fileName)
~ParameterMetaData() override
A value/description pair used for enum and bitmask entries.
QString description
Human-readable label.
QString value
Numeric value as string (enum code or bitmask index)