diff --git a/YACReaderLibrary/YACReaderLibrary.pro b/YACReaderLibrary/YACReaderLibrary.pro index fa1f7a7e..7b26afa2 100644 --- a/YACReaderLibrary/YACReaderLibrary.pro +++ b/YACReaderLibrary/YACReaderLibrary.pro @@ -146,7 +146,8 @@ HEADERS += comic_flow.h \ yacreader_comics_views_manager.h \ info_comics_view.h \ yacreader_comics_selection_helper.h \ - yacreader_comic_info_helper.h + yacreader_comic_info_helper.h \ + db/reading_list.cpp !CONFIG(no_opengl) { CONFIG(legacy_gl_widget) { @@ -220,7 +221,8 @@ SOURCES += comic_flow.cpp \ yacreader_comics_views_manager.cpp \ info_comics_view.cpp \ yacreader_comics_selection_helper.cpp \ - yacreader_comic_info_helper.cpp + yacreader_comic_info_helper.cpp \ + db/reading_list.cpp !CONFIG(no_opengl) { CONFIG(legacy_gl_widget) { diff --git a/YACReaderLibrary/db/reading_list.cpp b/YACReaderLibrary/db/reading_list.cpp new file mode 100644 index 00000000..b27b6650 --- /dev/null +++ b/YACReaderLibrary/db/reading_list.cpp @@ -0,0 +1,44 @@ +#include "reading_list.h" + +ReadingList::ReadingList(const QString &name, qulonglong id, int ordering) + :name(name), id(id), ordering(ordering) +{ + +} + +qulonglong ReadingList::getId() const +{ + return id; +} + +QString ReadingList::getName() const +{ + return name; +} + +int ReadingList::getOrdering() const +{ + return ordering; +} + + +Label::Label(const QString &name, qulonglong id, YACReader::LabelColors colorid) + :name(name), id(id), colorid(colorid) +{ + +} + +YACReader::LabelColors Label::getColorID() const +{ + return colorid; +} + +QString Label::getName() const +{ + return name; +} + +qulonglong Label::getId() const +{ + return id; +} diff --git a/YACReaderLibrary/db/reading_list.h b/YACReaderLibrary/db/reading_list.h new file mode 100644 index 00000000..84e41846 --- /dev/null +++ b/YACReaderLibrary/db/reading_list.h @@ -0,0 +1,36 @@ +#ifndef READING_LIST_H +#define READING_LIST_H + +#include "yacreader_global.h" + +class ReadingList +{ +public: + ReadingList(const QString &name, qulonglong id, int ordering); + + qulonglong getId() const; + QString getName() const; + int getOrdering() const; +private: + QString name; + qulonglong id; + int ordering; +}; + +class Label +{ +public: + Label(const QString &name, qulonglong id, YACReader::LabelColors colorid); + + YACReader::LabelColors getColorID() const; + QString getName() const; + qulonglong getId() const; + +private: + QString name; + qulonglong id; + YACReader::LabelColors colorid; + +}; + +#endif // READING_LIST_H diff --git a/YACReaderLibrary/db_helper.cpp b/YACReaderLibrary/db_helper.cpp index 510123bf..9a9d10f3 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" @@ -276,6 +276,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) @@ -930,7 +1018,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; @@ -1138,13 +1226,13 @@ QList DBHelper::getComicsFromParent(qulonglong parentId, QSqlData return list; } -QList DBHelper::getLabelItems(qulonglong libraryId) +QList