diff options
Diffstat (limited to 'src/Authoring/Studio/Application/ProjectFile.cpp')
-rw-r--r-- | src/Authoring/Studio/Application/ProjectFile.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/Authoring/Studio/Application/ProjectFile.cpp b/src/Authoring/Studio/Application/ProjectFile.cpp index ebec8b53..953a0226 100644 --- a/src/Authoring/Studio/Application/ProjectFile.cpp +++ b/src/Authoring/Studio/Application/ProjectFile.cpp @@ -495,8 +495,25 @@ void ProjectFile::parseDataInputElem(const QDomElement &elem, item->valueString = elem.attribute(QStringLiteral("evaluator")); } #endif - item->metaDataKey = elem.attribute((QStringLiteral("metadatakey"))); - item->metaData = elem.attribute((QStringLiteral("metadata"))); + + auto metadata = elem.attribute(QStringLiteral("metadata")); + if (!metadata.isEmpty()) { + auto metadataList = metadata.split(QLatin1Char('$')); + + if (metadataList.size() & 1) { + qWarning("Malformed datainput metadata for datainput %s, cannot parse key" + " - value pairs. Stop parsing metadata.", qUtf8Printable(item->name)); + } else { + for (int i = 0; i < metadataList.size(); i += 2) { + if (metadataList[i].isEmpty()) { + qWarning("Malformed datainput metadata for datainput %s - metadata" + " key empty. Stop parsing metadata.", qUtf8Printable(item->name)); + break; + } + item->metadata.insert(metadataList[i], metadataList[i+1]); + } + } + } dataInputs.insert(item->name, item); } } |