Commit b33fb23e authored by Don Gagne's avatar Don Gagne

Add bit mask meta data support

parent 3756beb8
...@@ -223,6 +223,26 @@ QVariantList Fact::enumValues(void) const ...@@ -223,6 +223,26 @@ QVariantList Fact::enumValues(void) const
} }
} }
QStringList Fact::bitmaskStrings(void) const
{
if (_metaData) {
return _metaData->bitmaskStrings();
} else {
qWarning() << "Meta data pointer missing";
return QStringList();
}
}
QVariantList Fact::bitmaskValues(void) const
{
if (_metaData) {
return _metaData->bitmaskValues();
} else {
qWarning() << "Meta data pointer missing";
return QVariantList();
}
}
QString Fact::_variantToString(const QVariant& variant) const QString Fact::_variantToString(const QVariant& variant) const
{ {
QString valueString; QString valueString;
......
...@@ -47,6 +47,8 @@ public: ...@@ -47,6 +47,8 @@ public:
const Fact& operator=(const Fact& other); const Fact& operator=(const Fact& other);
Q_PROPERTY(int componentId READ componentId CONSTANT) Q_PROPERTY(int componentId READ componentId CONSTANT)
Q_PROPERTY(QStringList bitmaskStrings READ bitmaskStrings NOTIFY bitmaskStringsChanged)
Q_PROPERTY(QVariantList bitmaskValues READ bitmaskValues NOTIFY bitmaskValuesChanged)
Q_PROPERTY(int decimalPlaces READ decimalPlaces CONSTANT) Q_PROPERTY(int decimalPlaces READ decimalPlaces CONSTANT)
Q_PROPERTY(QVariant defaultValue READ cookedDefaultValue CONSTANT) Q_PROPERTY(QVariant defaultValue READ cookedDefaultValue CONSTANT)
Q_PROPERTY(QString defaultValueString READ cookedDefaultValueString CONSTANT) Q_PROPERTY(QString defaultValueString READ cookedDefaultValueString CONSTANT)
...@@ -74,7 +76,7 @@ public: ...@@ -74,7 +76,7 @@ public:
/// Convert and validate value /// Convert and validate value
/// @param convertOnly true: validate type conversion only, false: validate against meta data as well /// @param convertOnly true: validate type conversion only, false: validate against meta data as well
Q_INVOKABLE QString validate(const QString& cookedValue, bool convertOnly); Q_INVOKABLE QString validate(const QString& cookedValue, bool convertOnly);
QVariant cookedValue (void) const; /// Value after translation QVariant cookedValue (void) const; /// Value after translation
QVariant rawValue (void) const { return _rawValue; } /// value prior to translation, careful QVariant rawValue (void) const { return _rawValue; } /// value prior to translation, careful
int componentId (void) const; int componentId (void) const;
...@@ -83,6 +85,8 @@ public: ...@@ -83,6 +85,8 @@ public:
QVariant cookedDefaultValue (void) const; QVariant cookedDefaultValue (void) const;
bool defaultValueAvailable (void) const; bool defaultValueAvailable (void) const;
QString cookedDefaultValueString(void) const; QString cookedDefaultValueString(void) const;
QStringList bitmaskStrings (void) const;
QVariantList bitmaskValues (void) const;
int enumIndex (void); // This is not const, since an unknown value can modify the enum lists int enumIndex (void); // This is not const, since an unknown value can modify the enum lists
QStringList enumStrings (void) const; QStringList enumStrings (void) const;
QString enumStringValue (void); // This is not const, since an unknown value can modify the enum lists QString enumStringValue (void); // This is not const, since an unknown value can modify the enum lists
...@@ -125,6 +129,8 @@ public: ...@@ -125,6 +129,8 @@ public:
void _setName(const QString& name) { _name = name; } void _setName(const QString& name) { _name = name; }
signals: signals:
void bitmaskStringsChanged(void);
void bitmaskValuesChanged(void);
void enumStringsChanged(void); void enumStringsChanged(void);
void enumValuesChanged(void); void enumValuesChanged(void);
......
...@@ -83,6 +83,8 @@ const FactMetaData& FactMetaData::operator=(const FactMetaData& other) ...@@ -83,6 +83,8 @@ const FactMetaData& FactMetaData::operator=(const FactMetaData& other)
_decimalPlaces = other._decimalPlaces; _decimalPlaces = other._decimalPlaces;
_rawDefaultValue = other._rawDefaultValue; _rawDefaultValue = other._rawDefaultValue;
_defaultValueAvailable = other._defaultValueAvailable; _defaultValueAvailable = other._defaultValueAvailable;
_bitmaskStrings = other._bitmaskStrings;
_bitmaskValues = other._bitmaskValues;
_enumStrings = other._enumStrings; _enumStrings = other._enumStrings;
_enumValues = other._enumValues; _enumValues = other._enumValues;
_group = other._group; _group = other._group;
...@@ -306,6 +308,24 @@ bool FactMetaData::convertAndValidateCooked(const QVariant& cookedValue, bool co ...@@ -306,6 +308,24 @@ bool FactMetaData::convertAndValidateCooked(const QVariant& cookedValue, bool co
return convertOk && errorString.isEmpty(); return convertOk && errorString.isEmpty();
} }
void FactMetaData::setBitmaskInfo(const QStringList& strings, const QVariantList& values)
{
if (strings.count() != values.count()) {
qWarning() << "Count mismatch strings:values" << strings.count() << values.count();
return;
}
_bitmaskStrings = strings;
_bitmaskValues = values;
_setBuiltInTranslator();
}
void FactMetaData::addBitmaskInfo(const QString& name, const QVariant& value)
{
_bitmaskStrings << name;
_bitmaskValues << value;
}
void FactMetaData::setEnumInfo(const QStringList& strings, const QVariantList& values) void FactMetaData::setEnumInfo(const QStringList& strings, const QVariantList& values)
{ {
if (strings.count() != values.count()) { if (strings.count() != values.count()) {
...@@ -318,6 +338,12 @@ void FactMetaData::setEnumInfo(const QStringList& strings, const QVariantList& v ...@@ -318,6 +338,12 @@ void FactMetaData::setEnumInfo(const QStringList& strings, const QVariantList& v
_setBuiltInTranslator(); _setBuiltInTranslator();
} }
void FactMetaData::addEnumInfo(const QString& name, const QVariant& value)
{
_enumStrings << name;
_enumValues << value;
}
void FactMetaData::setTranslators(Translator rawTranslator, Translator cookedTranslator) void FactMetaData::setTranslators(Translator rawTranslator, Translator cookedTranslator)
{ {
_rawTranslator = rawTranslator; _rawTranslator = rawTranslator;
...@@ -342,12 +368,6 @@ void FactMetaData::_setBuiltInTranslator(void) ...@@ -342,12 +368,6 @@ void FactMetaData::_setBuiltInTranslator(void)
} }
} }
void FactMetaData::addEnumInfo(const QString& name, const QVariant& value)
{
_enumStrings << name;
_enumValues << value;
}
QVariant FactMetaData::_degreesToRadians(const QVariant& degrees) QVariant FactMetaData::_degreesToRadians(const QVariant& degrees)
{ {
return QVariant(degrees.toDouble() * (M_PI / 180.0)); return QVariant(degrees.toDouble() * (M_PI / 180.0));
......
...@@ -64,6 +64,8 @@ public: ...@@ -64,6 +64,8 @@ public:
QVariant rawDefaultValue (void) const; QVariant rawDefaultValue (void) const;
QVariant cookedDefaultValue (void) const { return _rawTranslator(rawDefaultValue()); } QVariant cookedDefaultValue (void) const { return _rawTranslator(rawDefaultValue()); }
bool defaultValueAvailable (void) const { return _defaultValueAvailable; } bool defaultValueAvailable (void) const { return _defaultValueAvailable; }
QStringList bitmaskStrings (void) const { return _bitmaskStrings; }
QVariantList bitmaskValues (void) const { return _bitmaskValues; }
QStringList enumStrings (void) const { return _enumStrings; } QStringList enumStrings (void) const { return _enumStrings; }
QVariantList enumValues (void) const { return _enumValues; } QVariantList enumValues (void) const { return _enumValues; }
QString group (void) const { return _group; } QString group (void) const { return _group; }
...@@ -83,11 +85,15 @@ public: ...@@ -83,11 +85,15 @@ public:
Translator rawTranslator (void) const { return _rawTranslator; } Translator rawTranslator (void) const { return _rawTranslator; }
Translator cookedTranslator (void) const { return _cookedTranslator; } Translator cookedTranslator (void) const { return _cookedTranslator; }
/// Used to add new values to the bitmask lists after the meta data has been loaded
void addBitmaskInfo(const QString& name, const QVariant& value);
/// Used to add new values to the enum lists after the meta data has been loaded /// Used to add new values to the enum lists after the meta data has been loaded
void addEnumInfo(const QString& name, const QVariant& value); void addEnumInfo(const QString& name, const QVariant& value);
void setDecimalPlaces (int decimalPlaces) { _decimalPlaces = decimalPlaces; } void setDecimalPlaces (int decimalPlaces) { _decimalPlaces = decimalPlaces; }
void setRawDefaultValue (const QVariant& rawDefaultValue); void setRawDefaultValue (const QVariant& rawDefaultValue);
void setBitmaskInfo (const QStringList& strings, const QVariantList& values);
void setEnumInfo (const QStringList& strings, const QVariantList& values); void setEnumInfo (const QStringList& strings, const QVariantList& values);
void setGroup (const QString& group) { _group = group; } void setGroup (const QString& group) { _group = group; }
void setLongDescription (const QString& longDescription) { _longDescription = longDescription;} void setLongDescription (const QString& longDescription) { _longDescription = longDescription;}
...@@ -128,6 +134,8 @@ private: ...@@ -128,6 +134,8 @@ private:
int _decimalPlaces; int _decimalPlaces;
QVariant _rawDefaultValue; QVariant _rawDefaultValue;
bool _defaultValueAvailable; bool _defaultValueAvailable;
QStringList _bitmaskStrings;
QVariantList _bitmaskValues;
QStringList _enumStrings; QStringList _enumStrings;
QVariantList _enumValues; QVariantList _enumValues;
QString _group; QString _group;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment