mirror of
https://github.com/YACReader/yacreader
synced 2025-05-27 10:50:27 -04:00
Make "delete" icon work properly in the "Reading" list
Only the "Favorites" special list was handled.
This commit is contained in:
parent
e799513fb4
commit
13a29e2657
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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:
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user