From 00f7d92c9a202e81eff4ebb6d33ceaaef8070b06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Thu, 13 Oct 2022 19:28:55 +0200 Subject: [PATCH] Make sure that the changes made to folders are propagated to the subfolder model in FolderContentView --- YACReaderLibrary/db/folder_model.cpp | 20 +++++++++++++------- YACReaderLibrary/folder_content_view.h | 1 + YACReaderLibrary/library_window.cpp | 8 ++++++++ 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/YACReaderLibrary/db/folder_model.cpp b/YACReaderLibrary/db/folder_model.cpp index 3bf0c385..dafd1a9b 100644 --- a/YACReaderLibrary/db/folder_model.cpp +++ b/YACReaderLibrary/db/folder_model.cpp @@ -378,9 +378,11 @@ void FolderModel::updateFolderCompletedStatus(const QModelIndexList &list, bool auto item = static_cast(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(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(); diff --git a/YACReaderLibrary/folder_content_view.h b/YACReaderLibrary/folder_content_view.h index 56adc699..d7eae59d 100644 --- a/YACReaderLibrary/folder_content_view.h +++ b/YACReaderLibrary/folder_content_view.h @@ -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); diff --git a/YACReaderLibrary/library_window.cpp b/YACReaderLibrary/library_window.cpp index 003a3aa5..f6d6277e 100644 --- a/YACReaderLibrary/library_window.cpp +++ b/YACReaderLibrary/library_window.cpp @@ -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));