| 9 | class ModFolderModel; |
| 10 | |
| 11 | class CheckUpdateTask : public Task { |
| 12 | Q_OBJECT |
| 13 | |
| 14 | public: |
| 15 | CheckUpdateTask(QList<Mod*>& mods, |
| 16 | std::list<Version>& mcVersions, |
| 17 | QList<ModPlatform::ModLoaderType> loadersList, |
| 18 | std::shared_ptr<ModFolderModel> mods_folder) |
| 19 | : Task(), m_mods(mods), m_game_versions(mcVersions), m_loaders_list(loadersList), m_mods_folder(mods_folder) {}; |
| 20 | |
| 21 | struct UpdatableMod { |
| 22 | QString name; |
| 23 | QString old_hash; |
| 24 | QString old_version; |
| 25 | QString new_version; |
| 26 | std::optional<ModPlatform::IndexedVersionType> new_version_type; |
| 27 | QString changelog; |
| 28 | ModPlatform::ResourceProvider provider; |
| 29 | shared_qobject_ptr<ResourceDownloadTask> download; |
| 30 | bool enabled = true; |
| 31 | |
| 32 | public: |
| 33 | UpdatableMod(QString name, |
| 34 | QString old_h, |
| 35 | QString old_v, |
| 36 | QString new_v, |
| 37 | std::optional<ModPlatform::IndexedVersionType> new_v_type, |
| 38 | QString changelog, |
| 39 | ModPlatform::ResourceProvider p, |
| 40 | shared_qobject_ptr<ResourceDownloadTask> t, |
| 41 | bool enabled = true) |
| 42 | : name(name) |
| 43 | , old_hash(old_h) |
| 44 | , old_version(old_v) |
| 45 | , new_version(new_v) |
| 46 | , new_version_type(new_v_type) |
| 47 | , changelog(changelog) |
| 48 | , provider(p) |
| 49 | , download(t) |
| 50 | , enabled(enabled) |
| 51 | {} |
| 52 | }; |
| 53 | |
| 54 | auto getUpdatable() -> std::vector<UpdatableMod>&& { return std::move(m_updatable); } |
| 55 | auto getDependencies() -> QList<std::shared_ptr<GetModDependenciesTask::PackDependency>>&& { return std::move(m_deps); } |
| 56 | |
| 57 | public slots: |
| 58 | bool abort() override = 0; |
| 59 | |
| 60 | protected slots: |
| 61 | void executeTask() override = 0; |
| 62 | |
| 63 | signals: |
| 64 | void checkFailed(Mod* failed, QString reason, QUrl recover_url = {}); |
| 65 | |
| 66 | protected: |
| 67 | QList<Mod*>& m_mods; |
| 68 | std::list<Version>& m_game_versions; |