Make sure that the changes made to folders are propagated to the subfolder model in FolderContentView

This commit is contained in:
Luis Ángel San Martín 2022-10-13 19:28:55 +02:00
parent 23deb889b9
commit 00f7d92c9a
3 changed files with 22 additions and 7 deletions

View File

@ -378,9 +378,11 @@ void FolderModel::updateFolderCompletedStatus(const QModelIndexList &list, bool
auto item = static_cast<FolderItem *>(mi.internalPointer());
item->setData(FolderModel::Completed, status);
Folder f = DBHelper::loadFolder(item->id, db);
f.setCompleted(status);
DBHelper::update(f, db);
if (!isSubfolder) {
Folder f = DBHelper::loadFolder(item->id, db);
f.setCompleted(status);
DBHelper::update(f, db);
}
}
db.commit();
connectionName = db.connectionName();
@ -400,9 +402,11 @@ void FolderModel::updateFolderFinishedStatus(const QModelIndexList &list, bool s
auto item = static_cast<FolderItem *>(mi.internalPointer());
item->setData(FolderModel::Finished, status);
Folder f = DBHelper::loadFolder(item->id, db);
f.setFinished(status);
DBHelper::update(f, db);
if (!isSubfolder) {
Folder f = DBHelper::loadFolder(item->id, db);
f.setFinished(status);
DBHelper::update(f, db);
}
}
db.commit();
connectionName = db.connectionName();
@ -432,7 +436,9 @@ void FolderModel::updateFolderManga(const QModelIndexList &list, bool manga)
setManga(item, manga);
DBHelper::updateFolderTreeManga(item->id, db, manga);
if (!isSubfolder) {
DBHelper::updateFolderTreeManga(item->id, db, manga);
}
}
db.commit();
connectionName = db.connectionName();

View File

@ -23,6 +23,7 @@ public:
void setModel(const QModelIndex &parent, FolderModel *model);
void setContinueReadingModel(ComicModel *model);
FolderModel *currentFolderModel() { return folderModel; }
signals:
void subfolderSelected(QModelIndex, int);
void openComic(const ComicDB &comic, const ComicModel::Mode mode);

View File

@ -1831,6 +1831,8 @@ void LibraryWindow::showGridFoldersContextMenu(QPoint point, Folder folder)
else
menu.addAction(setFolderAsMangaAction);
auto subfolderModel = comicsViewsManager->folderContentView->currentFolderModel();
// TODO update the subfolder model loaded in folderContentView
connect(openContainingFolderAction, &QAction::triggered, this, [=]() {
QDesktopServices::openUrl(QUrl("file:///" + QDir::cleanPath(currentPath() + "/" + folder.path), QUrl::TolerantMode));
@ -1840,21 +1842,27 @@ void LibraryWindow::showGridFoldersContextMenu(QPoint point, Folder folder)
});
connect(setFolderAsNotCompletedAction, &QAction::triggered, this, [=]() {
foldersModel->updateFolderCompletedStatus(QModelIndexList() << foldersModel->getIndexFromFolder(folder), false);
subfolderModel->updateFolderCompletedStatus(QModelIndexList() << subfolderModel->getIndexFromFolder(folder), false);
});
connect(setFolderAsCompletedAction, &QAction::triggered, this, [=]() {
foldersModel->updateFolderCompletedStatus(QModelIndexList() << foldersModel->getIndexFromFolder(folder), true);
subfolderModel->updateFolderCompletedStatus(QModelIndexList() << subfolderModel->getIndexFromFolder(folder), true);
});
connect(setFolderAsReadAction, &QAction::triggered, this, [=]() {
foldersModel->updateFolderFinishedStatus(QModelIndexList() << foldersModel->getIndexFromFolder(folder), true);
subfolderModel->updateFolderFinishedStatus(QModelIndexList() << subfolderModel->getIndexFromFolder(folder), true);
});
connect(setFolderAsUnreadAction, &QAction::triggered, this, [=]() {
foldersModel->updateFolderFinishedStatus(QModelIndexList() << foldersModel->getIndexFromFolder(folder), false);
subfolderModel->updateFolderFinishedStatus(QModelIndexList() << subfolderModel->getIndexFromFolder(folder), false);
});
connect(setFolderAsMangaAction, &QAction::triggered, this, [=]() {
foldersModel->updateFolderManga(QModelIndexList() << foldersModel->getIndexFromFolder(folder), true);
subfolderModel->updateFolderManga(QModelIndexList() << subfolderModel->getIndexFromFolder(folder), true);
});
connect(setFolderAsNormalAction, &QAction::triggered, this, [=]() {
foldersModel->updateFolderManga(QModelIndexList() << foldersModel->getIndexFromFolder(folder), false);
subfolderModel->updateFolderManga(QModelIndexList() << subfolderModel->getIndexFromFolder(folder), false);
});
menu.exec(comicsViewsManager->folderContentView->mapToGlobal(point));