mirror of
https://github.com/YACReader/yacreader
synced 2025-05-28 03:10:27 -04:00
Add new columns to the comics model
This commit is contained in:
parent
737c8e7638
commit
e6e5208001
@ -43,7 +43,7 @@ int ComicModel::columnCount(const QModelIndex &parent) const
|
|||||||
Q_UNUSED(parent)
|
Q_UNUSED(parent)
|
||||||
if (_data.isEmpty())
|
if (_data.isEmpty())
|
||||||
return 0;
|
return 0;
|
||||||
return _data.first()->columnCount();
|
return _data.first()->columnCount() + 1 /* + the number of calculated columns */;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ComicModel::canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const
|
bool ComicModel::canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const
|
||||||
@ -238,7 +238,6 @@ QHash<int, QByteArray> ComicModel::roleNames() const
|
|||||||
roles[PathRole] = "path";
|
roles[PathRole] = "path";
|
||||||
roles[HashRole] = "hash";
|
roles[HashRole] = "hash";
|
||||||
roles[ReadColumnRole] = "read_column";
|
roles[ReadColumnRole] = "read_column";
|
||||||
roles[IsBisRole] = "is_bis";
|
|
||||||
roles[CurrentPageRole] = "current_page";
|
roles[CurrentPageRole] = "current_page";
|
||||||
roles[RatingRole] = "rating";
|
roles[RatingRole] = "rating";
|
||||||
roles[HasBeenOpenedRole] = "has_been_opened";
|
roles[HasBeenOpenedRole] = "has_been_opened";
|
||||||
@ -249,6 +248,10 @@ QHash<int, QByteArray> ComicModel::roleNames() const
|
|||||||
roles[TypeRole] = "type";
|
roles[TypeRole] = "type";
|
||||||
roles[ShowRecentRole] = "show_recent";
|
roles[ShowRecentRole] = "show_recent";
|
||||||
roles[RecentRangeRole] = "recent_range";
|
roles[RecentRangeRole] = "recent_range";
|
||||||
|
roles[SizeRole] = "size";
|
||||||
|
roles[SeriesRole] = "series";
|
||||||
|
roles[VolumeRole] = "volume";
|
||||||
|
roles[StoryArcRole] = "story_arc";
|
||||||
|
|
||||||
return roles;
|
return roles;
|
||||||
}
|
}
|
||||||
@ -269,7 +272,7 @@ QVariant ComicModel::data(const QModelIndex &index, int role) const
|
|||||||
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
||||||
case ComicModel::NumPages:
|
case ComicModel::NumPages:
|
||||||
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
||||||
case ComicModel::Hash:
|
case ComicModel::Size:
|
||||||
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
||||||
case ComicModel::CurrentPage:
|
case ComicModel::CurrentPage:
|
||||||
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
||||||
@ -283,6 +286,10 @@ QVariant ComicModel::data(const QModelIndex &index, int role) const
|
|||||||
|
|
||||||
auto item = static_cast<ComicItem *>(index.internalPointer());
|
auto item = static_cast<ComicItem *>(index.internalPointer());
|
||||||
|
|
||||||
|
auto sizeString = [=] {
|
||||||
|
return QString::number(item->data(ComicModel::Hash).toString().right(item->data(ComicModel::Hash).toString().length() - 40).toInt() / 1024.0 / 1024.0, 'f', 2) + "Mb";
|
||||||
|
};
|
||||||
|
|
||||||
if (role == NumberRole)
|
if (role == NumberRole)
|
||||||
return item->data(Number);
|
return item->data(Number);
|
||||||
else if (role == TitleRole)
|
else if (role == TitleRole)
|
||||||
@ -306,7 +313,7 @@ QVariant ComicModel::data(const QModelIndex &index, int role) const
|
|||||||
else if (role == ReadColumnRole)
|
else if (role == ReadColumnRole)
|
||||||
return item->data(ReadColumn).toBool();
|
return item->data(ReadColumn).toBool();
|
||||||
else if (role == HasBeenOpenedRole)
|
else if (role == HasBeenOpenedRole)
|
||||||
return item->data(ComicModel::HasBeenOpened);
|
return item->data(HasBeenOpened);
|
||||||
else if (role == IdRole)
|
else if (role == IdRole)
|
||||||
return item->data(Id);
|
return item->data(Id);
|
||||||
else if (role == PublicationDateRole)
|
else if (role == PublicationDateRole)
|
||||||
@ -317,14 +324,24 @@ QVariant ComicModel::data(const QModelIndex &index, int role) const
|
|||||||
return item->data(Type);
|
return item->data(Type);
|
||||||
else if (role == ShowRecentRole)
|
else if (role == ShowRecentRole)
|
||||||
return showRecent;
|
return showRecent;
|
||||||
else if (role == ComicModel::RecentRangeRole)
|
else if (role == RecentRangeRole)
|
||||||
return recentDays * 86400;
|
return recentDays * 86400;
|
||||||
|
else if (role == SizeRole)
|
||||||
|
return sizeString();
|
||||||
|
else if (role == SeriesRole)
|
||||||
|
return item->data(Series);
|
||||||
|
else if (role == VolumeRole)
|
||||||
|
return item->data(Volume);
|
||||||
|
else if (role == StoryArcRole)
|
||||||
|
return item->data(StoryArc);
|
||||||
|
|
||||||
if (role != Qt::DisplayRole)
|
if (role != Qt::DisplayRole)
|
||||||
return QVariant();
|
return QVariant();
|
||||||
|
|
||||||
if (index.column() == ComicModel::Hash)
|
if (index.column() == ComicModel::Hash)
|
||||||
return QString::number(item->data(index.column()).toString().right(item->data(index.column()).toString().length() - 40).toInt() / 1024.0 / 1024.0, 'f', 2) + "Mb";
|
return item->data(ComicModel::Hash).toString();
|
||||||
|
if (index.column() == ComicModel::Size)
|
||||||
|
return sizeString();
|
||||||
if (index.column() == ComicModel::ReadColumn)
|
if (index.column() == ComicModel::ReadColumn)
|
||||||
return (item->data(ComicModel::CurrentPage).toInt() == item->data(ComicModel::NumPages).toInt() || item->data(ComicModel::ReadColumn).toBool()) ? QVariant(tr("yes")) : QVariant(tr("no"));
|
return (item->data(ComicModel::CurrentPage).toInt() == item->data(ComicModel::NumPages).toInt() || item->data(ComicModel::ReadColumn).toBool()) ? QVariant(tr("yes")) : QVariant(tr("no"));
|
||||||
if (index.column() == ComicModel::CurrentPage)
|
if (index.column() == ComicModel::CurrentPage)
|
||||||
@ -353,8 +370,7 @@ QVariant ComicModel::headerData(int section, Qt::Orientation orientation,
|
|||||||
int role) const
|
int role) const
|
||||||
{
|
{
|
||||||
if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
|
if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
|
||||||
switch (section) // TODO obtener esto de la query
|
switch (section) {
|
||||||
{
|
|
||||||
case ComicModel::Number:
|
case ComicModel::Number:
|
||||||
return QVariant(QString("#"));
|
return QVariant(QString("#"));
|
||||||
case ComicModel::Title:
|
case ComicModel::Title:
|
||||||
@ -363,7 +379,7 @@ QVariant ComicModel::headerData(int section, Qt::Orientation orientation,
|
|||||||
return QVariant(QString(tr("File Name")));
|
return QVariant(QString(tr("File Name")));
|
||||||
case ComicModel::NumPages:
|
case ComicModel::NumPages:
|
||||||
return QVariant(QString(tr("Pages")));
|
return QVariant(QString(tr("Pages")));
|
||||||
case ComicModel::Hash:
|
case ComicModel::Size:
|
||||||
return QVariant(QString(tr("Size")));
|
return QVariant(QString(tr("Size")));
|
||||||
case ComicModel::ReadColumn:
|
case ComicModel::ReadColumn:
|
||||||
return QVariant(QString(tr("Read")));
|
return QVariant(QString(tr("Read")));
|
||||||
@ -373,17 +389,22 @@ QVariant ComicModel::headerData(int section, Qt::Orientation orientation,
|
|||||||
return QVariant(QString(tr("Publication Date")));
|
return QVariant(QString(tr("Publication Date")));
|
||||||
case ComicModel::Rating:
|
case ComicModel::Rating:
|
||||||
return QVariant(QString(tr("Rating")));
|
return QVariant(QString(tr("Rating")));
|
||||||
|
case ComicModel::Series:
|
||||||
|
return QVariant(QString(tr("Series")));
|
||||||
|
case ComicModel::Volume:
|
||||||
|
return QVariant(QString(tr("Volume")));
|
||||||
|
case ComicModel::StoryArc:
|
||||||
|
return QVariant(QString(tr("Story Arc")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (orientation == Qt::Horizontal && role == Qt::TextAlignmentRole) {
|
if (orientation == Qt::Horizontal && role == Qt::TextAlignmentRole) {
|
||||||
switch (section) // TODO obtener esto de la query
|
switch (section) {
|
||||||
{
|
|
||||||
case ComicModel::Number:
|
case ComicModel::Number:
|
||||||
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
||||||
case ComicModel::NumPages:
|
case ComicModel::NumPages:
|
||||||
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
||||||
case ComicModel::Hash:
|
case ComicModel::Size:
|
||||||
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
||||||
case ComicModel::CurrentPage:
|
case ComicModel::CurrentPage:
|
||||||
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
return QVariant(Qt::AlignRight | Qt::AlignVCenter);
|
||||||
@ -461,7 +482,7 @@ QStringList ComicModel::getPaths(const QString &_source)
|
|||||||
return paths;
|
return paths;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define COMIC_MODEL_QUERY_FIELDS "ci.number,ci.title,c.fileName,ci.numPages,c.id,c.parentId,c.path,ci.hash,ci.read,ci.isBis,ci.currentPage,ci.rating,ci.hasBeenOpened,ci.date,ci.added,ci.type,ci.lastTimeOpened"
|
#define COMIC_MODEL_QUERY_FIELDS "ci.number,ci.title,c.fileName,ci.numPages,c.id,c.parentId,c.path,ci.hash,ci.read,ci.currentPage,ci.rating,ci.hasBeenOpened,ci.date,ci.added,ci.type,ci.lastTimeOpened,ci.series,ci.volume,ci.storyArc"
|
||||||
|
|
||||||
QList<ComicItem *> ComicModel::createFolderModelData(unsigned long long folderId, const QString &databasePath) const
|
QList<ComicItem *> ComicModel::createFolderModelData(unsigned long long folderId, const QString &databasePath) const
|
||||||
{
|
{
|
||||||
|
@ -23,22 +23,28 @@ class ComicModel : public QAbstractItemModel
|
|||||||
public:
|
public:
|
||||||
enum Columns {
|
enum Columns {
|
||||||
Number = 0,
|
Number = 0,
|
||||||
Title = 1,
|
Title,
|
||||||
FileName = 2,
|
FileName,
|
||||||
NumPages = 3,
|
NumPages,
|
||||||
Id = 4,
|
Id,
|
||||||
Parent_Id = 5,
|
Parent_Id,
|
||||||
Path = 6,
|
Path,
|
||||||
Hash = 7,
|
Hash,
|
||||||
ReadColumn = 8,
|
ReadColumn,
|
||||||
IsBis = 9, // TODO_METADATA: Remove this column
|
CurrentPage,
|
||||||
CurrentPage = 10,
|
Rating,
|
||||||
Rating = 11,
|
HasBeenOpened,
|
||||||
HasBeenOpened = 12,
|
PublicationDate,
|
||||||
PublicationDate = 13,
|
Added,
|
||||||
Added = 14,
|
Type,
|
||||||
Type = 15,
|
LastTimeOpened,
|
||||||
LastTimeOpened = 16,
|
Series,
|
||||||
|
Volume,
|
||||||
|
StoryArc,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum CalculatedColumns {
|
||||||
|
Size = Columns::StoryArc + 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Roles {
|
enum Roles {
|
||||||
@ -51,7 +57,6 @@ public:
|
|||||||
PathRole,
|
PathRole,
|
||||||
HashRole,
|
HashRole,
|
||||||
ReadColumnRole,
|
ReadColumnRole,
|
||||||
IsBisRole,
|
|
||||||
CurrentPageRole,
|
CurrentPageRole,
|
||||||
RatingRole,
|
RatingRole,
|
||||||
HasBeenOpenedRole,
|
HasBeenOpenedRole,
|
||||||
@ -62,6 +67,10 @@ public:
|
|||||||
TypeRole,
|
TypeRole,
|
||||||
ShowRecentRole,
|
ShowRecentRole,
|
||||||
RecentRangeRole,
|
RecentRangeRole,
|
||||||
|
SizeRole,
|
||||||
|
SeriesRole,
|
||||||
|
VolumeRole,
|
||||||
|
StoryArcRole,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Mode {
|
enum Mode {
|
||||||
|
Loading…
Reference in New Issue
Block a user