diff options
author | Janne Kangas <janne.kangas@qt.io> | 2018-11-14 13:40:38 +0200 |
---|---|---|
committer | Janne Kangas <janne.kangas@qt.io> | 2019-02-12 05:16:54 +0000 |
commit | 4a1b50066c9d7ea7adccad152032cb33d0960847 (patch) | |
tree | cb471d723d0c85adc1875c89325efca7dfbee5a2 /examples | |
parent | cbc5e51aa4cc357eab650940c972b68f1b666fba (diff) |
Implement datainput metadata
Add functionality for requesting/setting metadata specific to this
datainput to Q3DSDataInput API. Currently offered on C++ side only
as the intent for metadata is to facilitate dynamic binding of data
sources to data inputs rather than using metadata in end user-facing
visualization.
Change-Id: Iccda62247cf1dcd857073f92f40d7f955ea43817
Task-id: QT3DS-2993
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'examples')
-rw-r--r-- | examples/3dstudioruntime2/cppdatainput/main.cpp | 19 | ||||
-rw-r--r-- | examples/3dstudioruntime2/cppdatainput/presentation/datainput.uia | 2 |
2 files changed, 20 insertions, 1 deletions
diff --git a/examples/3dstudioruntime2/cppdatainput/main.cpp b/examples/3dstudioruntime2/cppdatainput/main.cpp index c3579a3..0366ca0 100644 --- a/examples/3dstudioruntime2/cppdatainput/main.cpp +++ b/examples/3dstudioruntime2/cppdatainput/main.cpp @@ -58,6 +58,7 @@ #include <Q3DSDataInput> #include <QVector3D> #include <QTimer> +#include <QDebug> // Required for Ubuntu build #include <cmath> @@ -88,6 +89,11 @@ int main(int argc, char *argv[]) Q3DSDataInput *dynDi = qvariant_cast<Q3DSDataInput *>(it); if (dynDi->name().contains(QLatin1String("color"))) { if (dynDi->isValid()) { + // Access and modify metadata. + dynDi->setMetadata("metadata1", "gauge color"); + qDebug() << "Metadata key for" << dynDi->name() << ":" << dynDi->metadataKey(); + qDebug() << "Metadata: " << dynDi->metadata(); + QObject::connect(&viewer, &Q3DSSurfaceViewer::frameUpdate, [&colorRed, dynDi] { dynDi->setValue(QVector3D(colorRed, 0.5, 0.5)); @@ -101,6 +107,14 @@ int main(int argc, char *argv[]) if (dynDi->isValid()) { dynDi->setMin(90.0f); dynDi->setMax(270.0f); + + // Access and modify metadata. + qDebug() << "Metadata key for" << dynDi->name() << ":" << dynDi->metadataKey(); + qDebug() << "Metadata: " << dynDi->metadata(); + dynDi->setMetadata("metadata2", "Secondary rotation control"); + qDebug() << "New metadata key for" << dynDi->name() << ":" << dynDi->metadataKey(); + qDebug() << "New metadata for " << dynDi->name() << ":" << dynDi->metadata(); + QObject::connect(&viewer, &Q3DSSurfaceViewer::frameUpdate, [&range, dynDi] { dynDi->setValue((float)range); range = (range + 1) % 360; @@ -108,6 +122,11 @@ int main(int argc, char *argv[]) } } } + const auto diWithMetadata = viewer.presentation() + ->getDataInputs(QVariant("metadata1")); + qDebug() << "Datainputs with metadatakey metadata1: "; + for (auto &it : diWithMetadata) + qDebug() << it->name(); }); viewer.presentation()->setSource(QUrl(QStringLiteral("qrc:presentation/datainput.uia"))); diff --git a/examples/3dstudioruntime2/cppdatainput/presentation/datainput.uia b/examples/3dstudioruntime2/cppdatainput/presentation/datainput.uia index cbe778f..5676aec 100644 --- a/examples/3dstudioruntime2/cppdatainput/presentation/datainput.uia +++ b/examples/3dstudioruntime2/cppdatainput/presentation/datainput.uia @@ -3,7 +3,7 @@ <assets initial="datainput"> <presentation id="datainput" src="datainput.uip"/> <dataInput name="colorInput" type="Vector3"/> - <dataInput name="rangeInput" type="Ranged Number" min="0" max="360"/> + <dataInput metadatakey="metadata1" metadata="Controls rotation" max="360" name="rangeInput" min="0" type="Ranged Number"/> </assets> <statemachine ref="#logic"> <visual-states> |