summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/input
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-12-05 11:26:25 +0200
committerTomi Korpipää <tomi.korpipaa@digia.com>2013-12-05 12:00:39 +0200
commita665bdb2010c3833f47d364945007cccc00aed2b (patch)
treeb364646695ccf068d409c785a10531e04f3c261d /src/datavisualization/input
parente57ed8602ac02ff86e3c08362ca4fbe23fe05bfb (diff)
QML docs + enum moving
Task-number: QTRD-2670 Task-number: QTRD-2505 Change-Id: I51a870f9a57b093e8216759a5577e161ff3afd60 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization/input')
-rw-r--r--src/datavisualization/input/q3dinputhandler.cpp16
-rw-r--r--src/datavisualization/input/qabstract3dinputhandler.cpp53
-rw-r--r--src/datavisualization/input/qabstract3dinputhandler.h19
-rw-r--r--src/datavisualization/input/qabstract3dinputhandler_p.h2
-rw-r--r--src/datavisualization/input/qtouch3dinputhandler.cpp18
5 files changed, 75 insertions, 33 deletions
diff --git a/src/datavisualization/input/q3dinputhandler.cpp b/src/datavisualization/input/q3dinputhandler.cpp
index ec00ae1f..53a66b52 100644
--- a/src/datavisualization/input/q3dinputhandler.cpp
+++ b/src/datavisualization/input/q3dinputhandler.cpp
@@ -91,14 +91,14 @@ void Q3DInputHandler::mousePressEvent(QMouseEvent *event, const QPoint &mousePos
if (Qt::LeftButton == event->button()) {
if (scene()->isSlicingActive()) {
if (scene()->isPointInPrimarySubView(mousePos)) {
- setInputState(QDataVis::InputStateOnOverview);
+ setInputState(InputStateOnPrimaryView);
} else if (scene()->isPointInSecondarySubView(mousePos)) {
- setInputState(QDataVis::InputStateOnSlice);
+ setInputState(InputStateOnSecondaryView);
} else {
- setInputState(QDataVis::InputStateNone);
+ setInputState(InputStateNone);
}
} else {
- setInputState(QDataVis::InputStateOnScene);
+ setInputState(InputStateOnScene);
// update mouse positions to prevent jumping when releasing or repressing a button
setInputPosition(mousePos);
scene()->setSelectionQueryPosition(mousePos);
@@ -109,7 +109,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(QDataVis::InputStateRotating);
+ setInputState(InputStateRotating);
// update mouse positions to prevent jumping when releasing or repressing a button
setInputPosition(mousePos);
}
@@ -126,11 +126,11 @@ void Q3DInputHandler::mouseReleaseEvent(QMouseEvent *event, const QPoint &mouseP
#if defined (Q_OS_ANDROID)
Q_UNUSED(mousePos);
#else
- if (QDataVis::InputStateRotating == inputState()) {
+ if (InputStateRotating == inputState()) {
// update mouse positions to prevent jumping when releasing or repressing a button
setInputPosition(mousePos);
}
- setInputState(QDataVis::InputStateNone);
+ setInputState(InputStateNone);
#endif
}
@@ -144,7 +144,7 @@ void Q3DInputHandler::mouseMoveEvent(QMouseEvent *event, const QPoint &mousePos)
#if defined (Q_OS_ANDROID)
Q_UNUSED(mousePos);
#else
- if (QDataVis::InputStateRotating == inputState()) {
+ if (InputStateRotating == inputState()) {
// Calculate mouse movement since last frame
float xRotation = scene()->activeCamera()->xRotation();
float yRotation = scene()->activeCamera()->yRotation();
diff --git a/src/datavisualization/input/qabstract3dinputhandler.cpp b/src/datavisualization/input/qabstract3dinputhandler.cpp
index 8a8313ef..0aa8372c 100644
--- a/src/datavisualization/input/qabstract3dinputhandler.cpp
+++ b/src/datavisualization/input/qabstract3dinputhandler.cpp
@@ -20,15 +20,46 @@
QT_DATAVISUALIZATION_BEGIN_NAMESPACE
/*!
- \class QAbstract3DInputHandler
- \inmodule QtDataVisualization
- \brief The base class for implementations of input handlers.
- \since Qt Data Visualization 1.0
+ * \class QAbstract3DInputHandler
+ * \inmodule QtDataVisualization
+ * \brief The base class for implementations of input handlers.
+ * \since Qt Data Visualization 1.0
+ *
+ * QAbstract3DInputHandler is the base class that is subclassed by different input handling implementations
+ * that take input events and translate those to camera and light movements. Input handlers also translate
+ * raw input events to slicing and selection events in the scene.
+ */
+
+/*!
+ * \enum QAbstract3DInputHandler::InputState
+ *
+ * Predefined input states for mouse and touch based input handlers. All states are not valid
+ * with all 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
+ * 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.
+ */
- QAbstract3DInputHandler is the base class that is subclassed by different input handling implementations
- that take input events and translate those to camera and light movements. Input handlers also translate
- raw input events to slicing and selection events in the scene.
-*/
+/*!
+ * \qmltype AbstractInputHandler3D
+ * \inqmlmodule QtDataVisualization
+ * \since QtDataVisualization 1.0
+ * \ingroup datavisualization_qml
+ * \instantiates QAbstract3DInputHandler
+ * \brief Base type for all QtDataVisualization input handlers.
+ *
+ * This type is uncreatable.
+ */
/*!
* Constructs the base class. An optional \a parent parameter can be given
@@ -112,12 +143,12 @@ void QAbstract3DInputHandler::wheelEvent(QWheelEvent *event)
* Current enumerated input state based on the processed input events.
* When the state changes inputStateChanged() is emitted.
*/
-QDataVis::InputState QAbstract3DInputHandler::inputState()
+QAbstract3DInputHandler::InputState QAbstract3DInputHandler::inputState()
{
return d_ptr->m_inputState;
}
-void QAbstract3DInputHandler::setInputState(QDataVis::InputState inputState)
+void QAbstract3DInputHandler::setInputState(InputState inputState)
{
if (inputState != d_ptr->m_inputState) {
d_ptr->m_inputState = inputState;
@@ -201,7 +232,7 @@ QAbstract3DInputHandlerPrivate::QAbstract3DInputHandlerPrivate(QAbstract3DInputH
q_ptr(q),
m_prevDistance(0),
m_previousInputPos(QPoint(0,0)),
- m_inputState(QDataVis::InputStateNone),
+ m_inputState(QAbstract3DInputHandler::InputStateNone),
m_inputPosition(QPoint(0,0)),
m_scene(0)
{
diff --git a/src/datavisualization/input/qabstract3dinputhandler.h b/src/datavisualization/input/qabstract3dinputhandler.h
index fed6e3e0..313abef3 100644
--- a/src/datavisualization/input/qabstract3dinputhandler.h
+++ b/src/datavisualization/input/qabstract3dinputhandler.h
@@ -30,11 +30,22 @@ class QAbstract3DInputHandlerPrivate;
class QT_DATAVISUALIZATION_EXPORT QAbstract3DInputHandler : public QObject
{
Q_OBJECT
- Q_PROPERTY(QtDataVisualization::QDataVis::InputState inputState READ inputState WRITE setInputState NOTIFY inputStateChanged)
+ Q_ENUMS(InputState)
+ Q_PROPERTY(InputState inputState READ inputState WRITE setInputState NOTIFY inputStateChanged)
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
+ };
+
+public:
explicit QAbstract3DInputHandler(QObject *parent = 0);
virtual ~QAbstract3DInputHandler();
@@ -48,8 +59,8 @@ public:
public:
// TODO: Check if the inputState needs to be visible outside of subclasses in the final architecture
- QDataVis::InputState inputState();
- void setInputState(QDataVis::InputState inputState);
+ InputState inputState();
+ void setInputState(InputState inputState);
QPoint inputPosition() const;
void setInputPosition(const QPoint &position);
@@ -59,7 +70,7 @@ public:
signals:
void positionChanged(QPoint position);
- void inputStateChanged(QDataVis::InputState state);
+ void inputStateChanged(InputState state);
void sceneChanged(const Q3DScene *scene);
protected:
diff --git a/src/datavisualization/input/qabstract3dinputhandler_p.h b/src/datavisualization/input/qabstract3dinputhandler_p.h
index cad1c667..205abf66 100644
--- a/src/datavisualization/input/qabstract3dinputhandler_p.h
+++ b/src/datavisualization/input/qabstract3dinputhandler_p.h
@@ -53,7 +53,7 @@ public:
GLfloat m_defaultYRotation;
private:
- QDataVis::InputState m_inputState;
+ QAbstract3DInputHandler::InputState m_inputState;
QPoint m_inputPosition;
QRect m_mainViewPort;
diff --git a/src/datavisualization/input/qtouch3dinputhandler.cpp b/src/datavisualization/input/qtouch3dinputhandler.cpp
index b36fdb99..32b8c609 100644
--- a/src/datavisualization/input/qtouch3dinputhandler.cpp
+++ b/src/datavisualization/input/qtouch3dinputhandler.cpp
@@ -99,18 +99,18 @@ void QTouch3DInputHandler::touchEvent(QTouchEvent *event)
if (event->type() == QEvent::TouchBegin) {
if (scene()->isSlicingActive()) {
if (scene()->isPointInPrimarySubView(pointerPos.toPoint()))
- setInputState(QDataVis::InputStateOnOverview);
+ setInputState(InputStateOnPrimaryView);
else if (scene()->isPointInSecondarySubView(pointerPos.toPoint()))
- setInputState(QDataVis::InputStateOnSlice);
+ setInputState(InputStateOnSecondaryView);
else
- setInputState(QDataVis::InputStateNone);
+ setInputState(InputStateNone);
} 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();
// Start rotating
- setInputState(QDataVis::InputStateRotating);
+ setInputState(InputStateRotating);
setInputPosition(pointerPos.toPoint());
}
} else if (event->type() == QEvent::TouchEnd) {
@@ -151,7 +151,7 @@ void QTouch3DInputHandlerPrivate::handlePinchZoom(float distance)
int prevDist = q_ptr->prevDistance();
if (prevDist > 0 && qAbs(prevDist - newDistance) < maxPinchJitter)
return;
- q_ptr->setInputState(QDataVis::InputStateOnPinch);
+ q_ptr->setInputState(QAbstract3DInputHandler::InputStatePinching);
Q3DCamera *camera = q_ptr->scene()->activeCamera();
int zoomLevel = camera->zoomLevel();
float zoomRate = qSqrt(qSqrt(zoomLevel));
@@ -172,7 +172,7 @@ void QTouch3DInputHandlerPrivate::handleTapAndHold()
QPointF distance = m_startHoldPos - m_touchHoldPos;
if (distance.manhattanLength() < maxTapAndHoldJitter) {
q_ptr->setInputPosition(m_touchHoldPos.toPoint());
- q_ptr->setInputState(QDataVis::InputStateOnScene);
+ q_ptr->setInputState(QAbstract3DInputHandler::InputStateOnScene);
}
}
@@ -180,16 +180,16 @@ void QTouch3DInputHandlerPrivate::handleSelection(const QPointF &position)
{
QPointF distance = m_startHoldPos - position;
if (distance.manhattanLength() < maxSelectionJitter)
- q_ptr->setInputState(QDataVis::InputStateOnScene);
+ q_ptr->setInputState(QAbstract3DInputHandler::InputStateOnScene);
else
- q_ptr->setInputState(QDataVis::InputStateNone);
+ q_ptr->setInputState(QAbstract3DInputHandler::InputStateNone);
q_ptr->setPreviousInputPos(position.toPoint());
q_ptr->scene()->setSelectionQueryPosition(position.toPoint());
}
void QTouch3DInputHandlerPrivate::handleRotation(const QPointF &position)
{
- if (QDataVis::InputStateRotating == q_ptr->inputState()) {
+ if (QAbstract3DInputHandler::InputStateRotating == q_ptr->inputState()) {
Q3DScene *scene = q_ptr->scene();
Q3DCamera *camera = scene->activeCamera();
float xRotation = camera->xRotation();