#ifndef LIBRARIES_UPDATE_COORDINATOR_H #define LIBRARIES_UPDATE_COORDINATOR_H #include class YACReaderLibraries; class LibraryCreator; class LibrariesUpdateCoordinator : public QObject { Q_OBJECT public: LibrariesUpdateCoordinator(QSettings *settings, YACReaderLibraries &libraries, const std::function &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 updateFuture; bool canceled; std::weak_ptr currentLibraryCreator; std::function canStartUpdateProvider; }; #endif // LIBRARIES_UPDATE_COORDINATOR_H