diff options
Diffstat (limited to 'src/datavis3d/input/qtouch3dinputhandler.cpp')
-rw-r--r-- | src/datavis3d/input/qtouch3dinputhandler.cpp | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/src/datavis3d/input/qtouch3dinputhandler.cpp b/src/datavis3d/input/qtouch3dinputhandler.cpp index 128b8c49..d0676719 100644 --- a/src/datavis3d/input/qtouch3dinputhandler.cpp +++ b/src/datavis3d/input/qtouch3dinputhandler.cpp @@ -16,18 +16,23 @@ ** ****************************************************************************/ #include "qtouch3dinputhandler.h" +#include "q3dcamera.h" QT_DATAVIS3D_BEGIN_NAMESPACE -QTouch3DInputHandler::QTouch3DInputHandler() : - Q3DInputHandler() +QTouch3DInputHandler::QTouch3DInputHandler(QObject *parent) : + Q3DInputHandler(parent) +{ +} + +QTouch3DInputHandler::~QTouch3DInputHandler() { } // Input event listeners void QTouch3DInputHandler::mouseDoubleClickEvent(QMouseEvent *event) { - if (!slicingActivated()) { + if (!scene()->isSlicingActivated()) { setInputState( QDataVis::InputOnScene ); // update mouse positions to prevent jumping when releasing or repressing a button setInputPosition( event->pos() ); @@ -39,13 +44,13 @@ void QTouch3DInputHandler::touchEvent(QTouchEvent *event) QList<QTouchEvent::TouchPoint> points; points = event->touchPoints(); - if (!slicingActivated() && points.count() == 2) { + if (!scene()->isSlicingActivated() && points.count() == 2) { setInputState( QDataVis::InputOnPinch ); QPointF distance = points.at(0).pos() - points.at(1).pos(); int newDistance = distance.manhattanLength(); int zoomRate = 1; - int zoomLevel = QAbstract3DInputHandler::zoomLevel(); + int zoomLevel = scene()->camera()->zoomLevel(); if (zoomLevel > 100) zoomRate = 5; if (newDistance > prevDistance()) @@ -56,7 +61,7 @@ void QTouch3DInputHandler::touchEvent(QTouchEvent *event) zoomLevel = 500; else if (zoomLevel < 10) zoomLevel = 10; - setZoomLevel(zoomLevel); + scene()->camera()->setZoomLevel(zoomLevel); setPrevDistance(newDistance); } } @@ -64,16 +69,16 @@ void QTouch3DInputHandler::touchEvent(QTouchEvent *event) void QTouch3DInputHandler::mousePressEvent(QMouseEvent *event, const QPoint &mousePos) { // TODO: This code needs revisiting with new Qt releases and possibly move to using touch events for these as well. - QRect mainViewPort = mainViewPortRect(); if (Qt::LeftButton == event->button()) { - if (slicingActivated()) { - if (mousePos.x() <= mainViewPort.width() - && mousePos.y() <= mainViewPort.height()) { + if (scene()->isSlicingActivated()) { + if (scene()->isInputInsideMainView(mousePos)) { setInputState(QDataVis::InputOnOverview); //qDebug() << "Mouse pressed on overview"; - } else { + } else if (scene()->isInputInsideSliceView(mousePos)) { setInputState(QDataVis::InputOnSlice); //qDebug() << "Mouse pressed on zoom"; + } else { + setInputState(QDataVis::InputNone); } } else { setInputState(QDataVis::InputRotating); @@ -84,14 +89,12 @@ void QTouch3DInputHandler::mousePressEvent(QMouseEvent *event, const QPoint &mou } else if (Qt::MiddleButton == event->button()) { // reset rotations setInputPosition(QPoint(0, 0)); - } else if (!slicingActivated() && Qt::RightButton == event->button()) { + } else if (Qt::RightButton == event->button()) { // disable rotating when in slice view setInputState(QDataVis::InputOnScene); // update mouse positions to prevent jumping when releasing or repressing a button setInputPosition(mousePos); } - // TODO: Call actual camera class when it's been written. - //m_cameraHelper->updateMousePos(m_mousePos); } QT_DATAVIS3D_END_NAMESPACE |