diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2015-11-28 17:00:36 +0000 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2015-11-29 18:35:34 +0000 |
commit | c74ddf562cf02ac2516db0c5f492cf7198a5e25a (patch) | |
tree | 677de501c483152bf0a96c0dcf242a48ead95556 /src/input/backend/qabstractphysicaldevicebackendnode.cpp | |
parent | 91efa5068dfac494d023b92c1539806ba673257d (diff) |
Add some implementation for QAbstractPhysicalDeviceBackendNode
Change-Id: Ic91c8d42847360eb8e1b64880c87dca837847a15
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/input/backend/qabstractphysicaldevicebackendnode.cpp')
-rw-r--r-- | src/input/backend/qabstractphysicaldevicebackendnode.cpp | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/src/input/backend/qabstractphysicaldevicebackendnode.cpp b/src/input/backend/qabstractphysicaldevicebackendnode.cpp index 01b8e9693..fe483eaa4 100644 --- a/src/input/backend/qabstractphysicaldevicebackendnode.cpp +++ b/src/input/backend/qabstractphysicaldevicebackendnode.cpp @@ -35,14 +35,60 @@ ****************************************************************************/ #include "qabstractphysicaldevicebackendnode.h" +#include "qabstractphysicaldevicebackendnode_p.h" +#include "qabstractphysicaldevice.h" +#include "qaxissetting.h" + +#include <Qt3DCore/qscenepropertychange.h> QT_BEGIN_NAMESPACE namespace Qt3DInput { +QAbstractPhysicalDeviceBackendNodePrivate::QAbstractPhysicalDeviceBackendNodePrivate() + : Qt3DCore::QBackendNodePrivate(Qt3DCore::QBackendNode::ReadOnly) + , m_axisSettings() + , m_enabled(false) +{ + +} + QAbstractPhysicalDeviceBackendNode::QAbstractPhysicalDeviceBackendNode() - : Qt3DCore::QBackendNode() + : Qt3DCore::QBackendNode(*new QAbstractPhysicalDeviceBackendNodePrivate) +{ +} + +void QAbstractPhysicalDeviceBackendNode::updateFromPeer(Qt3DCore::QNode *peer) +{ + Q_D(QAbstractPhysicalDeviceBackendNode); + QAbstractPhysicalDevice *physicalDevice = static_cast<QAbstractPhysicalDevice *>(peer); + d->m_enabled = physicalDevice->isEnabled(); + Q_FOREACH (QAxisSetting *axisSetting, physicalDevice->axisSettings()) + d->m_axisSettings.push_back(axisSetting->id()); +} + +void QAbstractPhysicalDeviceBackendNode::cleanup() +{ + Q_D(QAbstractPhysicalDeviceBackendNode); + d->m_enabled = false; + d->m_axisSettings.clear(); +} + +void QAbstractPhysicalDeviceBackendNode::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) { + Q_D(QAbstractPhysicalDeviceBackendNode); + Qt3DCore::QScenePropertyChangePtr propertyChange = qSharedPointerCast<Qt3DCore::QScenePropertyChange>(e); + if (e->type() == Qt3DCore::NodeUpdated) { + if (propertyChange->propertyName() == QByteArrayLiteral("enabled")) { + d->m_enabled = propertyChange->value().toBool(); + } + } else if (e->type() == Qt3DCore::NodeAdded) { + if (propertyChange->propertyName() == QByteArrayLiteral("axisSettings")) + d->m_axisSettings.push_back(propertyChange->value().value<Qt3DCore::QNodeId>()); + } else if (e->type() == Qt3DCore::NodeRemoved) { + if (propertyChange->propertyName() == QByteArrayLiteral("axisSettings")) + d->m_axisSettings.removeOne(propertyChange->value().value<Qt3DCore::QNodeId>()); + } } } // Qt3DInput |