MainWindow *win = ((MainWindow *)this->parent()->parent());
rotateAngle = win->getUIState()->layoutAngle;
scaleFactor = win->getUIState()->getScaleFactor();
- elapsed = 0;
//setAutoFillBackground(false);
qt5_window_height = height();
}
+void DisplayWidget::sendTouchEvent(int eventType, int clientX, int clientY)
+{
+ int xx = clientX / scaleFactor;
+ int yy = clientY / scaleFactor;
+ int absX = xx;
+ int absY = yy;
+
+ /* TODO: x*cos(rad)-y*sin(rad) */
+ switch(rotateAngle) {
+ case 90: /* Reverse Landscape */
+ absX = yy;
+ absY = resolution.height() - xx;
+ break;
+ case 180: /* Reverse Portrait */
+ absX = resolution.width() - xx;
+ absY = resolution.height() - yy;
+ break;
+ case 270: /* Landscape */
+ absX = resolution.width() - yy;
+ absY = xx;
+ break;
+ case 0:
+ default:
+ break;
+ }
+
+ do_mouse_event(0, eventType, clientX, clientY, absX, absY, 0);
+}
+
void DisplayWidget::mousePressEvent(QMouseEvent *event)
{
- do_mouse_event(0, 1, event->x(), event->y(),
- event->x() / scaleFactor, event->y() / scaleFactor, 0);
+ if (event->button() == Qt::LeftButton) {
+ isDragging = true;
+
+ sendTouchEvent(TOUCH_PRESS, event->x(), event->y());
+ }
}
void DisplayWidget::mouseReleaseEvent(QMouseEvent *event)
{
- do_mouse_event(0, 2, event->x(), event->y(),
- event->x() / scaleFactor, event->y() / scaleFactor, 0);
+ if (event->button() == Qt::LeftButton) {
+ if (isDragging) {
+ isDragging = false;
+ }
+
+ sendTouchEvent(TOUCH_RELEASE, event->x(), event->y());
+ }
}
void DisplayWidget::mouseMoveEvent(QMouseEvent *event)
{
- /* do nothing */
+ if (isDragging == true) {
+ int event_type = TOUCH_PRESS;
+ int clientX = event->x();
+ int clientY = event->y();
+
+ if (clientX < 0) {
+ event_type = TOUCH_RELEASE;
+ clientX = 0;
+ isDragging = false;
+ } else if (clientX >= width()) {
+ event_type = TOUCH_RELEASE;
+ clientX = width() - 1;
+ isDragging = false;
+ }
+
+ if (clientY < 0) {
+ event_type = TOUCH_RELEASE;
+ clientY = 0;
+ isDragging = false;
+ } else if (clientY >= height()) {
+ event_type = TOUCH_RELEASE;
+ clientY = height() - 1;
+ isDragging = false;
+ }
+
+ sendTouchEvent(event_type, clientX, clientY);
+ }
}
/*