From 4beb2964393ae595969d4e2f868c4e20e8642aed Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Wed, 13 Sep 2017 17:38:01 +0200 Subject: [PATCH] autogenerate the "index" property to not bother the plugin developer with it --- libguh/plugin/deviceplugin.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/libguh/plugin/deviceplugin.cpp b/libguh/plugin/deviceplugin.cpp index c3a45886..dbfcf6f7 100644 --- a/libguh/plugin/deviceplugin.cpp +++ b/libguh/plugin/deviceplugin.cpp @@ -289,9 +289,10 @@ QList DevicePlugin::supportedDevices() const QList eventTypes; // StateTypes + int index = 0; foreach (const QJsonValue &stateTypesJson, deviceClassObject.value("stateTypes").toArray()) { QJsonObject st = stateTypesJson.toObject(); - QStringList missingFields = verifyFields(QStringList() << "type" << "id" << "idName" << "name" << "index" << "defaultValue" << "eventTypeName", st); + QStringList missingFields = verifyFields(QStringList() << "type" << "id" << "idName" << "name" << "defaultValue" << "eventTypeName", st); if (!missingFields.isEmpty()) { qCWarning(dcDeviceManager) << "Skipping device class" << deviceClass.name() << "because of missing" << missingFields.join(", ") << "in stateType" << st; broken = true; @@ -301,7 +302,7 @@ QList DevicePlugin::supportedDevices() const QVariant::Type t = QVariant::nameToType(st.value("type").toString().toLatin1().data()); StateType stateType(st.value("id").toString()); stateType.setName(translateValue(m_metaData.value("idName").toString(), st.value("name").toString())); - stateType.setIndex(st.value("index").toInt()); + stateType.setIndex(index++); stateType.setType(t); QPair unitVerification = loadAndVerifyUnit(st.value("unit").toString()); if (!unitVerification.first) { @@ -374,9 +375,10 @@ QList DevicePlugin::supportedDevices() const deviceClass.setStateTypes(stateTypes); // ActionTypes + index = 0; foreach (const QJsonValue &actionTypesJson, deviceClassObject.value("actionTypes").toArray()) { QJsonObject at = actionTypesJson.toObject(); - QStringList missingFields = verifyFields(QStringList() << "id" << "name" << "index", at); + QStringList missingFields = verifyFields(QStringList() << "id" << "name", at); if (!missingFields.isEmpty()) { qCWarning(dcDeviceManager) << "Skipping device class" << deviceClass.name() << "because of missing" << missingFields.join(", ") << "in actionTypes"; broken = true; @@ -385,7 +387,7 @@ QList DevicePlugin::supportedDevices() const ActionType actionType(at.value("id").toString()); actionType.setName(translateValue(m_metaData.value("idName").toString(), at.value("name").toString())); - actionType.setIndex(at.value("index").toInt()); + actionType.setIndex(index++); QPair > paramVerification = parseParamTypes(at.value("paramTypes").toArray()); if (!paramVerification.first) { broken = true; @@ -399,9 +401,10 @@ QList DevicePlugin::supportedDevices() const deviceClass.setActionTypes(actionTypes); // EventTypes + index = 0; foreach (const QJsonValue &eventTypesJson, deviceClassObject.value("eventTypes").toArray()) { QJsonObject et = eventTypesJson.toObject(); - QStringList missingFields = verifyFields(QStringList() << "id" << "name" << "index", et); + QStringList missingFields = verifyFields(QStringList() << "id" << "name", et); if (!missingFields.isEmpty()) { qCWarning(dcDeviceManager) << "Skipping device class" << deviceClass.name() << "because of missing" << missingFields.join(", ") << "in eventTypes"; broken = true; @@ -410,7 +413,7 @@ QList DevicePlugin::supportedDevices() const EventType eventType(et.value("id").toString()); eventType.setName(translateValue(m_metaData.value("idName").toString(), translateValue(m_metaData.value("idName").toString(), et.value("name").toString()))); - eventType.setIndex(et.value("index").toInt()); + eventType.setIndex(index++); if (et.contains("ruleRelevant")) eventType.setRuleRelevant(et.value("ruleRelevant").toBool()); @@ -710,7 +713,8 @@ QPair > DevicePlugin::parseParamTypes(const QJsonArray &a QJsonObject pt = paramTypesJson.toObject(); // Check fields - QStringList missingFields = verifyFields(QStringList() << "id" << "name" << "idName" << "index" << "type", pt); + int index = 0; + QStringList missingFields = verifyFields(QStringList() << "id" << "name" << "idName" << "type", pt); if (!missingFields.isEmpty()) { qCWarning(dcDeviceManager) << pluginName() << "Error parsing ParamType: missing fields" << missingFields.join(", ") << endl << pt; return QPair >(false, QList()); @@ -726,7 +730,7 @@ QPair > DevicePlugin::parseParamTypes(const QJsonArray &a } ParamType paramType(ParamTypeId(pt.value("id").toString()), translateValue(m_metaData.value("idName").toString(), pt.value("name").toString()), t, pt.value("defaultValue").toVariant()); - paramType.setIndex(pt.value("index").toInt()); + paramType.setIndex(index); // Set allowed values QVariantList allowedValues;