diff --git a/YACReaderLibrary/db_helper.cpp b/YACReaderLibrary/db_helper.cpp index ef52846a..1643a6b9 100644 --- a/YACReaderLibrary/db_helper.cpp +++ b/YACReaderLibrary/db_helper.cpp @@ -14,7 +14,7 @@ #include -#include "reading_list_item.h" +#include "reading_list.h" #include "library_item.h" #include "comic_db.h" #include "data_base_management.h" @@ -286,6 +286,94 @@ QList DBHelper::getReading(qulonglong libraryId) return list; } +QList DBHelper::getReadingLists(qulonglong libraryId) +{ + QString libraryPath = DBHelper::getLibraries().getPath(libraryId); + QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath+"/.yacreaderlibrary"); + + QList list; + + QSqlQuery selectQuery("SELECT * from reading_list WHERE parentId IS NULL ORDER BY name DESC",db); + + selectQuery.exec(); + + while (selectQuery.next()) + { + QSqlRecord record = selectQuery.record(); + + ReadingList item(record.value("name").toString(), record.value("id").toLongLong(),record.value("ordering").toInt()); + + if(list.isEmpty()) + { + list.append(item); + } + else + { + int i= 0; + while(i DBHelper::getReadingListFullContent(qulonglong libraryId, qulonglong readingListId) +{ + QString libraryPath = DBHelper::getLibraries().getPath(libraryId); + QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath+"/.yacreaderlibrary"); + + QList list; + + { + QList ids; + ids << readingListId; + + QSqlQuery subfolders(db); + subfolders.prepare("SELECT id " + "FROM reading_list " + "WHERE parentId = :parentId " + "ORDER BY ordering ASC"); + subfolders.bindValue(":parentId", readingListId); + subfolders.exec(); + while(subfolders.next()) + ids << subfolders.record().value(0).toULongLong(); + + foreach(qulonglong id, ids) + { + QSqlQuery selectQuery(db); + selectQuery.prepare("SELECT c.id,c.parentId,c.fileName,ci.title,ci.currentPage,ci.numPages,ci.hash,ci.read " + "FROM comic c INNER JOIN comic_info ci ON (c.comicInfoId = ci.id) " + "INNER JOIN comic_reading_list crl ON (c.id == crl.comic_id) " + "WHERE crl.reading_list_id = :parentReadingList " + "ORDER BY crl.ordering"); + selectQuery.bindValue(":parentReadingList", id); + selectQuery.exec(); + + while (selectQuery.next()) + { + ComicDB comic; + + QSqlRecord record = selectQuery.record(); + + comic.id = record.value(0).toULongLong(); + comic.parentId = record.value(1).toULongLong(); + comic.name = record.value(2).toString(); + comic.info.title = record.value(3).toString(); + comic.info.currentPage = record.value(4).toInt(); + comic.info.numPages = record.value(5).toInt(); + comic.info.hash = record.value(6).toString(); + comic.info.read = record.value(7).toBool(); + + list.append(comic); + } + } + } + + return list; +} + //objects management //deletes void DBHelper::removeFromDB(LibraryItem * item, QSqlDatabase & db) @@ -935,7 +1023,7 @@ QList DBHelper::getFoldersFromParent(qulonglong parentId, QSqlDat QList::iterator i; i = list.end(); i--; - while ((0 > (lessThan = naturalSortLessThanCI(nameCurrent,nameLast))) && i != list.begin()) + while ((0 > (lessThan = naturalCompare(nameCurrent,nameLast,Qt::CaseInsensitive))) && i != list.begin()) { i--; nameLast = (*i)->name; @@ -1098,22 +1186,18 @@ QList DBHelper::getComicsFromParent(qulonglong parentId, QSqlData return list; } -QList DBHelper::getLabelItems(qulonglong libraryId) +QList