// Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB). // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "qmousedevice.h" #include "qmousedevice_p.h" #include #include QT_BEGIN_NAMESPACE namespace Qt3DInput { /*! \internal */ QMouseDevicePrivate::QMouseDevicePrivate() : QAbstractPhysicalDevicePrivate() , m_sensitivity(0.1f) , m_updateContinuously(false) { } /*! \qmltype MouseDevice \instantiates Qt3DInput::QMouseDevice \inqmlmodule Qt3D.Input \since 5.5 \brief Delegates mouse events to the attached MouseHandler objects. A MouseDevice delegates mouse events from physical mouse device to MouseHandler objects. The sensitivity of the mouse can be controlled with the \l MouseDevice::sensitivity property, which specifies the rate in which the logical mouse coordinates change in response to physical movement of the mouse. \sa MouseHandler */ /*! \class Qt3DInput::QMouseDevice \inmodule Qt3DInput \since 5.5 \brief Delegates mouse events to the attached MouseHandler objects. A QMouseDevice delegates mouse events from physical mouse device to QMouseHandler objects. The sensitivity of the mouse can be controlled with the \l QMouseDevice::sensitivity property, which specifies the rate in which the logical mouse coordinates change in response to physical movement of the mouse. \sa QMouseHandler */ /*! \enum Qt3DInput::QMouseDevice::Axis The mouse axis. \value X \value Y \value WheelX \value WheelY \sa Qt3DInput::QAnalogAxisInput::setAxis */ /*! \qmlproperty real MouseDevice::sensitivity Holds the current sensitivity of the mouse device. Default is 0.1. */ /*! \property Qt3DInput::QMouseDevice::updateAxesContinuously If \c true, axes will be updated anytime they change regardless of whether any mouse button is being pressed. Otherwise, axes are updated only when one of the mouse buttons is being pressed. The default value is \c false. \since 5.15 */ /*! \qmlproperty bool MouseDevice::updateAxesContinuously If \c true, axes will be updated anytime they change regardless of whether any mouse button is being pressed. Otherwise, axes are updated only when one of the mouse buttons is being pressed. The default value is \c false. \since 5.15 */ /*! Constructs a new QMouseDevice instance with parent \a parent. */ QMouseDevice::QMouseDevice(QNode *parent) : QAbstractPhysicalDevice(*new QMouseDevicePrivate, parent) { } /*! \internal */ QMouseDevice::~QMouseDevice() { } /*! \return the axis count. \note Currently always returns 4. */ int QMouseDevice::axisCount() const { return 4; } /*! \return the button count. \note Currently always returns 3. */ int QMouseDevice::buttonCount() const { return 3; } /*! \return the names of the axis. \note Currently always returns StringList["X", "Y"] */ QStringList QMouseDevice::axisNames() const { return QStringList() << QStringLiteral("X") << QStringLiteral("Y") << QStringLiteral("WheelX") << QStringLiteral("WheelY"); } /*! \return the names of the buttons. \note Currently always returns StringList["Left", "Right", "Center"] */ QStringList QMouseDevice::buttonNames() const { return QStringList() << QStringLiteral("Left") << QStringLiteral("Right") << QStringLiteral("Center"); } /*! Convert axis \a name to axis identifier. */ int QMouseDevice::axisIdentifier(const QString &name) const { if (name == QLatin1String("X")) return X; else if (name == QLatin1String("Y")) return Y; else if (name == QLatin1String("WheelX")) return WheelX; else if (name == QLatin1String("WheelY")) return WheelY; return -1; } /*! Returns the button identifier that corresponds with the specified \a name. The possible return values are documented in \l {Qt3DInput::}{QMouseEvent::Buttons}. */ int QMouseDevice::buttonIdentifier(const QString &name) const { if (name == QLatin1String("Left")) return Qt3DInput::QMouseEvent::LeftButton; if (name == QLatin1String("Right")) return Qt3DInput::QMouseEvent::RightButton; if (name == QLatin1String("Center")) return Qt3DInput::QMouseEvent::MiddleButton; return -1; } /*! \property Qt3DInput::QMouseDevice::sensitivity Holds the sensitivity of the mouse device. The default is 0.1. */ float QMouseDevice::sensitivity() const { Q_D(const QMouseDevice); return d->m_sensitivity; } bool QMouseDevice::updateAxesContinuously() const { Q_D(const QMouseDevice); return d->m_updateContinuously; } void QMouseDevice::setSensitivity(float value) { Q_D(QMouseDevice); if (qFuzzyCompare(value, d->m_sensitivity)) return; d->m_sensitivity = value; emit sensitivityChanged(value); } void QMouseDevice::setUpdateAxesContinuously(bool updateAxesContinuously) { Q_D(QMouseDevice); if (d->m_updateContinuously == updateAxesContinuously) return; d->m_updateContinuously = updateAxesContinuously; emit updateAxesContinuouslyChanged(updateAxesContinuously); } } // namespace Qt3DInput QT_END_NAMESPACE #include "moc_qmousedevice.cpp"