diff options
author | Colin Ogilvie <colin.ogilvie@kdab.com> | 2016-01-13 14:14:39 +0000 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-01-16 15:52:39 +0000 |
commit | 630592e00e2ba7d86b9bdf29d7c84c690ddddf5a (patch) | |
tree | 6623df9eb4226ac211d9f1911e7d1dc55ace8d48 /src/input | |
parent | f33a8d16417a91f9fcc7f703c3daf8605a18399c (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.cpp | 8 | ||||
-rw-r--r-- | src/input/backend/inputsequence.cpp | 8 | ||||
-rw-r--r-- | src/input/frontend/qabstractaggregateactioninput.cpp | 25 |
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 |