basic support for a touch interfacing

This commit is contained in:
Xawotihs
2010-09-26 22:21:52 +00:00
parent 7ec7fe2577
commit 81cdfb8c9b

View File

@@ -14,7 +14,6 @@
class JGEQtRenderer : public QGLWidget
{
// Q_OBJECT // must include this if you use Qt signals/slots
public:
JGEQtRenderer(QWidget *parent);
@@ -31,6 +30,16 @@ protected:
void keyPressEvent(QKeyEvent *event);
void keyReleaseEvent(QKeyEvent *event);
void mouseDoubleClickEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
protected:
QPoint lastPos;
};
uint64_t lastTickCount;
@@ -114,7 +123,7 @@ void DestroyGame(void)
JGEQtRenderer::JGEQtRenderer(QWidget *parent)
: QGLWidget(parent)
: QGLWidget(parent) /* Seems to go faster without double buffering */
{
startTimer( 5 );
setWindowTitle(g_launcher->GetName());
@@ -122,6 +131,10 @@ JGEQtRenderer::JGEQtRenderer(QWidget *parent)
setAttribute(Qt::WA_Maemo5AutoOrientation);
setAttribute(Qt::WA_Maemo5NonComposited);
#endif
setAttribute(Qt::WA_AcceptTouchEvents);
grabGesture(Qt::PanGesture);
grabGesture(Qt::PinchGesture);
grabGesture(Qt::SwipeGesture);
}
@@ -208,6 +221,46 @@ void JGEQtRenderer::timerEvent( QTimerEvent* )
updateGL();
}
void JGEQtRenderer::mousePressEvent(QMouseEvent *event)
{
lastPos = event->pos();
QGLWidget::mousePressEvent(event);
}
void JGEQtRenderer::mouseReleaseEvent(QMouseEvent *event)
{
QPoint currentPos = event->pos();
int dx = currentPos.x() - lastPos.x();
int dy = currentPos.y() - lastPos.y();
if(abs(dx) > abs(dy) && dx > 5)
{
g_engine->HoldKey_NoRepeat(JGE_BTN_RIGHT);
}
else if(abs(dx) > abs(dy) && dx < -5)
{
g_engine->HoldKey_NoRepeat(JGE_BTN_LEFT);
}
else if(abs(dx) < abs(dy) && dy < -5)
{
g_engine->HoldKey_NoRepeat(JGE_BTN_UP);
}
else if(abs(dx) < abs(dy) && dy > 5)
{
g_engine->HoldKey_NoRepeat(JGE_BTN_DOWN);
}
QGLWidget::mouseReleaseEvent(event);
}
void JGEQtRenderer::mouseDoubleClickEvent(QMouseEvent *event)
{
g_engine->HoldKey_NoRepeat(JGE_BTN_OK);
event->accept();
}
void JGEQtRenderer::keyPressEvent(QKeyEvent *event)
{