fixed logic regarding range over multiple years
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
parent
ba159ba971
commit
5d5f1b86fd
@ -34,11 +34,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ui/themes/CatPack.h"
|
#include "ui/themes/CatPack.h"
|
||||||
#include <qdatetime.h>
|
#include <QDate>
|
||||||
#include <qjsonarray.h>
|
|
||||||
#include <qjsonobject.h>
|
|
||||||
#include <qobject.h>
|
|
||||||
#include <QDateTime>
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include "FileSystem.h"
|
#include "FileSystem.h"
|
||||||
@ -47,10 +43,10 @@
|
|||||||
|
|
||||||
QString BasicCatPack::path()
|
QString BasicCatPack::path()
|
||||||
{
|
{
|
||||||
const QDateTime now = QDateTime::currentDateTime();
|
const auto now = QDate::currentDate();
|
||||||
const QDateTime birthday(QDate(now.date().year(), 11, 30), QTime(0, 0));
|
const auto birthday = QDate(now.year(), 11, 30);
|
||||||
const QDateTime xmas(QDate(now.date().year(), 12, 25), QTime(0, 0));
|
const auto xmas = QDate(now.year(), 12, 25);
|
||||||
const QDateTime halloween(QDate(now.date().year(), 10, 31), QTime(0, 0));
|
const auto halloween = QDate(now.year(), 10, 31);
|
||||||
|
|
||||||
QString cat = QString(":/backgrounds/%1").arg(m_id);
|
QString cat = QString(":/backgrounds/%1").arg(m_id);
|
||||||
if (std::abs(now.daysTo(xmas)) <= 4) {
|
if (std::abs(now.daysTo(xmas)) <= 4) {
|
||||||
@ -85,8 +81,8 @@ JsonCatPack::JsonCatPack(QFileInfo& manifestInfo) : BasicCatPack(manifestInfo.di
|
|||||||
for (auto v : variants) {
|
for (auto v : variants) {
|
||||||
auto variant = Json::ensureObject(v, QJsonObject(), "Cat variant");
|
auto variant = Json::ensureObject(v, QJsonObject(), "Cat variant");
|
||||||
m_variants << Variant{ FS::PathCombine(path, Json::requireString(variant, "path", "Variant path")),
|
m_variants << Variant{ FS::PathCombine(path, Json::requireString(variant, "path", "Variant path")),
|
||||||
date(Json::requireString(variant, "startTime", "Variant startTime")),
|
PartialDate(Json::requireString(variant, "startTime", "Variant startTime")),
|
||||||
date(Json::requireString(variant, "endTime", "Variant endTime")) };
|
PartialDate(Json::requireString(variant, "endTime", "Variant endTime")) };
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (const Exception& e) {
|
} catch (const Exception& e) {
|
||||||
@ -104,9 +100,14 @@ QString JsonCatPack::path()
|
|||||||
for (auto var : m_variants) {
|
for (auto var : m_variants) {
|
||||||
QDate startDate(now.year(), var.startTime.month, var.startTime.day);
|
QDate startDate(now.year(), var.startTime.month, var.startTime.day);
|
||||||
QDate endDate(now.year(), var.endTime.month, var.endTime.day);
|
QDate endDate(now.year(), var.endTime.month, var.endTime.day);
|
||||||
if (startDate.daysTo(endDate) < 0) // in this case end date should be next year
|
if (startDate > endDate) { // it's spans over multiple years
|
||||||
|
if (endDate <= now) // end date is in the past so jump one year into the future for endDate
|
||||||
endDate = endDate.addYears(1);
|
endDate = endDate.addYears(1);
|
||||||
if (startDate.daysTo(now) >= 0 && now.daysTo(endDate) >= 0)
|
else // end date is in the future so jump one year into the past for startDate
|
||||||
|
startDate = startDate.addYears(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (startDate >= now && now >= endDate)
|
||||||
return var.path;
|
return var.path;
|
||||||
}
|
}
|
||||||
return m_defaultPath;
|
return m_defaultPath;
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QDateTime>
|
#include <QDate>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
@ -73,8 +73,8 @@ class FileCatPack : public BasicCatPack {
|
|||||||
|
|
||||||
class JsonCatPack : public BasicCatPack {
|
class JsonCatPack : public BasicCatPack {
|
||||||
public:
|
public:
|
||||||
struct date {
|
struct PartialDate {
|
||||||
date(QString d)
|
PartialDate(QString d)
|
||||||
{
|
{
|
||||||
auto sp = d.split("-");
|
auto sp = d.split("-");
|
||||||
day = sp[0].toInt();
|
day = sp[0].toInt();
|
||||||
@ -86,8 +86,8 @@ class JsonCatPack : public BasicCatPack {
|
|||||||
};
|
};
|
||||||
struct Variant {
|
struct Variant {
|
||||||
QString path;
|
QString path;
|
||||||
date startTime;
|
PartialDate startTime;
|
||||||
date endTime;
|
PartialDate endTime;
|
||||||
};
|
};
|
||||||
JsonCatPack(QFileInfo& manifestInfo);
|
JsonCatPack(QFileInfo& manifestInfo);
|
||||||
virtual QString path();
|
virtual QString path();
|
||||||
|
Loading…
Reference in New Issue
Block a user