C
Qt Quick Ultralite Watch Demo
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial
#include "flickControl.h"
#include <platforminterface/platforminterface.h>
#include <qul/qul.h>
static int flickCount = 0;
static Qul::PlatformInterface::TouchPoint touchPoint;
struct Functor
{
void operator()()
{
FlickControl::instance().continueFlick();
if (++flickCount >= 25) {
flickCount = 0;
FlickControl::instance().endFlick();
}
}
};
void FlickControl::startFlick(int x, int y, int dx, int dy)
{
touchPoint.positionX = x;
touchPoint.positionY = y;
_dx = dx;
_dy = dy;
touchPoint.state = Qul::PlatformInterface::TouchPoint::Pressed;
Qul::PlatformInterface::handleTouchEvent(nullptr /* screen */,
Qul::Platform::getPlatformInstance()->currentTimestamp(),
&touchPoint,
1);
timer.onTimeout(Functor());
timer.setSingleShot(false);
timer.start(3);
}
void FlickControl::continueFlick()
{
touchPoint.positionX -= _dx;
touchPoint.positionY -= _dy;
touchPoint.state = Qul::PlatformInterface::TouchPoint::Moved;
Qul::PlatformInterface::handleTouchEvent(nullptr /* screen */,
Qul::Platform::getPlatformInstance()->currentTimestamp(),
&touchPoint,
1);
}
void FlickControl::endFlick()
{
timer.stop();
touchPoint.state = Qul::PlatformInterface::TouchPoint::Released;
Qul::PlatformInterface::handleTouchEvent(nullptr /* screen */,
Qul::Platform::getPlatformInstance()->currentTimestamp(),
&touchPoint,
1);
}
bool FlickControl::running()
{
return timer.isActive();
}