summaryrefslogtreecommitdiffstats
path: root/src/Runtime/api/studio3d/q3dsdatainput.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Runtime/api/studio3d/q3dsdatainput.cpp')
-rw-r--r--src/Runtime/api/studio3d/q3dsdatainput.cpp231
1 files changed, 231 insertions, 0 deletions
diff --git a/src/Runtime/api/studio3d/q3dsdatainput.cpp b/src/Runtime/api/studio3d/q3dsdatainput.cpp
index d2d82008..2e6281e6 100644
--- a/src/Runtime/api/studio3d/q3dsdatainput.cpp
+++ b/src/Runtime/api/studio3d/q3dsdatainput.cpp
@@ -35,12 +35,64 @@
QT_BEGIN_NAMESPACE
+/*!
+ \qmltype DataInput
+ \instantiates Q3DSDataInput
+ \inqmlmodule Qt3DStudio
+ \ingroup OpenGLRuntime
+ \brief Controls a data input entry in a Qt 3D Studio presentation.
+ This class is a convenience class for controlling a data input in a presentation.
+ DataInput provides a clean contract between the presentation design and the code.
+ It hides the presentation details from the code while providing a contractual access
+ point to code for controlling aspects of the presentation (e.g. timeline of a
+ subpresentation). It also allows the design to use a single DataInput to drive
+ multiple aspects of the design (e.g. DataInput for speed can change the color of
+ the speedometer, angle of the needle).
+
+ \note There is a performance cost for each registered DataInput, so try to avoid
+ creating unnecessary DataInputs.
+
+ \sa Presentation, DataOutput, Presentation::slideExited, Presentation::slideEntered
+ \sa Presentation::customSignalEmitted
+*/
+
+/*!
+ \class Q3DSDataInput
+ \inmodule OpenGLRuntime
+ \since Qt 3D Studio 2.0
+ \brief Controls a data input entry in a Qt 3D Studio presentation.
+ This class is a convenience class for controlling a data input in a presentation.
+ DataInput provides a clean contract between the presentation design and the code.
+ It hides the presentation details from the code while providing a contractual access
+ point to code for controlling aspects of the presentation (e.g. timeline of a
+ subpresentation). It also allows the design to use a single DataInput to drive
+ multiple aspects of the design (e.g. DataInput for speed can change the color of
+ the speedometer, angle of the needle).
+
+ \note There is a performance cost for each registered DataInput, so try to avoid
+ creating unnecessary DataInputs.
+
+ For other integration points between code and presentation see:
+ \sa Q3DSPresentation::customSignalEmitted
+ \sa Q3DSPresentation::slideEntered
+ \sa Q3DSPresentation::slideExited
+ \sa Q3DSDataOutput
+
+ \sa Q3DSPresentation
+*/
+
+/*!
+ \internal
+ */
Q3DSDataInput::Q3DSDataInput(QObject *parent)
: QObject(parent)
, d_ptr(new Q3DSDataInputPrivate(this))
{
}
+/*!
+ \internal
+ */
Q3DSDataInput::Q3DSDataInput(const QString &name, QObject *parent)
: QObject(parent)
, d_ptr(new Q3DSDataInputPrivate(this))
@@ -48,6 +100,11 @@ Q3DSDataInput::Q3DSDataInput(const QString &name, QObject *parent)
d_ptr->m_name = name;
}
+/*!
+ Constructs a Q3DSDataInput instance and initializes the \a name. The
+ constructed instance is automatically associated with the specified \a
+ presentation. An optional \a parent object can be specified.
+ */
Q3DSDataInput::Q3DSDataInput(Q3DSPresentation *presentation, const QString &name, QObject *parent)
: QObject(parent)
, d_ptr(new Q3DSDataInputPrivate(this))
@@ -58,6 +115,9 @@ Q3DSDataInput::Q3DSDataInput(Q3DSPresentation *presentation, const QString &name
presentation->registerDataInput(this);
}
+/*!
+ \internal
+ */
Q3DSDataInput::Q3DSDataInput(Q3DSDataInputPrivate *d, Q3DSPresentation *presentation,
const QString &name, QObject *parent)
: QObject(parent)
@@ -69,11 +129,34 @@ Q3DSDataInput::Q3DSDataInput(Q3DSDataInputPrivate *d, Q3DSPresentation *presenta
presentation->registerDataInput(this);
}
+/*!
+ Destructor.
+ */
Q3DSDataInput::~Q3DSDataInput()
{
delete d_ptr;
}
+/*!
+ \qmlproperty string DataInput::name
+
+ Specifies the name of the controlled data input element in the
+ presentation. The name must match a name of a data input defined
+ in the presentation. This property must be set before setting the
+ value property.
+ */
+
+/*!
+ \property Q3DSDataInput::name
+
+ Specifies the name of the controlled data input element in the
+ presentation. The name must match a name of a data input defined
+ in the presentation.
+
+ This property must be set before setting the value property.
+ The initial value is provided via the constructor, but the name
+ can also be changed later on.
+ */
QString Q3DSDataInput::name() const
{
return d_ptr->m_name;
@@ -89,11 +172,53 @@ void Q3DSDataInput::setName(const QString &name)
}
}
+/*!
+ \qmlproperty variant DataInput::value
+
+ Specifies the value of the controlled data input element in the
+ presentation.
+
+ The value of this property only accounts for changes done via the same
+ Q3DSDataInput instance. If the value of the same data input in the
+ presentation is changed elsewhere, for example via animations or
+ Q3DSPresentation::setAttribute(), those changes are not reflected in the
+ value of this property. Due to this uncertainty, this property treats all
+ value sets as changes even if the newly set value is the same value as the
+ previous value.
+
+ To get actual values from the presentation, use DataOutput.
+ \sa DataOutput
+*/
+/*!
+ \property Q3DSDataInput::value
+
+ Specifies the value of the controlled data input element in the
+ presentation.
+
+ The value of this property only accounts for changes done via the same
+ Q3DSDataInput instance. If the value of the same data input in the
+ presentation is changed elsewhere, for example via animations or
+ Q3DSPresentation::setAttribute(), those changes are not reflected in the
+ value of this property. Due to this uncertainty, this property treats all
+ value sets as changes even if the newly set value is the same value as the
+ previous value.
+
+ To get actual values from the presentation, use DataOutput.
+ \sa DataOutput
+*/
QVariant Q3DSDataInput::value() const
{
return d_ptr->m_value;
}
+/*!
+ \property Q3DSDataInput::min
+
+ Contains the minimum range value for datainput. Returned value is zero
+ for datainput types other than \e {Ranged Number}.
+
+ \note This value is read-only.
+ */
float Q3DSDataInput::min() const
{
if (!d_ptr->m_presentation)
@@ -102,6 +227,14 @@ float Q3DSDataInput::min() const
return d_ptr->m_presentation->d_ptr->dataInputMin(d_ptr->m_name);
}
+/*!
+ \property Q3DSDataInput::max
+
+ Contains the maximum range value for datainput. Returned value is zero
+ for datainput types other than \e {Ranged Number}.
+
+ \note This value is read-only.
+ */
float Q3DSDataInput::max() const
{
if (!d_ptr->m_presentation)
@@ -110,6 +243,11 @@ float Q3DSDataInput::max() const
return d_ptr->m_presentation->d_ptr->dataInputMax(d_ptr->m_name);
}
+/*!
+ Returns true if presentation (or its subpresentation) associated with
+ this datainput has a datainput definition with a matching name. Returns
+ false if the datainput has no associated presentation, or if a match is not found.
+ */
bool Q3DSDataInput::isValid() const
{
if (d_ptr->m_presentation)
@@ -118,6 +256,11 @@ bool Q3DSDataInput::isValid() const
return false;
}
+/*!
+ \brief Q3DSDataInput::setValue Set value of the data input.
+ \param value New value to be set.
+ \note For performance reasons do not call setValue unnecessarily.
+ */
void Q3DSDataInput::setValue(const QVariant &value)
{
// Since properties controlled by data inputs can change without the current value being
@@ -169,4 +312,92 @@ void Q3DSDataInputPrivate::setCommandQueue(CommandQueue *queue)
setValue(m_value);
}
+
+/*!
+ \qmltype DataInput
+ \instantiates Q3DSDataInput
+ \inqmlmodule QtStudio3D
+ \ingroup OpenGLRuntime
+
+ \brief Controls a data input entry in a Qt 3D Studio presentation.
+
+ This type is a convenience for controlling a data in a presentation. Its functionality is
+ equivalent to \c{Presentation::setDataInputValue()}, however it has a big advantage
+ of being able to use QML property bindings, thus avoiding the need to having to resort
+ to a JavaScript function call for every value change.
+
+ As an example:
+
+ \qml
+ Studio3D {
+ ...
+ Presentation {
+ id: presentation
+ ...
+ property string text: ""
+ DataInput {
+ name: "inputForSomeTextNode"
+ value: presentation.text
+ }
+ }
+ }
+
+ Button {
+ onClicked: presentation.text = "Hello World"
+ }
+ \endqml
+
+ The example assumes that a data input connection was made in Qt 3D Studio
+ presentation using Qt 3D Studio editor between the \c textstring property of
+ target property and a data input name \c inputForSomeTextNode. As the value
+ is now set via a property, the full set of QML property bindings techniques
+ are available.
+
+ \sa Studio3D, Presentation
+*/
+
+/*!
+ \qmlproperty string DataInput::name
+
+ Specifies the name of the controlled data input element in the
+ presentation. This property must be set as part of DataInput declaration,
+ although it is changeable afterwards, if desired.
+*/
+
+/*!
+ \qmlproperty variant DataInput::value
+
+ Specifies the value of the controlled data input element in the presentation.
+
+ The value of this property only accounts for changes done via the same
+ DataInput instance. If the value of the underlying attribute in the
+ presentation is changed elsewhere, for example via animations or
+ Presentation::setAttribute(), those changes are not reflected in the value
+ of this property. Due to this uncertainty, this property treats all value
+ sets as changes even if the newly set value is the same value as the
+ previous value.
+*/
+
+/*!
+ \qmlproperty real DataInput::min
+
+ Contains the minimum value of the controlled data input element range.
+
+ This property is applicable only to data input type \e {Ranged Number}. For other
+ types, value returned is zero.
+
+ \note This value is read-only.
+*/
+
+/*!
+ \qmlproperty real DataInput::max
+
+ Contains the maximum value of the controlled data input element range.
+
+ This property is applicable only to data input type \e {Ranged Number}. For other
+ types, value returned is zero.
+
+ \note This value is read-only.
+*/
+
QT_END_NAMESPACE