#ifndef ONLINESYNCTHREAD_H #define ONLINESYNCTHREAD_H #include #include #include #include "onlinetracker.h" #include "onlinetvshowdatabase.h" #include "onlinedropurl.h" #include class BaseConfig; class OnlineSync : public QThread { Q_OBJECT public: OnlineSync(const Library& library); void init(const BaseConfig& config); void addShowToFetch(TvShow* show); void addShowToUpdate(TvShow* show); void handleDropUrl(TvShow* show, const QUrl url); bool handleApiRequest(QHttpRequest *req, QHttpResponse *resp); void run(); signals: void trackersFinished(); void databasesFinished(); void allFinished(); private slots: void checkIfAllFinished(); private: void startThreadIfNotRunning(); bool requiresFetch(const TvShow* show, const QString dbIdentifier); bool fetchShow(TvShow* show, const Library& library); bool updateShow(TvShow* show); void updateTrackers(); void fetchDatabases(); bool shouldQuit; std::set unhandledFetch; std::set unhandledUpdate; const Library& library; QWaitCondition waitCondition; QList credentials; QList trackers; QList databases; QList dropUrls; static QDebug log(); static QDebug err(); }; #endif // ONLINESYNCTHREAD_H