yacreader/YACReaderLibrary/libraries_update_coordinator.h

46 lines
1007 B
C++

#ifndef LIBRARIES_UPDATE_COORDINATOR_H
#define LIBRARIES_UPDATE_COORDINATOR_H
#include <QtCore>
class YACReaderLibraries;
class LibraryCreator;
class LibrariesUpdateCoordinator : public QObject
{
Q_OBJECT
public:
LibrariesUpdateCoordinator(QSettings *settings, YACReaderLibraries &libraries, const std::function<bool()> &canStartUpdateProvider, QObject *parent = 0);
void init();
void updateLibraries();
bool isRunning() const;
public slots:
void stop();
void cancel();
signals:
void updateStarted();
void updateEnded();
private slots:
void checkUpdatePolicy();
void startUpdate();
void updateLibrary(const QString &path);
private:
QSettings *settings;
YACReaderLibraries &libraries;
QTimer timer;
QElapsedTimer elapsedTimer;
std::future<void> updateFuture;
bool canceled;
std::weak_ptr<LibraryCreator> currentLibraryCreator;
std::function<bool()> canStartUpdateProvider;
};
#endif // LIBRARIES_UPDATE_COORDINATOR_H