SceneSwitcher/lib/utils/time-helpers.cpp
2024-09-18 17:38:53 +02:00

64 lines
1.4 KiB
C++

#include "time-helpers.hpp"
#include "obs-module-helper.hpp"
namespace advss {
static QString combineRelativeTimeParts(const double unitCount,
const char *unitName)
{
QString combined = obs_module_text("AdvSceneSwitcher.time.relative");
return combined.arg(QString::number(unitCount, 'g', 2)).arg(unitName);
}
QString FormatRelativeTime(const double seconds)
{
// 365.2425 days
double divided = seconds / 31556952;
if (divided >= 1) {
return combineRelativeTimeParts(
divided,
obs_module_text("AdvSceneSwitcher.unit.years"));
}
// 30.436875 days
divided = seconds / 2629746;
if (divided >= 1) {
return combineRelativeTimeParts(
divided,
obs_module_text("AdvSceneSwitcher.unit.months"));
}
divided = seconds / 604800;
if (divided >= 1) {
return combineRelativeTimeParts(
divided,
obs_module_text("AdvSceneSwitcher.unit.weeks"));
}
divided = seconds / 86400;
if (divided >= 1) {
return combineRelativeTimeParts(
divided, obs_module_text("AdvSceneSwitcher.unit.days"));
}
divided = seconds / 3600;
if (divided >= 1) {
return combineRelativeTimeParts(
divided,
obs_module_text("AdvSceneSwitcher.unit.hours"));
}
divided = seconds / 60;
if (divided >= 1) {
return combineRelativeTimeParts(
divided,
obs_module_text("AdvSceneSwitcher.unit.minutes"));
}
return combineRelativeTimeParts(
seconds, obs_module_text("AdvSceneSwitcher.unit.seconds"));
}
} // namespace advss