From 594fc157103ea419091425e5315cb6a82ef82654 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomi=20Korpip=C3=A4=C3=A4?= Date: Wed, 2 Oct 2013 08:46:19 +0300 Subject: Android rotate fixed Task-number: QTRD-2360 + updated input handler documentation Change-Id: Ie8ab299b9acaef749773df5d5bbcf0e16d17f18c Reviewed-by: Mika Salmela --- .../data/qheightmapsurfacedataproxy.cpp | 6 +-- src/datavisualization/input/q3dinputhandler.cpp | 45 +++++++++++++++++----- .../input/qabstract3dinputhandler.h | 1 - .../input/qtouch3dinputhandler.cpp | 35 +++++++++++++---- 4 files changed, 67 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/datavisualization/data/qheightmapsurfacedataproxy.cpp b/src/datavisualization/data/qheightmapsurfacedataproxy.cpp index 05b44a17..7c8f9fce 100644 --- a/src/datavisualization/data/qheightmapsurfacedataproxy.cpp +++ b/src/datavisualization/data/qheightmapsurfacedataproxy.cpp @@ -202,9 +202,9 @@ QString QHeightMapSurfaceDataProxy::heightMapFile() const } /*! - * A convenience function for setting all minimum and maximum values at the same time - * The minimum values must be smaller than the corresponding maximum value. Otherwise - * the values get adjusted so that they are valid. + * A convenience function for setting all minimum (\a minX and \a minZ) and maximum + * (\a maxX and \a maxZ) values at the same time. The minimum values must be smaller than the + * corresponding maximum value. Otherwise the values get adjusted so that they are valid. */ void QHeightMapSurfaceDataProxy::setValueRanges(float minX, float maxX, float minZ, float maxZ) { diff --git a/src/datavisualization/input/q3dinputhandler.cpp b/src/datavisualization/input/q3dinputhandler.cpp index 17f08cc6..bbbde7d8 100644 --- a/src/datavisualization/input/q3dinputhandler.cpp +++ b/src/datavisualization/input/q3dinputhandler.cpp @@ -32,16 +32,31 @@ const int nearZoomRangeDivider = 12; const int midZoomRangeDivider = 60; const int farZoomRangeDivider = 120; -const float rotationSpeed = 100.0f; +const float rotationSpeed = 100.0f; /*! - \class Q3DInputHandler - \inmodule QtDataVisualization - \brief Basic wheel mouse based input handler. - \since 1.0.0 - - Q3DInputHandler is the basic input handler for wheel mouse type of input devices. -*/ + * \class Q3DInputHandler + * \inmodule QtDataVisualization + * \brief Basic wheel mouse based input handler. + * \since 1.0.0 + * + * Q3DInputHandler is the basic input handler for wheel mouse type of input devices. + * + * Default input handler has the following functionalty: + * \table + * \header + * \li Mouse action \li Action + * \row + * \li 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 + * \row + * \li Mouse wheel \li Zoom in/out within default range (10...500%) + * \row + * \li Left click on secodanry view \li Return to primary view when in slice mode + * \note Slice mode is available in Q3DBars and Q3DSurface only + * \endtable + */ /*! * Constructs the basic mouse input handler. An optional \a parent parameter can be given @@ -66,6 +81,10 @@ Q3DInputHandler::~Q3DInputHandler() */ void Q3DInputHandler::mousePressEvent(QMouseEvent *event, const QPoint &mousePos) { +#if defined(Q_OS_ANDROID) + Q_UNUSED(event); + Q_UNUSED(mousePos); +#else if (Qt::LeftButton == event->button()) { if (scene()->isSlicingActive()) { if (scene()->isPointInPrimarySubView(mousePos)) { @@ -90,6 +109,7 @@ void Q3DInputHandler::mousePressEvent(QMouseEvent *event, const QPoint &mousePos // update mouse positions to prevent jumping when releasing or repressing a button setInputPosition(mousePos); } +#endif } /*! @@ -99,11 +119,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) + Q_UNUSED(mousePos); +#else if (QDataVis::InputRotating == inputState()) { // update mouse positions to prevent jumping when releasing or repressing a button setInputPosition(mousePos); } setInputState(QDataVis::InputNone); +#endif } /*! @@ -113,7 +137,9 @@ void Q3DInputHandler::mouseReleaseEvent(QMouseEvent *event, const QPoint &mouseP void Q3DInputHandler::mouseMoveEvent(QMouseEvent *event, const QPoint &mousePos) { Q_UNUSED(event); - +#if defined (Q_OS_ANDROID) + Q_UNUSED(mousePos); +#else if (QDataVis::InputRotating == inputState()) { // Calculate mouse movement since last frame QPointF rotations = scene()->activeCamera()->rotations(); @@ -132,6 +158,7 @@ void Q3DInputHandler::mouseMoveEvent(QMouseEvent *event, const QPoint &mousePos) setPreviousInputPos(inputPosition()); setInputPosition(mousePos); } +#endif } /*! diff --git a/src/datavisualization/input/qabstract3dinputhandler.h b/src/datavisualization/input/qabstract3dinputhandler.h index 0d9aa0aa..d7bf3aee 100644 --- a/src/datavisualization/input/qabstract3dinputhandler.h +++ b/src/datavisualization/input/qabstract3dinputhandler.h @@ -60,7 +60,6 @@ public: signals: void positionChanged(const QPoint &position); void inputStateChanged(QDataVis::InputState state); - void selectionAtPoint(const QPoint &point); void sceneChanged(const Q3DScene *scene); protected: diff --git a/src/datavisualization/input/qtouch3dinputhandler.cpp b/src/datavisualization/input/qtouch3dinputhandler.cpp index ab97332f..fd7ce39c 100644 --- a/src/datavisualization/input/qtouch3dinputhandler.cpp +++ b/src/datavisualization/input/qtouch3dinputhandler.cpp @@ -25,20 +25,41 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE const qreal maxTapAndHoldJitter = 20; const int maxPinchJitter = 10; +#if defined (Q_OS_ANDROID) +const int maxSelectionJitter = 10; +#else const int maxSelectionJitter = 5; +#endif const int tapAndHoldTime = 250; const float rotationSpeed = 200.0f; const int minZoomLevel = 10; const int maxZoomLevel = 500; /*! - \class QTouch3DInputHandler - \inmodule QtDataVisualization - \brief Basic touch display based input handler. - \since 1.0.0 - - QTouch3DInputHandler is the basic input handler for touch screen devices. -*/ + * \class QTouch3DInputHandler + * \inmodule QtDataVisualization + * \brief Basic touch display based input handler. + * \since 1.0.0 + * + * QTouch3DInputHandler is the basic input handler for touch screen devices. + * + * 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 item under pointer or remove selection if none + * \row + * \li Tap-And-Hold \li Select item under pointer or remove selection if none + * \row + * \li Pinch \li Zoom in/out within default range (10...500%) + * \row + * \li Tap on secondary view \li Return to primary view when in slice mode + * \note Slice mode is available in Q3DBars and Q3DSurface only + * \endtable + */ /*! * Constructs the basic touch display input handler. An optional \a parent parameter can be given -- cgit v1.2.3