C
Qt Quick Ultralite Thermostat 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>
#ifdef QUL_DEMO_BENCHMARK_MODE
static int flickCount = 0;
static Qul::PlatformInterface::TouchPoint touchPoint;
struct Functor
{
void operator()()
{
FlickControl::instance().continueFlick();
if (++flickCount >= 50) {
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::State::Pressed;
Qul::PlatformInterface::handleTouchEvent(nullptr /* screen */,
Qul::Platform::getPlatformInstance()->currentTimestamp(),
&touchPoint,
1);
flickInProgress = true;
timer.onTimeout(Functor());
timer.setSingleShot(false);
timer.start(5);
}
void FlickControl::continueFlick()
{
touchPoint.positionX -= _dx;
touchPoint.positionY -= _dy;
touchPoint.state = Qul::PlatformInterface::TouchPoint::State::Moved;
Qul::PlatformInterface::handleTouchEvent(nullptr /* screen */,
Qul::Platform::getPlatformInstance()->currentTimestamp(),
&touchPoint,
1);
}
void FlickControl::endFlick()
{
timer.stop();
touchPoint.state = Qul::PlatformInterface::TouchPoint::State::Released;
Qul::PlatformInterface::handleTouchEvent(nullptr /* screen */,
Qul::Platform::getPlatformInstance()->currentTimestamp(),
&touchPoint,
1);
flickInProgress = false;
}
bool FlickControl::running()
{
return flickInProgress;
}
#else
void FlickControl::startFlick(int x, int y, int dx, int dy) {}
void FlickControl::endFlick() {}
void FlickControl::continueFlick() {}
bool FlickControl::running()
{
return false;
}
#endif