From b513103d9bfbdf16c700e55fcbb9e23bc1eb111d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Wed, 23 Aug 2023 22:45:09 +0200 Subject: [PATCH] Add a mechanism to control if automatic updates can start For now they won't start if the user is editing comics information. --- YACReaderLibrary/libraries_update_coordinator.cpp | 8 +++++--- YACReaderLibrary/libraries_update_coordinator.h | 4 +++- YACReaderLibrary/library_window.cpp | 7 ++++++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/YACReaderLibrary/libraries_update_coordinator.cpp b/YACReaderLibrary/libraries_update_coordinator.cpp index adb4addb..a092b1e0 100644 --- a/YACReaderLibrary/libraries_update_coordinator.cpp +++ b/YACReaderLibrary/libraries_update_coordinator.cpp @@ -5,8 +5,8 @@ #include "yacreader_libraries.h" #include "yacreader_global.h" -LibrariesUpdateCoordinator::LibrariesUpdateCoordinator(QSettings *settings, YACReaderLibraries &libraries, QObject *parent) - : QObject(parent), libraries(libraries) +LibrariesUpdateCoordinator::LibrariesUpdateCoordinator(QSettings *settings, YACReaderLibraries &libraries, const std::function &canStartUpdateProvider, QObject *parent) + : QObject(parent), libraries(libraries), canStartUpdateProvider(canStartUpdateProvider) { libraries.load(); @@ -78,7 +78,9 @@ void LibrariesUpdateCoordinator::checkUpdatePolicy() void LibrariesUpdateCoordinator::updateLibraries() { - startUpdate(); + if (canStartUpdateProvider()) { + startUpdate(); + } } void LibrariesUpdateCoordinator::startUpdate() diff --git a/YACReaderLibrary/libraries_update_coordinator.h b/YACReaderLibrary/libraries_update_coordinator.h index 3daa4975..3f943f51 100644 --- a/YACReaderLibrary/libraries_update_coordinator.h +++ b/YACReaderLibrary/libraries_update_coordinator.h @@ -11,7 +11,7 @@ class LibrariesUpdateCoordinator : public QObject { Q_OBJECT public: - LibrariesUpdateCoordinator(QSettings *settings, YACReaderLibraries &libraries, QObject *parent = 0); + LibrariesUpdateCoordinator(QSettings *settings, YACReaderLibraries &libraries, const std::function &canStartUpdateProvider, QObject *parent = 0); void init(); void updateLibraries(); @@ -37,6 +37,8 @@ private: std::future updateFuture; bool canceled; std::weak_ptr currentLibraryCreator; + + std::function canStartUpdateProvider; }; #endif // LIBRARIES_UPDATE_COORDINATOR_H diff --git a/YACReaderLibrary/library_window.cpp b/YACReaderLibrary/library_window.cpp index b79b5ba9..c9ac0a3d 100644 --- a/YACReaderLibrary/library_window.cpp +++ b/YACReaderLibrary/library_window.cpp @@ -502,7 +502,12 @@ void LibraryWindow::doModels() void LibraryWindow::setupCoordinators() { recentVisibilityCoordinator = new RecentVisibilityCoordinator(settings, foldersModel, contentViewsManager->folderContentView, comicsModel); - librariesUpdateCoordinator = new LibrariesUpdateCoordinator(settings, libraries, this); + + auto canStartUpdateProvider = [this]() { + return comicVineDialog->isVisible() == false && + propertiesDialog->isVisible() == false; + }; + librariesUpdateCoordinator = new LibrariesUpdateCoordinator(settings, libraries, canStartUpdateProvider, this); connect(librariesUpdateCoordinator, &LibrariesUpdateCoordinator::updateStarted, sideBar->librariesTitle, &YACReaderTitledToolBar::showBusyIndicator); connect(librariesUpdateCoordinator, &LibrariesUpdateCoordinator::updateEnded, sideBar->librariesTitle, &YACReaderTitledToolBar::hideBusyIndicator);