C
Qt Quick Ultralite Watch Demo
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial
#include "HealthModel.h"
#include <platform/platform.h>
#include <algorithm>
namespace {
const int MIN_HEART_RATE = 50;
const int MAX_HEART_RATE = 160;
const int MIN_HEART_RATE_CHANGE = -2;
const int MAX_HEART_RATE_CHANGE = 2;
const int DEFAULT_HEART_RATE = 60;
int GetRandomNumber(int from, int to)
{
return static_cast<int>(round(from + Qul::Platform::getPlatformInstance()->rand() * (to - from)));
}
} // namespace
HealthModel::HealthModel()
: HeartRate(DEFAULT_HEART_RATE)
, MinHeartRate(DEFAULT_HEART_RATE)
, MaxHeartRate(DEFAULT_HEART_RATE)
{
update();
}
void HealthModel::update()
{
const int delta = GetRandomNumber(MIN_HEART_RATE_CHANGE, MAX_HEART_RATE_CHANGE);
int heartRate = HeartRate.value();
heartRate += delta;
heartRate = std::max(heartRate, MIN_HEART_RATE);
heartRate = std::min(heartRate, MAX_HEART_RATE);
HeartRate.setValue(heartRate);
if (heartRate > MaxHeartRate.value()) {
MaxHeartRate.setValue(heartRate);
}
if (heartRate < MinHeartRate.value()) {
MinHeartRate.setValue(heartRate);
}
}