mirror of
https://github.com/YACReader/yacreader
synced 2025-05-28 03:10:27 -04:00
Add a mechanism to control if automatic updates can start
For now they won't start if the user is editing comics information.
This commit is contained in:
parent
e4fb0fd40c
commit
b513103d9b
@ -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<bool()> &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()
|
||||
|
@ -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<bool()> &canStartUpdateProvider, QObject *parent = 0);
|
||||
|
||||
void init();
|
||||
void updateLibraries();
|
||||
@ -37,6 +37,8 @@ private:
|
||||
std::future<void> updateFuture;
|
||||
bool canceled;
|
||||
std::weak_ptr<LibraryCreator> currentLibraryCreator;
|
||||
|
||||
std::function<bool()> canStartUpdateProvider;
|
||||
};
|
||||
|
||||
#endif // LIBRARIES_UPDATE_COORDINATOR_H
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user