summaryrefslogtreecommitdiffstats
path: root/src/input
diff options
context:
space:
mode:
authorColin Ogilvie <colin.ogilvie@kdab.com>2016-01-13 14:14:39 +0000
committerSean Harmer <sean.harmer@kdab.com>2016-01-16 15:52:39 +0000
commit630592e00e2ba7d86b9bdf29d7c84c690ddddf5a (patch)
tree6623df9eb4226ac211d9f1911e7d1dc55ace8d48 /src/input
parentf33a8d16417a91f9fcc7f703c3daf8605a18399c (diff)
Added link for inputs between sequential front and back end
Change-Id: I0b6a0456195d64c284a599e3bf08781e30bb723b Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/input')
-rw-r--r--src/input/backend/inputchord.cpp8
-rw-r--r--src/input/backend/inputsequence.cpp8
-rw-r--r--src/input/frontend/qabstractaggregateactioninput.cpp25
3 files changed, 37 insertions, 4 deletions
diff --git a/src/input/backend/inputchord.cpp b/src/input/backend/inputchord.cpp
index adaf727d7..b788a13f5 100644
--- a/src/input/backend/inputchord.cpp
+++ b/src/input/backend/inputchord.cpp
@@ -70,13 +70,19 @@ void InputChord::cleanup()
void InputChord::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
{
+ Qt3DCore::QScenePropertyChangePtr propertyChange = qSharedPointerCast<Qt3DCore::QScenePropertyChange>(e);
if (e->type() == Qt3DCore::NodeUpdated) {
- Qt3DCore::QScenePropertyChangePtr propertyChange = qSharedPointerCast<Qt3DCore::QScenePropertyChange>(e);
if (propertyChange->propertyName() == QByteArrayLiteral("enabled")) {
m_enabled = propertyChange->value().toBool();
} else if (propertyChange->propertyName() == QByteArrayLiteral("tolerance")) {
m_tolerance = propertyChange->value().toInt();
}
+ } else if (e->type() == Qt3DCore::NodeAdded) {
+ if (propertyChange->propertyName() == QByteArrayLiteral("input"))
+ m_inputs.push_back(propertyChange->value().value<Qt3DCore::QNodeId>());
+ } else if (e->type() == Qt3DCore::NodeRemoved) {
+ if (propertyChange->propertyName() == QByteArrayLiteral("input"))
+ m_inputs.removeOne(propertyChange->value().value<Qt3DCore::QNodeId>());
}
}
diff --git a/src/input/backend/inputsequence.cpp b/src/input/backend/inputsequence.cpp
index cb648a105..43847d3d4 100644
--- a/src/input/backend/inputsequence.cpp
+++ b/src/input/backend/inputsequence.cpp
@@ -77,8 +77,8 @@ void InputSequence::cleanup()
void InputSequence::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
{
+ Qt3DCore::QScenePropertyChangePtr propertyChange = qSharedPointerCast<Qt3DCore::QScenePropertyChange>(e);
if (e->type() == Qt3DCore::NodeUpdated) {
- Qt3DCore::QScenePropertyChangePtr propertyChange = qSharedPointerCast<Qt3DCore::QScenePropertyChange>(e);
if (propertyChange->propertyName() == QByteArrayLiteral("enabled")) {
m_enabled = propertyChange->value().toBool();
} else if (propertyChange->propertyName() == QByteArrayLiteral("timeout")) {
@@ -88,6 +88,12 @@ void InputSequence::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e)
} else if (propertyChange->propertyName() == QByteArrayLiteral("sequential")) {
m_sequential = propertyChange->value().toBool();
}
+ } else if (e->type() == Qt3DCore::NodeAdded) {
+ if (propertyChange->propertyName() == QByteArrayLiteral("input"))
+ m_inputs.push_back(propertyChange->value().value<Qt3DCore::QNodeId>());
+ } else if (e->type() == Qt3DCore::NodeRemoved) {
+ if (propertyChange->propertyName() == QByteArrayLiteral("input"))
+ m_inputs.removeOne(propertyChange->value().value<Qt3DCore::QNodeId>());
}
}
diff --git a/src/input/frontend/qabstractaggregateactioninput.cpp b/src/input/frontend/qabstractaggregateactioninput.cpp
index 03e2d41bf..3da99ed7d 100644
--- a/src/input/frontend/qabstractaggregateactioninput.cpp
+++ b/src/input/frontend/qabstractaggregateactioninput.cpp
@@ -34,6 +34,7 @@
****************************************************************************/
#include "qabstractaggregateactioninput.h"
+#include <Qt3DCore/qscenepropertychange.h>
#include <Qt3DCore/private/qnode_p.h>
#include <Qt3DInput/private/qabstractaggregateactioninput_p.h>
@@ -58,15 +59,35 @@ QAbstractAggregateActionInput::~QAbstractAggregateActionInput()
void QAbstractAggregateActionInput::addInput(QAbstractActionInput *input)
{
Q_D(QAbstractAggregateActionInput);
- if (!d->m_inputs.contains(input))
+ if (!d->m_inputs.contains(input)) {
d->m_inputs.push_back(input);
+
+ if (!input->parent())
+ input->setParent(this);
+
+ if (d->m_changeArbiter != Q_NULLPTR) {
+ Qt3DCore::QScenePropertyChangePtr change(new Qt3DCore::QScenePropertyChange(Qt3DCore::NodeAdded, Qt3DCore::QSceneChange::Node, id()));
+ change->setPropertyName("input");
+ change->setValue(QVariant::fromValue(input->id()));
+ d->notifyObservers(change);
+ }
+ }
}
void QAbstractAggregateActionInput::removeInput(QAbstractActionInput *input)
{
Q_D(QAbstractAggregateActionInput);
- if (d->m_inputs.contains(input))
+ if (d->m_inputs.contains(input)) {
+
+ if (d->m_changeArbiter != Q_NULLPTR) {
+ Qt3DCore::QScenePropertyChangePtr change(new Qt3DCore::QScenePropertyChange(Qt3DCore::NodeRemoved, Qt3DCore::QSceneChange::Node, id()));
+ change->setPropertyName("input");
+ change->setValue(QVariant::fromValue(input->id()));
+ d->notifyObservers(change);
+ }
+
d->m_inputs.removeOne(input);
+ }
}
QVector<QAbstractActionInput *> QAbstractAggregateActionInput::inputs() const