Add support for storing and serving the new comic filters format

It's already implemented on iOS and next is supporting it on Android.
This commit is contained in:
Luis Ángel San Martín
2025-06-14 09:56:33 +02:00
parent a4ab11d44d
commit b7fb45a331
10 changed files with 191 additions and 40 deletions

View File

@ -166,6 +166,23 @@ QString ComicDB::toTXT()
if (!info.tags.isNull())
txt.append(QString("tags:%1\r\n").arg(info.tags.toString()));
// 9.16
if (!info.imageFiltersJson.isNull())
txt.append(QString("imageFiltersJson:%1\r\n").arg(info.imageFiltersJson.toString()));
if (!info.lastTimeImageFiltersSet.isNull())
txt.append(QString("lastTimeImageFiltersSet:%1\r\n").arg(info.lastTimeImageFiltersSet.toULongLong()));
if (!info.lastTimeCoverSet.isNull())
txt.append(QString("lastTimeCoverSet:%1\r\n").arg(info.lastTimeCoverSet.toULongLong()));
if (!info.usesExternalCover.isNull())
txt.append(QString("usesExternalCover:%1\r\n").arg(info.usesExternalCover.toBool() ? "1" : "0"));
if (!info.lastTimeMetadataSet.isNull())
txt.append(QString("lastTimeMetadataSet:%1\r\n").arg(info.lastTimeMetadataSet.toULongLong()));
return txt;
}
@ -399,6 +416,12 @@ ComicInfo &ComicInfo::operator=(const ComicInfo &comicInfo)
review = comicInfo.review;
tags = comicInfo.tags;
imageFiltersJson = comicInfo.imageFiltersJson;
lastTimeImageFiltersSet = comicInfo.lastTimeImageFiltersSet;
lastTimeCoverSet = comicInfo.lastTimeCoverSet;
usesExternalCover = comicInfo.usesExternalCover;
lastTimeMetadataSet = comicInfo.lastTimeMetadataSet;
return *this;
}
@ -691,6 +714,12 @@ QDataStream &operator<<(QDataStream &stream, const ComicInfo &comicInfo)
stream << comicInfo.review;
stream << comicInfo.tags;
stream << comicInfo.imageFiltersJson;
stream << comicInfo.lastTimeImageFiltersSet;
stream << comicInfo.lastTimeCoverSet;
stream << comicInfo.usesExternalCover;
stream << comicInfo.lastTimeMetadataSet;
return stream;
}
@ -770,5 +799,11 @@ QDataStream &operator>>(QDataStream &stream, ComicInfo &comicInfo)
stream >> comicInfo.review;
stream >> comicInfo.tags;
stream >> comicInfo.imageFiltersJson;
stream >> comicInfo.lastTimeImageFiltersSet;
stream >> comicInfo.lastTimeCoverSet;
stream >> comicInfo.usesExternalCover;
stream >> comicInfo.lastTimeMetadataSet;
return stream;
}

View File

@ -39,9 +39,9 @@ public:
int bookmark1;
int bookmark2;
int bookmark3;
int brightness;
int contrast;
int gamma;
[[deprecated("Use imageFiltersJson")]] int brightness;
[[deprecated("Use imageFiltersJson")]] int contrast;
[[deprecated("Use imageFiltersJson")]] int gamma;
//-----------------
QVariant title; // string
@ -104,6 +104,12 @@ public:
QVariant review; // string
QVariant tags; // string/list
QVariant imageFiltersJson; // string, JSON with image filters
QVariant lastTimeImageFiltersSet; // integer/date, last time image filters were set
QVariant lastTimeCoverSet; // integer/date, last time cover was set
QVariant usesExternalCover; // bool, whether the cover is external or not
QVariant lastTimeMetadataSet; // integer/date, last time metadata was set
QPixmap getCover(const QString &basePath);
Q_INVOKABLE QStringList getWriters();
@ -208,6 +214,12 @@ public:
Q_PROPERTY(QVariant review MEMBER review CONSTANT)
Q_PROPERTY(QVariant tags MEMBER tags CONSTANT)
Q_PROPERTY(QVariant imageFiltersJson MEMBER imageFiltersJson CONSTANT)
Q_PROPERTY(QVariant lastTimeImageFiltersSet MEMBER lastTimeImageFiltersSet CONSTANT)
Q_PROPERTY(QVariant lastTimeCoverSet MEMBER lastTimeCoverSet CONSTANT)
Q_PROPERTY(QVariant usesExternalCover MEMBER usesExternalCover CONSTANT)
Q_PROPERTY(QVariant lastTimeMetadataSet MEMBER lastTimeMetadataSet CONSTANT)
//-new properties, not loaded from the DB automatically
bool isFavorite;
Q_PROPERTY(bool isFavorite MEMBER isFavorite WRITE setFavorite NOTIFY favoriteChanged)

View File

@ -9,11 +9,11 @@
class QLibrary;
#define VERSION "9.15.1"
#define VERSION "9.16.0"
// Used to check if the database needs to be updated, the version is stored in the database.
// This value is only incremented when the database structure changes.
#define DB_VERSION "9.14.0"
#define DB_VERSION "9.16.0"
#define IMPORT_COMIC_INFO_XML_METADATA "IMPORT_COMIC_INFO_XML_METADATA"
#define COMPARE_MODIFIED_DATE_ON_LIBRARY_UPDATES "COMPARE_MODIFIED_DATE_ON_LIBRARY_UPDATES"