summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/input
diff options
context:
space:
mode:
Diffstat (limited to 'src/datavisualization/input')
-rw-r--r--src/datavisualization/input/q3dinputhandler.cpp78
-rw-r--r--src/datavisualization/input/q3dinputhandler.h12
-rw-r--r--src/datavisualization/input/q3dinputhandler_p.h15
-rw-r--r--src/datavisualization/input/qabstract3dinputhandler.cpp52
-rw-r--r--src/datavisualization/input/qabstract3dinputhandler.h31
-rw-r--r--src/datavisualization/input/qabstract3dinputhandler_p.h18
-rw-r--r--src/datavisualization/input/qtouch3dinputhandler.cpp78
-rw-r--r--src/datavisualization/input/qtouch3dinputhandler.h8
-rw-r--r--src/datavisualization/input/qtouch3dinputhandler_p.h10
9 files changed, 165 insertions, 137 deletions
diff --git a/src/datavisualization/input/q3dinputhandler.cpp b/src/datavisualization/input/q3dinputhandler.cpp
index 5d730c47..1a197418 100644
--- a/src/datavisualization/input/q3dinputhandler.cpp
+++ b/src/datavisualization/input/q3dinputhandler.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc
+** Copyright (C) 2014 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
@@ -17,11 +17,10 @@
****************************************************************************/
#include "datavisualizationglobal_p.h"
-#include "q3dinputhandler.h"
+#include "q3dinputhandler_p.h"
#include "q3dcamera_p.h"
-#include "q3dlight.h"
-QT_DATAVISUALIZATION_BEGIN_NAMESPACE
+QT_BEGIN_NAMESPACE_DATAVISUALIZATION
const int minZoomLevel = 10;
const int halfSizeZoomLevel = 50;
@@ -44,20 +43,24 @@ const float rotationSpeed = 100.0f;
*
* Default input handler has the following functionalty:
* \table
- * \header
- * \li Mouse action \li Action
- * \row
- * \li Drag with right button pressed \li Rotate graph within limits set for Q3DCamera.
- * \row
- * \li Left click \li Select item under cursor or remove selection if none.
- * May open the secondary view depending on the
- * selection mode.
- * \row
- * \li Mouse wheel \li Zoom in/out within default range (10...500%).
- * \row
- * \li Left click on the primary view when the secondary view is visible
- * \li Closes the secondary view.
- * \note Secondary view is available only for Q3DBars and Q3DSurface graphs.
+ * \header
+ * \li Mouse action
+ * \li Action
+ * \row
+ * \li Drag with right button pressed
+ * \li Rotate graph within limits set for Q3DCamera.
+ * \row
+ * \li Left click
+ * \li Select item under cursor or remove selection if none.
+ * May open the secondary view depending on the
+ * \l {QAbstract3DGraph::selectionMode}{selection mode}.
+ * \row
+ * \li Mouse wheel
+ * \li Zoom in/out within default range (10...500%).
+ * \row
+ * \li Left click on the primary view when the secondary view is visible
+ * \li Closes the secondary view.
+ * \note Secondary view is available only for Q3DBars and Q3DSurface graphs.
* \endtable
*/
@@ -66,7 +69,8 @@ const float rotationSpeed = 100.0f;
* and is then passed to QObject constructor.
*/
Q3DInputHandler::Q3DInputHandler(QObject *parent) :
- QAbstract3DInputHandler(parent)
+ QAbstract3DInputHandler(parent),
+ d_ptr(new Q3DInputHandlerPrivate(this))
{
}
@@ -84,24 +88,25 @@ Q3DInputHandler::~Q3DInputHandler()
*/
void Q3DInputHandler::mousePressEvent(QMouseEvent *event, const QPoint &mousePos)
{
-#if defined(Q_OS_ANDROID)
+#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
Q_UNUSED(event);
Q_UNUSED(mousePos);
#else
if (Qt::LeftButton == event->button()) {
if (scene()->isSlicingActive()) {
if (scene()->isPointInPrimarySubView(mousePos)) {
- setInputState(InputStateOnPrimaryView);
+ setInputView(InputViewOnPrimary);
} else if (scene()->isPointInSecondarySubView(mousePos)) {
- setInputState(InputStateOnSecondaryView);
+ setInputView(InputViewOnSecondary);
} else {
- setInputState(InputStateNone);
+ setInputView(InputViewNone);
}
} else {
- setInputState(InputStateOnScene);
// update mouse positions to prevent jumping when releasing or repressing a button
setInputPosition(mousePos);
scene()->setSelectionQueryPosition(mousePos);
+ setInputView(InputViewOnPrimary);
+ d_ptr->m_inputState = QAbstract3DInputHandlerPrivate::InputStateSelecting;
}
} else if (Qt::MiddleButton == event->button()) {
// reset rotations
@@ -109,7 +114,7 @@ void Q3DInputHandler::mousePressEvent(QMouseEvent *event, const QPoint &mousePos
} else if (Qt::RightButton == event->button()) {
// disable rotating when in slice view
if (!scene()->isSlicingActive())
- setInputState(InputStateRotating);
+ d_ptr->m_inputState = QAbstract3DInputHandlerPrivate::InputStateRotating;
// update mouse positions to prevent jumping when releasing or repressing a button
setInputPosition(mousePos);
}
@@ -123,14 +128,15 @@ void Q3DInputHandler::mousePressEvent(QMouseEvent *event, const QPoint &mousePos
void Q3DInputHandler::mouseReleaseEvent(QMouseEvent *event, const QPoint &mousePos)
{
Q_UNUSED(event);
-#if defined (Q_OS_ANDROID)
+#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
Q_UNUSED(mousePos);
#else
- if (InputStateRotating == inputState()) {
+ if (QAbstract3DInputHandlerPrivate::InputStateRotating == d_ptr->m_inputState) {
// update mouse positions to prevent jumping when releasing or repressing a button
setInputPosition(mousePos);
}
- setInputState(InputStateNone);
+ d_ptr->m_inputState = QAbstract3DInputHandlerPrivate::InputStateNone;
+ setInputView(InputViewNone);
#endif
}
@@ -141,10 +147,10 @@ void Q3DInputHandler::mouseReleaseEvent(QMouseEvent *event, const QPoint &mouseP
void Q3DInputHandler::mouseMoveEvent(QMouseEvent *event, const QPoint &mousePos)
{
Q_UNUSED(event);
-#if defined (Q_OS_ANDROID)
+#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
Q_UNUSED(mousePos);
#else
- if (InputStateRotating == inputState()) {
+ if (QAbstract3DInputHandlerPrivate::InputStateRotating == d_ptr->m_inputState) {
// Calculate mouse movement since last frame
float xRotation = scene()->activeCamera()->xRotation();
float yRotation = scene()->activeCamera()->yRotation();
@@ -190,4 +196,14 @@ void Q3DInputHandler::wheelEvent(QWheelEvent *event)
scene()->activeCamera()->setZoomLevel(zoomLevel);
}
-QT_DATAVISUALIZATION_END_NAMESPACE
+Q3DInputHandlerPrivate::Q3DInputHandlerPrivate(Q3DInputHandler *q)
+ : q_ptr(q),
+ m_inputState(QAbstract3DInputHandlerPrivate::InputStateNone)
+{
+}
+
+Q3DInputHandlerPrivate::~Q3DInputHandlerPrivate()
+{
+}
+
+QT_END_NAMESPACE_DATAVISUALIZATION
diff --git a/src/datavisualization/input/q3dinputhandler.h b/src/datavisualization/input/q3dinputhandler.h
index a7fa0573..49471d72 100644
--- a/src/datavisualization/input/q3dinputhandler.h
+++ b/src/datavisualization/input/q3dinputhandler.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc
+** Copyright (C) 2014 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
@@ -21,9 +21,9 @@
#include <QtDataVisualization/qabstract3dinputhandler.h>
-QT_DATAVISUALIZATION_BEGIN_NAMESPACE
+QT_BEGIN_NAMESPACE_DATAVISUALIZATION
-class Q3DInputHandler; // Workaround for qdoc bug, removing this will cause qdoc compiler to not find the class.
+class Q3DInputHandlerPrivate;
class QT_DATAVISUALIZATION_EXPORT Q3DInputHandler : public QAbstract3DInputHandler
{
@@ -41,8 +41,10 @@ public:
private:
Q_DISABLE_COPY(Q3DInputHandler)
+
+ QScopedPointer<Q3DInputHandlerPrivate> d_ptr;
};
-QT_DATAVISUALIZATION_END_NAMESPACE
+QT_END_NAMESPACE_DATAVISUALIZATION
-#endif // QDEFAULT3DINPUTHANDLER_H
+#endif
diff --git a/src/datavisualization/input/q3dinputhandler_p.h b/src/datavisualization/input/q3dinputhandler_p.h
index af8bef5f..a9b27307 100644
--- a/src/datavisualization/input/q3dinputhandler_p.h
+++ b/src/datavisualization/input/q3dinputhandler_p.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc
+** Copyright (C) 2014 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
@@ -29,11 +29,10 @@
#ifndef Q3DINPUTHANDLER_P_H
#define Q3DINPUTHANDLER_P_H
-#include "datavisualizationglobal_p.h"
+#include "qabstract3dinputhandler_p.h"
+#include "q3dinputhandler.h"
-QT_DATAVISUALIZATION_BEGIN_NAMESPACE
-
-class Q3DInputHandler;
+QT_BEGIN_NAMESPACE_DATAVISUALIZATION
class Q3DInputHandlerPrivate
{
@@ -43,9 +42,9 @@ public:
public:
Q3DInputHandler *q_ptr;
-
+ QAbstract3DInputHandlerPrivate::InputState m_inputState;
};
-QT_DATAVISUALIZATION_END_NAMESPACE
+QT_END_NAMESPACE_DATAVISUALIZATION
-#endif // Q3DINPUTHANDLER_P_H
+#endif
diff --git a/src/datavisualization/input/qabstract3dinputhandler.cpp b/src/datavisualization/input/qabstract3dinputhandler.cpp
index 0aa8372c..f786d466 100644
--- a/src/datavisualization/input/qabstract3dinputhandler.cpp
+++ b/src/datavisualization/input/qabstract3dinputhandler.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc
+** Copyright (C) 2014 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
@@ -15,9 +15,10 @@
** contact form at http://qt.digia.com
**
****************************************************************************/
+
#include "qabstract3dinputhandler_p.h"
-QT_DATAVISUALIZATION_BEGIN_NAMESPACE
+QT_BEGIN_NAMESPACE_DATAVISUALIZATION
/*!
* \class QAbstract3DInputHandler
@@ -31,23 +32,17 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
*/
/*!
- * \enum QAbstract3DInputHandler::InputState
+ * \enum QAbstract3DInputHandler::InputView
*
- * Predefined input states for mouse and touch based input handlers. All states are not valid
- * with all input handlers.
+ * Predefined input views for mouse and touch based input handlers.
*
- * \value InputStateNone
- * Default "no input received" state.
- * \value InputStateOnScene
- * Mouse or touch input received on the 3D scene.
- * \value InputStateOnPrimaryView
- * Mouse or touch input received on the primary view area.
- * \value InputStateOnSecondaryView
+ * \value InputViewNone
+ * Mouse or touch not on a view.
+ * \value InputViewOnPrimary
+ * Mouse or touch input received on the primary view area. If secondary view is displayed when
+ * inputView becomes InputViewOnPrimary, secondary view is closed.
+ * \value InputViewOnSecondary
* Mouse or touch input received on the secondary view area.
- * \value InputStateRotating
- * Rotation of the 3D geometry ongoing.
- * \value InputStatePinching
- * Pinch/punch multitouch input ongoing.
*/
/*!
@@ -59,6 +54,8 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
* \brief Base type for all QtDataVisualization input handlers.
*
* This type is uncreatable.
+ *
+ * For AbstractInputHandler3D enums, see \l QAbstract3DInputHandler::InputView
*/
/*!
@@ -138,21 +135,21 @@ void QAbstract3DInputHandler::wheelEvent(QWheelEvent *event)
// Property get/set
/*!
- * \property QAbstract3DInputHandler::inputState
+ * \property QAbstract3DInputHandler::inputView
*
- * Current enumerated input state based on the processed input events.
- * When the state changes inputStateChanged() is emitted.
+ * Current enumerated input view based on the view of the processed input events.
+ * When the view changes inputViewChanged() is emitted.
*/
-QAbstract3DInputHandler::InputState QAbstract3DInputHandler::inputState()
+QAbstract3DInputHandler::InputView QAbstract3DInputHandler::inputView() const
{
- return d_ptr->m_inputState;
+ return d_ptr->m_inputView;
}
-void QAbstract3DInputHandler::setInputState(InputState inputState)
+void QAbstract3DInputHandler::setInputView(InputView inputView)
{
- if (inputState != d_ptr->m_inputState) {
- d_ptr->m_inputState = inputState;
- emit inputStateChanged(inputState);
+ if (inputView != d_ptr->m_inputView) {
+ d_ptr->m_inputView = inputView;
+ emit inputViewChanged(inputView);
}
}
@@ -227,12 +224,11 @@ QPoint QAbstract3DInputHandler::previousInputPos() const
return d_ptr->m_previousInputPos;
}
-
QAbstract3DInputHandlerPrivate::QAbstract3DInputHandlerPrivate(QAbstract3DInputHandler *q) :
q_ptr(q),
m_prevDistance(0),
m_previousInputPos(QPoint(0,0)),
- m_inputState(QAbstract3DInputHandler::InputStateNone),
+ m_inputView(QAbstract3DInputHandler::InputViewNone),
m_inputPosition(QPoint(0,0)),
m_scene(0)
{
@@ -243,4 +239,4 @@ QAbstract3DInputHandlerPrivate::~QAbstract3DInputHandlerPrivate()
}
-QT_DATAVISUALIZATION_END_NAMESPACE
+QT_END_NAMESPACE_DATAVISUALIZATION
diff --git a/src/datavisualization/input/qabstract3dinputhandler.h b/src/datavisualization/input/qabstract3dinputhandler.h
index 313abef3..803517ed 100644
--- a/src/datavisualization/input/qabstract3dinputhandler.h
+++ b/src/datavisualization/input/qabstract3dinputhandler.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc
+** Copyright (C) 2014 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
@@ -19,30 +19,26 @@
#ifndef QABSTRACT3DINPUTHANDLER_H
#define QABSTRACT3DINPUTHANDLER_H
-#include <QtDataVisualization/qdatavisualizationenums.h>
#include <QtDataVisualization/q3dscene.h>
#include <QMouseEvent>
-QT_DATAVISUALIZATION_BEGIN_NAMESPACE
+QT_BEGIN_NAMESPACE_DATAVISUALIZATION
class QAbstract3DInputHandlerPrivate;
class QT_DATAVISUALIZATION_EXPORT QAbstract3DInputHandler : public QObject
{
Q_OBJECT
- Q_ENUMS(InputState)
- Q_PROPERTY(InputState inputState READ inputState WRITE setInputState NOTIFY inputStateChanged)
+ Q_ENUMS(InputView)
+ Q_PROPERTY(InputView inputView READ inputView WRITE setInputView NOTIFY inputViewChanged)
Q_PROPERTY(QPoint inputPosition READ inputPosition WRITE setInputPosition NOTIFY positionChanged)
Q_PROPERTY(Q3DScene *scene READ scene WRITE setScene NOTIFY sceneChanged)
public:
- enum InputState {
- InputStateNone = 0,
- InputStateOnScene,
- InputStateOnPrimaryView,
- InputStateOnSecondaryView,
- InputStateRotating,
- InputStatePinching
+ enum InputView {
+ InputViewNone = 0,
+ InputViewOnPrimary,
+ InputViewOnSecondary
};
public:
@@ -58,9 +54,8 @@ public:
virtual void wheelEvent(QWheelEvent *event);
public:
- // TODO: Check if the inputState needs to be visible outside of subclasses in the final architecture
- InputState inputState();
- void setInputState(InputState inputState);
+ InputView inputView() const;
+ void setInputView(InputView inputView);
QPoint inputPosition() const;
void setInputPosition(const QPoint &position);
@@ -70,7 +65,7 @@ public:
signals:
void positionChanged(QPoint position);
- void inputStateChanged(InputState state);
+ void inputViewChanged(InputView view);
void sceneChanged(const Q3DScene *scene);
protected:
@@ -88,6 +83,6 @@ private:
friend class QTouch3DInputHandlerPrivate;
};
-QT_DATAVISUALIZATION_END_NAMESPACE
+QT_END_NAMESPACE_DATAVISUALIZATION
-#endif // QABSTRACT3DINPUTHANDLER_H
+#endif
diff --git a/src/datavisualization/input/qabstract3dinputhandler_p.h b/src/datavisualization/input/qabstract3dinputhandler_p.h
index 205abf66..52b1a5f6 100644
--- a/src/datavisualization/input/qabstract3dinputhandler_p.h
+++ b/src/datavisualization/input/qabstract3dinputhandler_p.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc
+** Copyright (C) 2014 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
@@ -33,7 +33,7 @@
#include "qabstract3dinputhandler.h"
#include <QRect>
-QT_DATAVISUALIZATION_BEGIN_NAMESPACE
+QT_BEGIN_NAMESPACE_DATAVISUALIZATION
class QAbstract3DInputHandler;
class Q3DScene;
@@ -45,6 +45,13 @@ public:
~QAbstract3DInputHandlerPrivate();
public:
+ enum InputState {
+ InputStateNone = 0,
+ InputStateSelecting,
+ InputStateRotating,
+ InputStatePinching
+ };
+
QAbstract3DInputHandler *q_ptr;
int m_prevDistance;
QPoint m_previousInputPos;
@@ -53,11 +60,10 @@ public:
GLfloat m_defaultYRotation;
private:
- QAbstract3DInputHandler::InputState m_inputState;
+ QAbstract3DInputHandler::InputView m_inputView;
QPoint m_inputPosition;
QRect m_mainViewPort;
- // TODO: Check if this could be avoided with signals/slots or some other way.
Q3DScene *m_scene;
bool m_isDefaultHandler;
@@ -65,6 +71,6 @@ private:
friend class Abstract3DController;
};
-QT_DATAVISUALIZATION_END_NAMESPACE
+QT_END_NAMESPACE_DATAVISUALIZATION
-#endif // QABSTRACT3DINPUTHANDLER_P_H
+#endif
diff --git a/src/datavisualization/input/qtouch3dinputhandler.cpp b/src/datavisualization/input/qtouch3dinputhandler.cpp
index 42769562..76b5721b 100644
--- a/src/datavisualization/input/qtouch3dinputhandler.cpp
+++ b/src/datavisualization/input/qtouch3dinputhandler.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc
+** Copyright (C) 2014 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
@@ -21,7 +21,7 @@
#include <QTimer>
#include <qmath.h>
-QT_DATAVISUALIZATION_BEGIN_NAMESPACE
+QT_BEGIN_NAMESPACE_DATAVISUALIZATION
const float maxTapAndHoldJitter = 20.0f;
const int maxPinchJitter = 10;
@@ -45,22 +45,27 @@ const int maxZoomLevel = 500;
*
* Default touch input handler has the following functionalty:
* \table
- * \header
- * \li Gesture \li Action
- * \row
- * \li Touch-And-Move \li Rotate graph within limits set for Q3DCamera
- * \row
- * \li Tap \li Select the item tapped or remove selection if none.
- * May open the secondary view depending on the
- * selection mode.
- * \row
- * \li Tap-And-Hold \li Same as tap.
- * \row
- * \li Pinch \li Zoom in/out within default range (10...500%).
- * \row
- * \li Tap on the primary view when the secondary view is visible
- * \li Closes the secondary view.
- * \note Secondary view is available only for Q3DBars and Q3DSurface graphs.
+ * \header
+ * \li Gesture
+ * \li Action
+ * \row
+ * \li Touch-And-Move
+ * \li Rotate graph within limits set for Q3DCamera
+ * \row
+ * \li Tap
+ * \li Select the item tapped or remove selection if none.
+ * May open the secondary view depending on the
+ * \l {QAbstract3DGraph::selectionMode}{selection mode}.
+ * \row
+ * \li Tap-And-Hold
+ * \li Same as tap.
+ * \row
+ * \li Pinch
+ * \li Zoom in/out within default range (10...500%).
+ * \row
+ * \li Tap on the primary view when the secondary view is visible
+ * \li Closes the secondary view.
+ * \note Secondary view is available only for Q3DBars and Q3DSurface graphs.
* \endtable
*/
@@ -99,24 +104,27 @@ void QTouch3DInputHandler::touchEvent(QTouchEvent *event)
if (event->type() == QEvent::TouchBegin) {
if (scene()->isSlicingActive()) {
if (scene()->isPointInPrimarySubView(pointerPos.toPoint()))
- setInputState(InputStateOnPrimaryView);
+ setInputView(InputViewOnPrimary);
else if (scene()->isPointInSecondarySubView(pointerPos.toPoint()))
- setInputState(InputStateOnSecondaryView);
+ setInputView(InputViewOnSecondary);
else
- setInputState(InputStateNone);
+ setInputView(InputViewNone);
} else {
// Handle possible tap-and-hold selection
d_ptr->m_startHoldPos = pointerPos;
d_ptr->m_touchHoldPos = d_ptr->m_startHoldPos;
d_ptr->m_holdTimer->start();
+ setInputView(InputViewOnPrimary);
// Start rotating
- setInputState(InputStateRotating);
+ d_ptr->m_inputState = QAbstract3DInputHandlerPrivate::InputStateRotating;
setInputPosition(pointerPos.toPoint());
}
} else if (event->type() == QEvent::TouchEnd) {
+ setInputView(InputViewNone);
d_ptr->m_holdTimer->stop();
// Handle possible selection
- d_ptr->handleSelection(pointerPos);
+ if (QAbstract3DInputHandlerPrivate::InputStatePinching != d_ptr->m_inputState)
+ d_ptr->handleSelection(pointerPos);
} else if (event->type() == QEvent::TouchUpdate) {
if (!scene()->isSlicingActive()) {
d_ptr->m_touchHoldPos = pointerPos;
@@ -131,7 +139,8 @@ void QTouch3DInputHandler::touchEvent(QTouchEvent *event)
QTouch3DInputHandlerPrivate::QTouch3DInputHandlerPrivate(QTouch3DInputHandler *q)
: q_ptr(q),
- m_holdTimer(0)
+ m_holdTimer(0),
+ m_inputState(QAbstract3DInputHandlerPrivate::InputStateNone)
{
m_holdTimer = new QTimer();
m_holdTimer->setSingleShot(true);
@@ -151,7 +160,7 @@ void QTouch3DInputHandlerPrivate::handlePinchZoom(float distance)
int prevDist = q_ptr->prevDistance();
if (prevDist > 0 && qAbs(prevDist - newDistance) < maxPinchJitter)
return;
- q_ptr->setInputState(QAbstract3DInputHandler::InputStatePinching);
+ m_inputState = QAbstract3DInputHandlerPrivate::InputStatePinching;
Q3DCamera *camera = q_ptr->scene()->activeCamera();
int zoomLevel = camera->zoomLevel();
float zoomRate = qSqrt(qSqrt(zoomLevel));
@@ -172,24 +181,27 @@ void QTouch3DInputHandlerPrivate::handleTapAndHold()
QPointF distance = m_startHoldPos - m_touchHoldPos;
if (distance.manhattanLength() < maxTapAndHoldJitter) {
q_ptr->setInputPosition(m_touchHoldPos.toPoint());
- q_ptr->setInputState(QAbstract3DInputHandler::InputStateOnScene);
+ q_ptr->scene()->setSelectionQueryPosition(m_touchHoldPos.toPoint());
+ m_inputState = QAbstract3DInputHandlerPrivate::InputStateSelecting;
}
}
void QTouch3DInputHandlerPrivate::handleSelection(const QPointF &position)
{
QPointF distance = m_startHoldPos - position;
- if (distance.manhattanLength() < maxSelectionJitter)
- q_ptr->setInputState(QAbstract3DInputHandler::InputStateOnScene);
- else
- q_ptr->setInputState(QAbstract3DInputHandler::InputStateNone);
+ if (distance.manhattanLength() < maxSelectionJitter) {
+ m_inputState = QAbstract3DInputHandlerPrivate::InputStateSelecting;
+ q_ptr->scene()->setSelectionQueryPosition(position.toPoint());
+ } else {
+ m_inputState = QAbstract3DInputHandlerPrivate::InputStateNone;
+ q_ptr->setInputView(QAbstract3DInputHandler::InputViewNone);
+ }
q_ptr->setPreviousInputPos(position.toPoint());
- q_ptr->scene()->setSelectionQueryPosition(position.toPoint());
}
void QTouch3DInputHandlerPrivate::handleRotation(const QPointF &position)
{
- if (QAbstract3DInputHandler::InputStateRotating == q_ptr->inputState()) {
+ if (QAbstract3DInputHandlerPrivate::InputStateRotating == m_inputState) {
Q3DScene *scene = q_ptr->scene();
Q3DCamera *camera = scene->activeCamera();
float xRotation = camera->xRotation();
@@ -209,4 +221,4 @@ void QTouch3DInputHandlerPrivate::handleRotation(const QPointF &position)
}
}
-QT_DATAVISUALIZATION_END_NAMESPACE
+QT_END_NAMESPACE_DATAVISUALIZATION
diff --git a/src/datavisualization/input/qtouch3dinputhandler.h b/src/datavisualization/input/qtouch3dinputhandler.h
index 1c366926..70521d19 100644
--- a/src/datavisualization/input/qtouch3dinputhandler.h
+++ b/src/datavisualization/input/qtouch3dinputhandler.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc
+** Copyright (C) 2014 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
@@ -21,7 +21,7 @@
#include <QtDataVisualization/q3dinputhandler.h>
-QT_DATAVISUALIZATION_BEGIN_NAMESPACE
+QT_BEGIN_NAMESPACE_DATAVISUALIZATION
class QTouch3DInputHandlerPrivate;
@@ -42,6 +42,6 @@ private:
QScopedPointer<QTouch3DInputHandlerPrivate> d_ptr;
};
-QT_DATAVISUALIZATION_END_NAMESPACE
+QT_END_NAMESPACE_DATAVISUALIZATION
-#endif // QTOUCH3DINPUTHANDLER_H
+#endif
diff --git a/src/datavisualization/input/qtouch3dinputhandler_p.h b/src/datavisualization/input/qtouch3dinputhandler_p.h
index 11163140..19c30142 100644
--- a/src/datavisualization/input/qtouch3dinputhandler_p.h
+++ b/src/datavisualization/input/qtouch3dinputhandler_p.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc
+** Copyright (C) 2014 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
@@ -19,9 +19,10 @@
#ifndef QTOUCH3DINPUTHANDLER_P_H
#define QTOUCH3DINPUTHANDLER_P_H
+#include "qabstract3dinputhandler_p.h"
#include "qtouch3dinputhandler.h"
-QT_DATAVISUALIZATION_BEGIN_NAMESPACE
+QT_BEGIN_NAMESPACE_DATAVISUALIZATION
class QAbstract3DInputHandler;
@@ -41,10 +42,11 @@ public:
public:
QTouch3DInputHandler *q_ptr;
QTimer *m_holdTimer;
+ QAbstract3DInputHandlerPrivate::InputState m_inputState;
QPointF m_startHoldPos;
QPointF m_touchHoldPos;
};
-QT_DATAVISUALIZATION_END_NAMESPACE
+QT_END_NAMESPACE_DATAVISUALIZATION
-#endif // QTOUCH3DINPUTHANDLER_H
+#endif