void GraphicsReportView::init_state_machine()
{
    rootState = new QState();
    speedViewState = new QState(rootState);
    airTimeViewState = new QState(rootState);
    heartViewState = new QState(rootState);
    rushViewState = new QState(rootState);
    altitudeViewState = new QState(rootState);
    rootState->setInitialState(speedViewState);

    rootState->addTransition(speedLink, SIGNAL(released()), speedViewState);
    rootState->addTransition(&speedPlot, SIGNAL(swipeLeft()), heartViewState);
    rootState->addTransition(&speedPlot, SIGNAL(swipeRigth()), speedViewState);
    rootState->addTransition(&speedPlot, SIGNAL(bounceBack()), speedViewState);

    rootState->addTransition(heartLink, SIGNAL(released()), heartViewState);
    rootState->addTransition(&heartPlot, SIGNAL(swipeLeft()), airTimeViewState);
    rootState->addTransition(&heartPlot, SIGNAL(swipeRigth()), speedViewState);
    rootState->addTransition(&heartPlot, SIGNAL(bounceBack()), heartViewState);

    rootState->addTransition(airTimeLink, SIGNAL(released()), airTimeViewState);
    rootState->addTransition(&airTimePlot, SIGNAL(swipeLeft()), rushViewState);
    rootState->addTransition(&airTimePlot, SIGNAL(swipeRigth()), heartViewState);
    rootState->addTransition(&airTimePlot, SIGNAL(bounceBack()), airTimeViewState);

    rootState->addTransition(rushLink, SIGNAL(released()), rushViewState);
    rootState->addTransition(&rushPlot, SIGNAL(swipeLeft()), altitudeViewState);
    rootState->addTransition(&rushPlot, SIGNAL(swipeRigth()), airTimeViewState);
    rootState->addTransition(&rushPlot, SIGNAL(bounceBack()), rushViewState);

    rootState->addTransition(altitudeLink, SIGNAL(released()), altitudeViewState);
    rootState->addTransition(&altitudePlot, SIGNAL(swipeRigth()), rushViewState);
    rootState->addTransition(&altitudePlot, SIGNAL(swipeLeft()), altitudeViewState);
    rootState->addTransition(&altitudePlot, SIGNAL(bounceBack()), altitudeViewState);


    setup_link_alt_bts(speedViewState, speedLink);
    setup_link_alt_bts(heartViewState, heartLink);
    setup_link_alt_bts(airTimeViewState, airTimeLink);
    setup_link_alt_bts(rushViewState, rushLink);
    setup_link_alt_bts(altitudeViewState, altitudeLink);

    setup_rolling_plot_properties(speedViewState, 0);
    setup_rolling_plot_properties(heartViewState, 1);
    setup_rolling_plot_properties(airTimeViewState, 2);
    setup_rolling_plot_properties(rushViewState, 3);
    setup_rolling_plot_properties(altitudeViewState, 4);

    machine.setGlobalRestorePolicy(QStateMachine::RestoreProperties);
    machine.addState(rootState);
    machine.setInitialState(rootState);

    machine.addDefaultAnimation(new PushBurtonAnimation(&speedPlot, "x", this));
    machine.addDefaultAnimation(new PushBurtonAnimation(&heartPlot, "x", this));
    machine.addDefaultAnimation(new PushBurtonAnimation(&airTimePlot, "x", this));
    machine.addDefaultAnimation(new PushBurtonAnimation(&rushPlot, "x", this));
    machine.addDefaultAnimation(new PushBurtonAnimation(&altitudePlot, "x", this));

    machine.start();
}
bool SwipeArea::touchMove(QPointF pos) {
	if (d->pos.x() < 0 && d->pos.y() < 0) {
		return false;
	}
	QPointF p = pos - d->pos;
	if (qAbs(p.y()) > 60) {
		d->pos = QPointF(-1, -1);
		return false;
	}

	if (p.x() > 200) {
		d->pos = QPointF(-1, -1);
		emit swipeRight();
		return false;
	} else if (p.x() < -200) {
		d->pos = QPointF(-1, -1);
		emit swipeLeft();
		return false;
	}

	return true;
}
Example #3
0
void EventReceiver::_onEvent(const int socket)
{
    if (socket != _stream.getDescriptor())
        return;

    while (_stream.hasEvent())
    {
        const Event& deflectEvent = _stream.getEvent();

        switch (deflectEvent.type)
        {
        case Event::EVT_CLOSE:
            _stop();
            return;
        case Event::EVT_PRESS:
            emit pressed(_pos(deflectEvent));
            break;
        case Event::EVT_RELEASE:
            emit released(_pos(deflectEvent));
            break;
        case Event::EVT_MOVE:
            emit moved(_pos(deflectEvent));
            break;
        case Event::EVT_VIEW_SIZE_CHANGED:
            emit resized(QSize{int(deflectEvent.dx), int(deflectEvent.dy)});
            break;
        case Event::EVT_SWIPE_LEFT:
            emit swipeLeft();
            break;
        case Event::EVT_SWIPE_RIGHT:
            emit swipeRight();
            break;
        case Event::EVT_SWIPE_UP:
            emit swipeUp();
            break;
        case Event::EVT_SWIPE_DOWN:
            emit swipeDown();
            break;
        case Event::EVT_KEY_PRESS:
            emit keyPress(deflectEvent.key, deflectEvent.modifiers,
                          QString::fromStdString(deflectEvent.text));
            break;
        case Event::EVT_KEY_RELEASE:
            emit keyRelease(deflectEvent.key, deflectEvent.modifiers,
                            QString::fromStdString(deflectEvent.text));
            break;
        case Event::EVT_TOUCH_ADD:
            emit touchPointAdded(deflectEvent.key, _pos(deflectEvent));
            break;
        case Event::EVT_TOUCH_UPDATE:
            emit touchPointUpdated(deflectEvent.key, _pos(deflectEvent));
            break;
        case Event::EVT_TOUCH_REMOVE:
            emit touchPointRemoved(deflectEvent.key, _pos(deflectEvent));
            break;
        case Event::EVT_CLICK:
        case Event::EVT_DOUBLECLICK:
        case Event::EVT_PINCH:
        case Event::EVT_WHEEL:
        default:
            break;
        }
    }

    if (!_stream.isConnected())
        _stop();
}
Example #4
0
void XN_CALLBACK_TYPE AirCursor::swipeLeftCB(XnFloat fVelocity, XnFloat fAngle, void* cxt)
{
    //std::cout << "Swipe LEFT velocity: " << fVelocity << " angle: " << fAngle << std::endl;
    AirCursor* ac = (AirCursor*)cxt;
    ac->emit swipeLeft(fVelocity, fAngle);
}