summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorJanne Kangas <janne.kangas@qt.io>2018-11-14 13:40:38 +0200
committerJanne Kangas <janne.kangas@qt.io>2019-02-12 05:16:54 +0000
commit4a1b50066c9d7ea7adccad152032cb33d0960847 (patch)
treecb471d723d0c85adc1875c89325efca7dfbee5a2 /examples
parentcbc5e51aa4cc357eab650940c972b68f1b666fba (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.cpp19
-rw-r--r--examples/3dstudioruntime2/cppdatainput/presentation/datainput.uia2
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>