Пример #1
0
void Menu::swipe()
{
  int margin = -index * 800;
  for (int i = 0 ; i < nbElements ; ++i)
    {
      CvRect rTmp = tileList[i]->getPos();
      CvRect sTmp = tileList[index]->getPos();
      
      rTmp.x = 200 + endGestureX - beginGestureX + margin;
      if (i == index)
	{
	  tileList[index]->setTilePos(rTmp);
	  if (tileList[index]->getPos().x < 50)
	    {
	      ++index;
	      if (index >= nbElements)
		index = nbElements - 1;
	      doSwipe();
	      break;
	    }
	  else if (tileList[index]->getPos().x + tileList[index]->getPos().width > 750)
	    {
	      --index;
	      if (index < 0)
		index = 0;
	      doSwipe();
	      break;
	    }
	}
      else
	tileList[i]->setTilePos(rTmp);
      margin += 800;
    }
}
Пример #2
0
// handler for pointer release events
void AnsiWidget::pointerReleaseEvent(MAEvent &event) {
  if (_activeButton != NULL && _front == _screens[MENU_SCREEN]) {
    _activeButton->clicked(event.point.x, event.point.y, false);
  } else if (_activeButton != NULL && _activeButton->_pressed) {
    _activeButton->_pressed = false;
    drawActiveButton();
    _activeButton->clicked(event.point.x, event.point.y, false);
  } else if (_swipeExit) {
    _swipeExit = false;
  } else {
    int maxScroll = (_front->_curY - _front->_height) + (2 * _fontSize);
    if (_yMove != -1 && maxScroll > 0) {
      _front->drawInto();

      // swipe test - min distance and not max duration
      int deltaX = _xTouch - event.point.x;
      int deltaY = _yTouch - event.point.y;
      int distance = (int) fabs(sqrt(deltaX * deltaX + deltaY * deltaY));
      int now = maGetMilliSecondCount();
      if (distance >= SWIPE_MIN_DISTANCE && (now - _touchTime) < SWIPE_MAX_DURATION) {
        bool moveDown = (deltaY >= SWIPE_MIN_DISTANCE);
        doSwipe(now, moveDown, distance, maxScroll);
      } else if (_front->_scrollY > maxScroll) {
        _front->_scrollY = maxScroll;
      }
      // ensure the scrollbar is removed
      _front->_dirty = true;
      flush(true);
      _touchTime = 0;
    }
  }

  if (_hoverInput) {
    int dx = _front->_x;
    int dy = _front->_y - _front->_scrollY;
    _hoverInput->drawHover(dx, dy, false);
    _hoverInput = NULL;
  }

  _xTouch = _xMove = -1;
  _yTouch = _yMove = -1;
  _activeButton = NULL;
  _focus = NULL;
}