From 811c3fcfe492066eead83594a78fbdad0e2ba00f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Fri, 30 Apr 2021 09:52:10 +0200 Subject: [PATCH] Add function to get comics from a folder properly sorted --- YACReaderLibrary/db_helper.cpp | 24 ++++++++++++++++++++++++ YACReaderLibrary/db_helper.h | 1 + 2 files changed, 25 insertions(+) diff --git a/YACReaderLibrary/db_helper.cpp b/YACReaderLibrary/db_helper.cpp index 3a010756..3b3dd683 100644 --- a/YACReaderLibrary/db_helper.cpp +++ b/YACReaderLibrary/db_helper.cpp @@ -33,6 +33,7 @@ YACReaderLibraries DBHelper::getLibraries() libraries.load(); return libraries; } + QList DBHelper::getFolderSubfoldersFromLibrary(qulonglong libraryId, qulonglong folderId) { QString libraryPath = DBHelper::getLibraries().getPath(libraryId); @@ -47,11 +48,34 @@ QList DBHelper::getFolderSubfoldersFromLibrary(qulonglong library QSqlDatabase::removeDatabase(connectionName); return list; } + QList DBHelper::getFolderComicsFromLibrary(qulonglong libraryId, qulonglong folderId) { return DBHelper::getFolderComicsFromLibrary(libraryId, folderId, false); } +QList DBHelper::getFolderComicsFromLibraryForReading(qulonglong libraryId, qulonglong folderId) +{ + auto list = DBHelper::getFolderComicsFromLibrary(libraryId, folderId, false); + + std::sort(list.begin(), list.end(), [](LibraryItem *i1, LibraryItem *i2) { + auto c1 = static_cast(i1); + auto c2 = static_cast(i2); + + if (c1->info.number.isNull() && c2->info.number.isNull()) { + return naturalSortLessThanCI(c1->name, c2->name); + } else { + if (c1->info.number.isNull() == false && c2->info.number.isNull() == false) { + return c1->info.number.toInt() < c2->info.number.toInt(); + } else { + return c2->info.number.isNull(); + } + } + }); + + return list; +} + QList DBHelper::getFolderComicsFromLibrary(qulonglong libraryId, qulonglong folderId, bool sort) { QString libraryPath = DBHelper::getLibraries().getPath(libraryId); diff --git a/YACReaderLibrary/db_helper.h b/YACReaderLibrary/db_helper.h index fa2a8960..63f3217d 100644 --- a/YACReaderLibrary/db_helper.h +++ b/YACReaderLibrary/db_helper.h @@ -25,6 +25,7 @@ public: static QList getFolderSubfoldersFromLibrary(qulonglong libraryId, qulonglong folderId); static QList getFolderComicsFromLibrary(qulonglong libraryId, qulonglong folderId); static QList getFolderComicsFromLibrary(qulonglong libraryId, qulonglong folderId, bool sort); + static QList getFolderComicsFromLibraryForReading(qulonglong libraryId, qulonglong folderId); static quint32 getNumChildrenFromFolder(qulonglong libraryId, qulonglong folderId); static qulonglong getParentFromComicFolderId(qulonglong libraryId, qulonglong id); static ComicDB getComicInfo(qulonglong libraryId, qulonglong id);