Add setting to control what "recent" is considered.

This commit is contained in:
Luis Ángel San Martín
2023-05-20 17:43:38 +02:00
parent 6a6a239cc7
commit 45af72520b
17 changed files with 86 additions and 14 deletions

View File

@ -17,13 +17,13 @@
#include "QsLog.h"
ComicModel::ComicModel(QObject *parent)
: QAbstractItemModel(parent), showRecent(false)
: QAbstractItemModel(parent), showRecent(false), recentDays(1)
{
}
ComicModel::ComicModel(QSqlQuery &sqlquery, QObject *parent)
: QAbstractItemModel(parent), showRecent(false)
: QAbstractItemModel(parent), showRecent(false), recentDays(1)
{
setupModelData(sqlquery);
}
@ -243,6 +243,7 @@ QHash<int, QByteArray> ComicModel::roleNames() const
roles[AddedRole] = "added_date";
roles[TypeRole] = "type";
roles[ShowRecentRole] = "show_recent";
roles[RecentRangeRole] = "recent_range";
return roles;
}
@ -311,6 +312,8 @@ QVariant ComicModel::data(const QModelIndex &index, int role) const
return item->data(Type);
else if (role == ShowRecentRole)
return showRecent;
else if (role == ComicModel::RecentRangeRole)
return recentDays * 86400;
if (role != Qt::DisplayRole)
return QVariant();
@ -1144,6 +1147,16 @@ void ComicModel::setShowRecent(bool showRecent)
emit dataChanged(index(0, 0), index(rowCount() - 1, 0), { ComicModel::ShowRecentRole });
}
void ComicModel::setRecentRange(int days)
{
if (this->recentDays == days)
return;
this->recentDays = days;
emit dataChanged(index(0, 0), index(rowCount() - 1, 0), { ComicModel::RecentRangeRole });
}
void ComicModel::updateRating(int rating, QModelIndex mi)
{
ComicDB comic = getComic(mi);

View File

@ -60,6 +60,7 @@ public:
AddedRole,
TypeRole,
ShowRecentRole,
RecentRangeRole,
};
enum Mode {
@ -141,6 +142,7 @@ public:
unsigned long long int getSourceId() { return sourceId; }
void setShowRecent(bool visible);
void setRecentRange(int days);
QHash<int, QByteArray> roleNames() const override;
@ -172,6 +174,7 @@ private:
QString localizedDate(const QString &dbDate) const;
bool showRecent;
qlonglong recentDays;
signals:
void isEmpty();

View File

@ -52,12 +52,12 @@ void drawMacOSXFinishedFolderIcon()
#define ROOT 1
FolderModel::FolderModel(QObject *parent)
: QAbstractItemModel(parent), isSubfolder(false), rootItem(nullptr), folderIcon(YACReader::noHighlightedIcon(":/images/sidebar/folder.svg")), folderFinishedIcon(YACReader::noHighlightedIcon(":/images/sidebar/folder_finished.svg")), showRecent(false)
: QAbstractItemModel(parent), isSubfolder(false), rootItem(nullptr), folderIcon(YACReader::noHighlightedIcon(":/images/sidebar/folder.svg")), folderFinishedIcon(YACReader::noHighlightedIcon(":/images/sidebar/folder_finished.svg")), showRecent(false), recentDays(1)
{
}
FolderModel::FolderModel(QSqlQuery &sqlquery, QObject *parent)
: QAbstractItemModel(parent), isSubfolder(false), rootItem(nullptr), showRecent(false)
: QAbstractItemModel(parent), isSubfolder(false), rootItem(nullptr), showRecent(false), recentDays(1)
{
QList<QVariant> rootData;
rootData << "root"; // id 1, parent 1, title "root"
@ -100,6 +100,7 @@ QHash<int, QByteArray> FolderModel::roleNames() const
roles[AddedRole] = "added";
roles[UpdatedRole] = "updated";
roles[ShowRecentRole] = "show_recent";
roles[RecentRangeRole] = "recent_range";
return roles;
}
@ -185,6 +186,9 @@ QVariant FolderModel::data(const QModelIndex &index, int role) const
if (role == FolderModel::ShowRecentRole)
return showRecent;
if (role == FolderModel::RecentRangeRole)
return recentDays * 86400;
if (role != Qt::DisplayRole)
return QVariant();
@ -655,6 +659,16 @@ void FolderModel::setShowRecent(bool showRecent)
emit dataChanged(index(0, 0), index(rowCount() - 1, 0), { FolderModel::ShowRecentRole });
}
void FolderModel::setRecentRange(int days)
{
if (this->recentDays == days)
return;
this->recentDays = days;
emit dataChanged(index(0, 0), index(rowCount() - 1, 0), { FolderModel::RecentRangeRole });
}
void FolderModel::deleteFolder(const QModelIndex &mi)
{
beginRemoveRows(mi.parent(), mi.row(), mi.row());

View File

@ -82,6 +82,7 @@ public:
Q_INVOKABLE QUrl getCoverUrlPathForComicHash(const QString &hash) const;
void setShowRecent(bool showRecent);
void setRecentRange(int days);
enum Columns {
Name = 0,
@ -109,6 +110,7 @@ public:
AddedRole,
UpdatedRole,
ShowRecentRole,
RecentRangeRole,
};
bool isSubfolder;
@ -130,6 +132,7 @@ private:
QIcon folderFinishedIcon;
bool showRecent;
qlonglong recentDays;
};
#endif