From f3509481dca1e5b2e9a11d31f6f5b42ff9f6b4b8 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Tue, 15 Dec 2015 20:25:25 -0800 Subject: [PATCH] If enum value unknown, add to list --- src/FactSystem/Fact.cc | 11 +++++++++-- src/FactSystem/Fact.h | 11 +++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/FactSystem/Fact.cc b/src/FactSystem/Fact.cc index f3a617614..abbd3d021 100644 --- a/src/FactSystem/Fact.cc +++ b/src/FactSystem/Fact.cc @@ -165,7 +165,7 @@ QVariant Fact::cookedValue(void) const } } -QString Fact::enumStringValue(void) const +QString Fact::enumStringValue(void) { if (_metaData) { int enumIndex = this->enumIndex(); @@ -179,16 +179,23 @@ QString Fact::enumStringValue(void) const return QString(); } -int Fact::enumIndex(void) const +int Fact::enumIndex(void) { if (_metaData) { int index = 0; + foreach (QVariant enumValue, _metaData->enumValues()) { if (enumValue == rawValue()) { return index; } index ++; } + + // Current value is not in list, add it manually + _metaData->addEnumInfo(QString("Unknown: %1").arg(rawValue().toString()), rawValue()); + emit enumStringsChanged(); + emit enumValuesChanged(); + return index; } else { qWarning() << "Meta data pointer missing"; } diff --git a/src/FactSystem/Fact.h b/src/FactSystem/Fact.h index 4acd5f70d..f2e311c8f 100644 --- a/src/FactSystem/Fact.h +++ b/src/FactSystem/Fact.h @@ -52,9 +52,9 @@ public: Q_PROPERTY(QString defaultValueString READ defaultValueString CONSTANT) Q_PROPERTY(bool defaultValueAvailable READ defaultValueAvailable CONSTANT) Q_PROPERTY(int enumIndex READ enumIndex WRITE setEnumIndex NOTIFY valueChanged) - Q_PROPERTY(QStringList enumStrings READ enumStrings CONSTANT) + Q_PROPERTY(QStringList enumStrings READ enumStrings NOTIFY enumStringsChanged) Q_PROPERTY(QString enumStringValue READ enumStringValue WRITE setEnumStringValue NOTIFY valueChanged) - Q_PROPERTY(QVariantList enumValues READ enumValues CONSTANT) + Q_PROPERTY(QVariantList enumValues READ enumValues NOTIFY enumValuesChanged) Q_PROPERTY(QString group READ group CONSTANT) Q_PROPERTY(QString longDescription READ longDescription CONSTANT) Q_PROPERTY(QVariant max READ max CONSTANT) @@ -81,9 +81,9 @@ public: QVariant defaultValue (void) const; bool defaultValueAvailable (void) const; QString defaultValueString (void) const; - int enumIndex (void) const; + int enumIndex (void); // This is not const, since an unknown value can modify the enum lists QStringList enumStrings (void) const; - QString enumStringValue (void) const; + QString enumStringValue (void); // This is not const, since an unknown value can modify the enum lists QVariantList enumValues (void) const; QString group (void) const; QString longDescription (void) const; @@ -120,6 +120,9 @@ public: void _setName(const QString& name) { _name = name; } signals: + void enumStringsChanged(void); + void enumValuesChanged(void); + /// QObject Property System signal for value property changes /// /// This signal is only meant for use by the QT property system. It should not be connected to by client code. -- 2.22.0