Make "delete" icon work properly in the "Reading" list

Only the "Favorites" special list was handled.
This commit is contained in:
Luis Ángel San Martín 2021-05-16 09:01:35 +02:00
parent e799513fb4
commit 13a29e2657
7 changed files with 61 additions and 2 deletions

View File

@ -10,6 +10,7 @@
#include "comic_db.h"
#include "db_helper.h"
#include "query_parser.h"
#include "reading_list_model.h"
//ci.number,ci.title,c.fileName,ci.numPages,c.id,c.parentId,c.path,ci.hash,ci.read
#include "QsLog.h"
@ -986,6 +987,36 @@ void ComicModel::deleteComicsFromFavorites(const QList<QModelIndex> &comicsList)
deleteComicsFromModel(comicsList);
}
void ComicModel::deleteComicsFromReading(const QList<QModelIndex> &comicsList)
{
QList<ComicDB> comics = getComics(comicsList);
QString connectionName = "";
{
QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath);
DBHelper::deleteComicsFromReading(comics, db);
connectionName = db.connectionName();
}
QSqlDatabase::removeDatabase(connectionName);
if (mode == Reading)
deleteComicsFromModel(comicsList);
}
void ComicModel::deleteComicsFromSpecialList(const QList<QModelIndex> &comicsList, qulonglong specialListId)
{
auto type = (ReadingListModel::TypeSpecialList)specialListId;
switch (type) {
case ReadingListModel::TypeSpecialList::Reading:
deleteComicsFromReading(comicsList);
break;
case ReadingListModel::TypeSpecialList::Favorites:
deleteComicsFromFavorites(comicsList);
break;
}
}
void ComicModel::deleteComicsFromLabel(const QList<QModelIndex> &comicsList, qulonglong labelId)
{
QList<ComicDB> comics = getComics(comicsList);

View File

@ -119,6 +119,8 @@ public:
void addComicsToReadingList(const QList<QModelIndex> &comicsList, qulonglong readingListId);
void deleteComicsFromFavorites(const QList<QModelIndex> &comicsList);
void deleteComicsFromReading(const QList<QModelIndex> &comicsList);
void deleteComicsFromSpecialList(const QList<QModelIndex> &comicsList, qulonglong specialListId);
void deleteComicsFromLabel(const QList<QModelIndex> &comicsList, qulonglong labelId);
void deleteComicsFromReadingList(const QList<QModelIndex> &comicsList, qulonglong readingListId);

View File

@ -44,6 +44,15 @@ QIcon SpecialListItem::getIcon() const
return QIcon();
}
qulonglong SpecialListItem::getId() const
{
if (itemData.count() > Id) {
return itemData.at(Id).toInt();
}
return 0;
}
ReadingListModel::TypeSpecialList SpecialListItem::getType() const
{
if (itemData.count() > Id) {

View File

@ -27,6 +27,7 @@ class SpecialListItem : public ListItem
public:
SpecialListItem(const QList<QVariant> &data);
QIcon getIcon() const override;
qulonglong getId() const override;
ReadingListModel::TypeSpecialList getType() const;
private:

View File

@ -471,6 +471,22 @@ void DBHelper::deleteComicsFromFavorites(const QList<ComicDB> &comicsList, QSqlD
db.commit();
}
//a.k.a set comics as unread by reverting the conditions used to load the comics -> void ComicModel::setupReadingModelData(const QString &databasePath)
void DBHelper::deleteComicsFromReading(const QList<ComicDB> &comicsList, QSqlDatabase &db)
{
db.transaction();
QLOG_DEBUG() << "deleteComicsFromReading----------------------------------";
for (auto comic : comicsList) {
comic.info.hasBeenOpened = false;
comic.info.currentPage = 0; //update sets hasBeenOpened to true if currentPage > 0;
DBHelper::update(&comic.info, db);
}
db.commit();
}
void DBHelper::deleteComicsFromLabel(const QList<ComicDB> &comicsList, qulonglong labelId, QSqlDatabase &db)
{
db.transaction();

View File

@ -48,6 +48,7 @@ public:
static void removeListFromDB(qulonglong id, QSqlDatabase &db);
//logic deletes
static void deleteComicsFromFavorites(const QList<ComicDB> &comicsList, QSqlDatabase &db);
static void deleteComicsFromReading(const QList<ComicDB> &comicsList, QSqlDatabase &db);
static void deleteComicsFromLabel(const QList<ComicDB> &comicsList, qulonglong labelId, QSqlDatabase &db);
static void deleteComicsFromReadingList(const QList<ComicDB> &comicsList, qulonglong readingListId, QSqlDatabase &db);
//inserts

View File

@ -2591,8 +2591,7 @@ void LibraryWindow::deleteComicsFromList()
qulonglong id = mi.data(ReadingListModel::IDRole).toULongLong();
switch (typeList) {
case ReadingListModel::SpecialList:
//by now only 'favorites'
comicsModel->deleteComicsFromFavorites(indexList);
comicsModel->deleteComicsFromSpecialList(indexList, id);
break;
case ReadingListModel::Label:
comicsModel->deleteComicsFromLabel(indexList, id);