mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2025-05-02 23:54:34 +02:00
remove some QEventLoops (#3044)
This commit is contained in:
commit
f9ab75868a
@ -37,7 +37,6 @@
|
|||||||
#include "IconList.h"
|
#include "IconList.h"
|
||||||
#include <FileSystem.h>
|
#include <FileSystem.h>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QEventLoop>
|
|
||||||
#include <QFileSystemWatcher>
|
#include <QFileSystemWatcher>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QMimeData>
|
#include <QMimeData>
|
||||||
|
@ -40,7 +40,6 @@
|
|||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QEventLoop>
|
|
||||||
#include <QRegularExpression>
|
#include <QRegularExpression>
|
||||||
#include <QStandardPaths>
|
#include <QStandardPaths>
|
||||||
#include "MessageLevel.h"
|
#include "MessageLevel.h"
|
||||||
|
@ -164,22 +164,20 @@ bool ResourceFolderModel::installResource(QString original_path)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ResourceFolderModel::installResourceWithFlameMetadata(QString path, ModPlatform::IndexedVersion& vers)
|
void ResourceFolderModel::installResourceWithFlameMetadata(QString path, ModPlatform::IndexedVersion& vers)
|
||||||
{
|
{
|
||||||
|
auto install = [this, path] { installResource(std::move(path)); };
|
||||||
if (vers.addonId.isValid()) {
|
if (vers.addonId.isValid()) {
|
||||||
ModPlatform::IndexedPack pack{
|
ModPlatform::IndexedPack pack{
|
||||||
vers.addonId,
|
vers.addonId,
|
||||||
ModPlatform::ResourceProvider::FLAME,
|
ModPlatform::ResourceProvider::FLAME,
|
||||||
};
|
};
|
||||||
|
|
||||||
QEventLoop loop;
|
|
||||||
|
|
||||||
auto response = std::make_shared<QByteArray>();
|
auto response = std::make_shared<QByteArray>();
|
||||||
auto job = FlameAPI().getProject(vers.addonId.toString(), response);
|
auto job = FlameAPI().getProject(vers.addonId.toString(), response);
|
||||||
|
QObject::connect(job.get(), &Task::failed, this, install);
|
||||||
QObject::connect(job.get(), &Task::failed, [&loop] { loop.quit(); });
|
QObject::connect(job.get(), &Task::aborted, this, install);
|
||||||
QObject::connect(job.get(), &Task::aborted, &loop, &QEventLoop::quit);
|
QObject::connect(job.get(), &Task::succeeded, [response, this, &vers, install, &pack] {
|
||||||
QObject::connect(job.get(), &Task::succeeded, [response, this, &vers, &loop, &pack] {
|
|
||||||
QJsonParseError parse_error{};
|
QJsonParseError parse_error{};
|
||||||
QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error);
|
QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error);
|
||||||
if (parse_error.error != QJsonParseError::NoError) {
|
if (parse_error.error != QJsonParseError::NoError) {
|
||||||
@ -196,16 +194,14 @@ bool ResourceFolderModel::installResourceWithFlameMetadata(QString path, ModPlat
|
|||||||
qWarning() << "Error while reading mod info: " << e.cause();
|
qWarning() << "Error while reading mod info: " << e.cause();
|
||||||
}
|
}
|
||||||
LocalResourceUpdateTask update_metadata(indexDir(), pack, vers);
|
LocalResourceUpdateTask update_metadata(indexDir(), pack, vers);
|
||||||
QObject::connect(&update_metadata, &Task::finished, &loop, &QEventLoop::quit);
|
QObject::connect(&update_metadata, &Task::finished, this, install);
|
||||||
update_metadata.start();
|
update_metadata.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
job->start();
|
job->start();
|
||||||
|
} else {
|
||||||
loop.exec();
|
install();
|
||||||
}
|
}
|
||||||
|
|
||||||
return installResource(std::move(path));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ResourceFolderModel::uninstallResource(QString file_name, bool preserve_metadata)
|
bool ResourceFolderModel::uninstallResource(QString file_name, bool preserve_metadata)
|
||||||
|
@ -93,7 +93,7 @@ class ResourceFolderModel : public QAbstractListModel {
|
|||||||
*/
|
*/
|
||||||
virtual bool installResource(QString path);
|
virtual bool installResource(QString path);
|
||||||
|
|
||||||
virtual bool installResourceWithFlameMetadata(QString path, ModPlatform::IndexedVersion& vers);
|
virtual void installResourceWithFlameMetadata(QString path, ModPlatform::IndexedVersion& vers);
|
||||||
|
|
||||||
/** Uninstall (i.e. remove all data about it) a resource, given its file name.
|
/** Uninstall (i.e. remove all data about it) a resource, given its file name.
|
||||||
*
|
*
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QEventLoop>
|
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include "Application.h"
|
#include "Application.h"
|
||||||
#include "Json.h"
|
#include "Json.h"
|
||||||
|
|
||||||
|
#include "QObjectPtr.h"
|
||||||
#include "minecraft/mod/Mod.h"
|
#include "minecraft/mod/Mod.h"
|
||||||
#include "minecraft/mod/tasks/LocalResourceUpdateTask.h"
|
#include "minecraft/mod/tasks/LocalResourceUpdateTask.h"
|
||||||
|
|
||||||
@ -19,7 +20,7 @@ static ModrinthAPI modrinth_api;
|
|||||||
static FlameAPI flame_api;
|
static FlameAPI flame_api;
|
||||||
|
|
||||||
EnsureMetadataTask::EnsureMetadataTask(Resource* resource, QDir dir, ModPlatform::ResourceProvider prov)
|
EnsureMetadataTask::EnsureMetadataTask(Resource* resource, QDir dir, ModPlatform::ResourceProvider prov)
|
||||||
: Task(), m_index_dir(dir), m_provider(prov), m_hashingTask(nullptr), m_current_task(nullptr)
|
: Task(), m_indexDir(dir), m_provider(prov), m_hashingTask(nullptr), m_currentTask(nullptr)
|
||||||
{
|
{
|
||||||
auto hashTask = createNewHash(resource);
|
auto hashTask = createNewHash(resource);
|
||||||
if (!hashTask)
|
if (!hashTask)
|
||||||
@ -30,7 +31,7 @@ EnsureMetadataTask::EnsureMetadataTask(Resource* resource, QDir dir, ModPlatform
|
|||||||
}
|
}
|
||||||
|
|
||||||
EnsureMetadataTask::EnsureMetadataTask(QList<Resource*>& resources, QDir dir, ModPlatform::ResourceProvider prov)
|
EnsureMetadataTask::EnsureMetadataTask(QList<Resource*>& resources, QDir dir, ModPlatform::ResourceProvider prov)
|
||||||
: Task(), m_index_dir(dir), m_provider(prov), m_current_task(nullptr)
|
: Task(), m_indexDir(dir), m_provider(prov), m_currentTask(nullptr)
|
||||||
{
|
{
|
||||||
auto hashTask = makeShared<ConcurrentTask>("MakeHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt());
|
auto hashTask = makeShared<ConcurrentTask>("MakeHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt());
|
||||||
m_hashingTask = hashTask;
|
m_hashingTask = hashTask;
|
||||||
@ -45,7 +46,7 @@ EnsureMetadataTask::EnsureMetadataTask(QList<Resource*>& resources, QDir dir, Mo
|
|||||||
}
|
}
|
||||||
|
|
||||||
EnsureMetadataTask::EnsureMetadataTask(QHash<QString, Resource*>& resources, QDir dir, ModPlatform::ResourceProvider prov)
|
EnsureMetadataTask::EnsureMetadataTask(QHash<QString, Resource*>& resources, QDir dir, ModPlatform::ResourceProvider prov)
|
||||||
: Task(), m_resources(resources), m_index_dir(dir), m_provider(prov), m_current_task(nullptr)
|
: Task(), m_resources(resources), m_indexDir(dir), m_provider(prov), m_currentTask(nullptr)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
Hashing::Hasher::Ptr EnsureMetadataTask::createNewHash(Resource* resource)
|
Hashing::Hasher::Ptr EnsureMetadataTask::createNewHash(Resource* resource)
|
||||||
@ -81,8 +82,8 @@ bool EnsureMetadataTask::abort()
|
|||||||
// Prevent sending signals to a dead object
|
// Prevent sending signals to a dead object
|
||||||
disconnect(this, 0, 0, 0);
|
disconnect(this, 0, 0, 0);
|
||||||
|
|
||||||
if (m_current_task)
|
if (m_currentTask)
|
||||||
return m_current_task->abort();
|
return m_currentTask->abort();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,28 +150,22 @@ void EnsureMetadataTask::executeTask()
|
|||||||
connect(project_task.get(), &Task::finished, this, [this, invalidade_leftover, project_task] {
|
connect(project_task.get(), &Task::finished, this, [this, invalidade_leftover, project_task] {
|
||||||
invalidade_leftover();
|
invalidade_leftover();
|
||||||
project_task->deleteLater();
|
project_task->deleteLater();
|
||||||
if (m_current_task)
|
if (m_currentTask)
|
||||||
m_current_task.reset();
|
m_currentTask.reset();
|
||||||
});
|
});
|
||||||
connect(project_task.get(), &Task::failed, this, &EnsureMetadataTask::emitFailed);
|
connect(project_task.get(), &Task::failed, this, &EnsureMetadataTask::emitFailed);
|
||||||
|
|
||||||
m_current_task = project_task;
|
m_currentTask = project_task;
|
||||||
project_task->start();
|
project_task->start();
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(version_task.get(), &Task::finished, [this, version_task] {
|
|
||||||
version_task->deleteLater();
|
|
||||||
if (m_current_task)
|
|
||||||
m_current_task.reset();
|
|
||||||
});
|
|
||||||
|
|
||||||
if (m_resources.size() > 1)
|
if (m_resources.size() > 1)
|
||||||
setStatus(tr("Requesting metadata information from %1...").arg(ModPlatform::ProviderCapabilities::readableName(m_provider)));
|
setStatus(tr("Requesting metadata information from %1...").arg(ModPlatform::ProviderCapabilities::readableName(m_provider)));
|
||||||
else if (!m_resources.empty())
|
else if (!m_resources.empty())
|
||||||
setStatus(tr("Requesting metadata information from %1 for '%2'...")
|
setStatus(tr("Requesting metadata information from %1 for '%2'...")
|
||||||
.arg(ModPlatform::ProviderCapabilities::readableName(m_provider), m_resources.begin().value()->name()));
|
.arg(ModPlatform::ProviderCapabilities::readableName(m_provider), m_resources.begin().value()->name()));
|
||||||
|
|
||||||
m_current_task = version_task;
|
m_currentTask = version_task;
|
||||||
version_task->start();
|
version_task->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,7 +244,7 @@ Task::Ptr EnsureMetadataTask::modrinthVersionsTask()
|
|||||||
setStatus(tr("Parsing API response from Modrinth for '%1'...").arg(resource->name()));
|
setStatus(tr("Parsing API response from Modrinth for '%1'...").arg(resource->name()));
|
||||||
qDebug() << "Getting version for" << resource->name() << "from Modrinth";
|
qDebug() << "Getting version for" << resource->name() << "from Modrinth";
|
||||||
|
|
||||||
m_temp_versions.insert(hash, Modrinth::loadIndexedPackVersion(entry));
|
m_tempVersions.insert(hash, Modrinth::loadIndexedPackVersion(entry));
|
||||||
} catch (Json::JsonException& e) {
|
} catch (Json::JsonException& e) {
|
||||||
qDebug() << e.cause();
|
qDebug() << e.cause();
|
||||||
qDebug() << entries;
|
qDebug() << entries;
|
||||||
@ -269,7 +264,7 @@ Task::Ptr EnsureMetadataTask::modrinthVersionsTask()
|
|||||||
Task::Ptr EnsureMetadataTask::modrinthProjectsTask()
|
Task::Ptr EnsureMetadataTask::modrinthProjectsTask()
|
||||||
{
|
{
|
||||||
QHash<QString, QString> addonIds;
|
QHash<QString, QString> addonIds;
|
||||||
for (auto const& data : m_temp_versions)
|
for (auto const& data : m_tempVersions)
|
||||||
addonIds.insert(data.addonId.toString(), data.hash);
|
addonIds.insert(data.addonId.toString(), data.hash);
|
||||||
|
|
||||||
auto response = std::make_shared<QByteArray>();
|
auto response = std::make_shared<QByteArray>();
|
||||||
@ -334,16 +329,9 @@ Task::Ptr EnsureMetadataTask::modrinthProjectsTask()
|
|||||||
|
|
||||||
auto* resource = resource_iter.value();
|
auto* resource = resource_iter.value();
|
||||||
|
|
||||||
try {
|
setStatus(tr("Parsing API response from Modrinth for '%1'...").arg(resource->name()));
|
||||||
setStatus(tr("Parsing API response from Modrinth for '%1'...").arg(resource->name()));
|
|
||||||
|
|
||||||
modrinthCallback(pack, m_temp_versions.find(hash).value(), resource);
|
updateMetadata(pack, m_tempVersions.find(hash).value(), resource);
|
||||||
} catch (Json::JsonException& e) {
|
|
||||||
qDebug() << e.cause();
|
|
||||||
qDebug() << entries;
|
|
||||||
|
|
||||||
emitFail(resource);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -404,7 +392,7 @@ Task::Ptr EnsureMetadataTask::flameVersionsTask()
|
|||||||
|
|
||||||
setStatus(tr("Parsing API response from CurseForge for '%1'...").arg((*resource)->name()));
|
setStatus(tr("Parsing API response from CurseForge for '%1'...").arg((*resource)->name()));
|
||||||
|
|
||||||
m_temp_versions.insert(fingerprint, FlameMod::loadIndexedPackVersion(file_obj));
|
m_tempVersions.insert(fingerprint, FlameMod::loadIndexedPackVersion(file_obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Json::JsonException& e) {
|
} catch (Json::JsonException& e) {
|
||||||
@ -420,8 +408,8 @@ Task::Ptr EnsureMetadataTask::flameProjectsTask()
|
|||||||
{
|
{
|
||||||
QHash<QString, QString> addonIds;
|
QHash<QString, QString> addonIds;
|
||||||
for (auto const& hash : m_resources.keys()) {
|
for (auto const& hash : m_resources.keys()) {
|
||||||
if (m_temp_versions.contains(hash)) {
|
if (m_tempVersions.contains(hash)) {
|
||||||
auto data = m_temp_versions.find(hash).value();
|
auto data = m_tempVersions.find(hash).value();
|
||||||
|
|
||||||
auto id_str = data.addonId.toString();
|
auto id_str = data.addonId.toString();
|
||||||
if (!id_str.isEmpty())
|
if (!id_str.isEmpty())
|
||||||
@ -468,19 +456,19 @@ Task::Ptr EnsureMetadataTask::flameProjectsTask()
|
|||||||
auto hash = addonIds.find(id).value();
|
auto hash = addonIds.find(id).value();
|
||||||
auto resource = m_resources.find(hash).value();
|
auto resource = m_resources.find(hash).value();
|
||||||
|
|
||||||
|
ModPlatform::IndexedPack pack;
|
||||||
try {
|
try {
|
||||||
setStatus(tr("Parsing API response from CurseForge for '%1'...").arg(resource->name()));
|
setStatus(tr("Parsing API response from CurseForge for '%1'...").arg(resource->name()));
|
||||||
|
|
||||||
ModPlatform::IndexedPack pack;
|
|
||||||
FlameMod::loadIndexedPack(pack, entry_obj);
|
FlameMod::loadIndexedPack(pack, entry_obj);
|
||||||
|
|
||||||
flameCallback(pack, m_temp_versions.find(hash).value(), resource);
|
|
||||||
} catch (Json::JsonException& e) {
|
} catch (Json::JsonException& e) {
|
||||||
qDebug() << e.cause();
|
qDebug() << e.cause();
|
||||||
qDebug() << entries;
|
qDebug() << entries;
|
||||||
|
|
||||||
emitFail(resource);
|
emitFail(resource);
|
||||||
}
|
}
|
||||||
|
updateMetadata(pack, m_tempVersions.find(hash).value(), resource);
|
||||||
}
|
}
|
||||||
} catch (Json::JsonException& e) {
|
} catch (Json::JsonException& e) {
|
||||||
qDebug() << e.cause();
|
qDebug() << e.cause();
|
||||||
@ -491,28 +479,31 @@ Task::Ptr EnsureMetadataTask::flameProjectsTask()
|
|||||||
return proj_task;
|
return proj_task;
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnsureMetadataTask::modrinthCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Resource* resource)
|
void EnsureMetadataTask::updateMetadata(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Resource* resource)
|
||||||
{
|
{
|
||||||
// Prevent file name mismatch
|
try {
|
||||||
ver.fileName = resource->fileinfo().fileName();
|
// Prevent file name mismatch
|
||||||
if (ver.fileName.endsWith(".disabled"))
|
ver.fileName = resource->fileinfo().fileName();
|
||||||
ver.fileName.chop(9);
|
if (ver.fileName.endsWith(".disabled"))
|
||||||
|
ver.fileName.chop(9);
|
||||||
|
|
||||||
QDir tmp_index_dir(m_index_dir);
|
auto task = makeShared<LocalResourceUpdateTask>(m_indexDir, pack, ver);
|
||||||
|
|
||||||
{
|
connect(task.get(), &Task::finished, this, [this, &pack, resource] { updateMetadataCallback(pack, resource); });
|
||||||
LocalResourceUpdateTask update_metadata(m_index_dir, pack, ver);
|
|
||||||
QEventLoop loop;
|
|
||||||
|
|
||||||
QObject::connect(&update_metadata, &Task::finished, &loop, &QEventLoop::quit);
|
m_updateMetadataTasks[ModPlatform::ProviderCapabilities::name(pack.provider) + pack.addonId.toString()] = task;
|
||||||
|
task->start();
|
||||||
|
} catch (Json::JsonException& e) {
|
||||||
|
qDebug() << e.cause();
|
||||||
|
|
||||||
update_metadata.start();
|
emitFail(resource);
|
||||||
|
|
||||||
if (!update_metadata.isFinished())
|
|
||||||
loop.exec();
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
auto metadata = Metadata::get(tmp_index_dir, pack.slug);
|
void EnsureMetadataTask::updateMetadataCallback(ModPlatform::IndexedPack& pack, Resource* resource)
|
||||||
|
{
|
||||||
|
QDir tmpIndexDir(m_indexDir);
|
||||||
|
auto metadata = Metadata::get(tmpIndexDir, pack.slug);
|
||||||
if (!metadata.isValid()) {
|
if (!metadata.isValid()) {
|
||||||
qCritical() << "Failed to generate metadata at last step!";
|
qCritical() << "Failed to generate metadata at last step!";
|
||||||
emitFail(resource);
|
emitFail(resource);
|
||||||
@ -523,42 +514,3 @@ void EnsureMetadataTask::modrinthCallback(ModPlatform::IndexedPack& pack, ModPla
|
|||||||
|
|
||||||
emitReady(resource);
|
emitReady(resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnsureMetadataTask::flameCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Resource* resource)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
// Prevent file name mismatch
|
|
||||||
ver.fileName = resource->fileinfo().fileName();
|
|
||||||
if (ver.fileName.endsWith(".disabled"))
|
|
||||||
ver.fileName.chop(9);
|
|
||||||
|
|
||||||
QDir tmp_index_dir(m_index_dir);
|
|
||||||
|
|
||||||
{
|
|
||||||
LocalResourceUpdateTask update_metadata(m_index_dir, pack, ver);
|
|
||||||
QEventLoop loop;
|
|
||||||
|
|
||||||
QObject::connect(&update_metadata, &Task::finished, &loop, &QEventLoop::quit);
|
|
||||||
|
|
||||||
update_metadata.start();
|
|
||||||
|
|
||||||
if (!update_metadata.isFinished())
|
|
||||||
loop.exec();
|
|
||||||
}
|
|
||||||
|
|
||||||
auto metadata = Metadata::get(tmp_index_dir, pack.slug);
|
|
||||||
if (!metadata.isValid()) {
|
|
||||||
qCritical() << "Failed to generate metadata at last step!";
|
|
||||||
emitFail(resource);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
resource->setMetadata(metadata);
|
|
||||||
|
|
||||||
emitReady(resource);
|
|
||||||
} catch (Json::JsonException& e) {
|
|
||||||
qDebug() << e.cause();
|
|
||||||
|
|
||||||
emitFail(resource);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -30,11 +30,11 @@ class EnsureMetadataTask : public Task {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
// FIXME: Move to their own namespace
|
// FIXME: Move to their own namespace
|
||||||
auto modrinthVersionsTask() -> Task::Ptr;
|
Task::Ptr modrinthVersionsTask();
|
||||||
auto modrinthProjectsTask() -> Task::Ptr;
|
Task::Ptr modrinthProjectsTask();
|
||||||
|
|
||||||
auto flameVersionsTask() -> Task::Ptr;
|
Task::Ptr flameVersionsTask();
|
||||||
auto flameProjectsTask() -> Task::Ptr;
|
Task::Ptr flameProjectsTask();
|
||||||
|
|
||||||
// Helpers
|
// Helpers
|
||||||
enum class RemoveFromList { Yes, No };
|
enum class RemoveFromList { Yes, No };
|
||||||
@ -42,12 +42,12 @@ class EnsureMetadataTask : public Task {
|
|||||||
void emitFail(Resource*, QString key = {}, RemoveFromList = RemoveFromList::Yes);
|
void emitFail(Resource*, QString key = {}, RemoveFromList = RemoveFromList::Yes);
|
||||||
|
|
||||||
// Hashes and stuff
|
// Hashes and stuff
|
||||||
auto createNewHash(Resource*) -> Hashing::Hasher::Ptr;
|
Hashing::Hasher::Ptr createNewHash(Resource*);
|
||||||
auto getExistingHash(Resource*) -> QString;
|
QString getExistingHash(Resource*);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void modrinthCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Resource*);
|
void updateMetadata(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Resource*);
|
||||||
void flameCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Resource*);
|
void updateMetadataCallback(ModPlatform::IndexedPack& pack, Resource* resource);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void metadataReady(Resource*);
|
void metadataReady(Resource*);
|
||||||
@ -55,10 +55,11 @@ class EnsureMetadataTask : public Task {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
QHash<QString, Resource*> m_resources;
|
QHash<QString, Resource*> m_resources;
|
||||||
QDir m_index_dir;
|
QDir m_indexDir;
|
||||||
ModPlatform::ResourceProvider m_provider;
|
ModPlatform::ResourceProvider m_provider;
|
||||||
|
|
||||||
QHash<QString, ModPlatform::IndexedVersion> m_temp_versions;
|
QHash<QString, ModPlatform::IndexedVersion> m_tempVersions;
|
||||||
Task::Ptr m_hashingTask;
|
Task::Ptr m_hashingTask;
|
||||||
Task::Ptr m_current_task;
|
Task::Ptr m_currentTask;
|
||||||
|
QHash<QString, Task::Ptr> m_updateMetadataTasks;
|
||||||
};
|
};
|
||||||
|
@ -12,21 +12,21 @@
|
|||||||
|
|
||||||
class ModrinthAPI : public NetworkResourceAPI {
|
class ModrinthAPI : public NetworkResourceAPI {
|
||||||
public:
|
public:
|
||||||
auto currentVersion(QString hash, QString hash_format, std::shared_ptr<QByteArray> response) -> Task::Ptr;
|
Task::Ptr currentVersion(QString hash, QString hash_format, std::shared_ptr<QByteArray> response);
|
||||||
|
|
||||||
auto currentVersions(const QStringList& hashes, QString hash_format, std::shared_ptr<QByteArray> response) -> Task::Ptr;
|
Task::Ptr currentVersions(const QStringList& hashes, QString hash_format, std::shared_ptr<QByteArray> response);
|
||||||
|
|
||||||
auto latestVersion(QString hash,
|
Task::Ptr latestVersion(QString hash,
|
||||||
QString hash_format,
|
QString hash_format,
|
||||||
std::optional<std::list<Version>> mcVersions,
|
std::optional<std::list<Version>> mcVersions,
|
||||||
std::optional<ModPlatform::ModLoaderTypes> loaders,
|
std::optional<ModPlatform::ModLoaderTypes> loaders,
|
||||||
std::shared_ptr<QByteArray> response) -> Task::Ptr;
|
std::shared_ptr<QByteArray> response);
|
||||||
|
|
||||||
auto latestVersions(const QStringList& hashes,
|
Task::Ptr latestVersions(const QStringList& hashes,
|
||||||
QString hash_format,
|
QString hash_format,
|
||||||
std::optional<std::list<Version>> mcVersions,
|
std::optional<std::list<Version>> mcVersions,
|
||||||
std::optional<ModPlatform::ModLoaderTypes> loaders,
|
std::optional<ModPlatform::ModLoaderTypes> loaders,
|
||||||
std::shared_ptr<QByteArray> response) -> Task::Ptr;
|
std::shared_ptr<QByteArray> response);
|
||||||
|
|
||||||
Task::Ptr getProjects(QStringList addonIds, std::shared_ptr<QByteArray> response) const override;
|
Task::Ptr getProjects(QStringList addonIds, std::shared_ptr<QByteArray> response) const override;
|
||||||
|
|
||||||
|
@ -1047,10 +1047,10 @@ void MainWindow::processURLs(QList<QUrl> urls)
|
|||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case PackedResourceType::ResourcePack:
|
case PackedResourceType::ResourcePack:
|
||||||
minecraftInst->resourcePackList()->installResource(localFileName);
|
minecraftInst->resourcePackList()->installResourceWithFlameMetadata(localFileName, version);
|
||||||
break;
|
break;
|
||||||
case PackedResourceType::TexturePack:
|
case PackedResourceType::TexturePack:
|
||||||
minecraftInst->texturePackList()->installResource(localFileName);
|
minecraftInst->texturePackList()->installResourceWithFlameMetadata(localFileName, version);
|
||||||
break;
|
break;
|
||||||
case PackedResourceType::DataPack:
|
case PackedResourceType::DataPack:
|
||||||
qWarning() << "Importing of Data Packs not supported at this time. Ignoring" << localFileName;
|
qWarning() << "Importing of Data Packs not supported at this time. Ignoring" << localFileName;
|
||||||
@ -1059,7 +1059,7 @@ void MainWindow::processURLs(QList<QUrl> urls)
|
|||||||
minecraftInst->loaderModList()->installResourceWithFlameMetadata(localFileName, version);
|
minecraftInst->loaderModList()->installResourceWithFlameMetadata(localFileName, version);
|
||||||
break;
|
break;
|
||||||
case PackedResourceType::ShaderPack:
|
case PackedResourceType::ShaderPack:
|
||||||
minecraftInst->shaderPackList()->installResource(localFileName);
|
minecraftInst->shaderPackList()->installResourceWithFlameMetadata(localFileName, version);
|
||||||
break;
|
break;
|
||||||
case PackedResourceType::WorldSave:
|
case PackedResourceType::WorldSave:
|
||||||
minecraftInst->worldList()->installWorld(localFileInfo);
|
minecraftInst->worldList()->installWorld(localFileInfo);
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QtCore/QEventLoop>
|
|
||||||
#include <QtWidgets/QDialog>
|
#include <QtWidgets/QDialog>
|
||||||
|
|
||||||
#include "minecraft/auth/AuthFlow.h"
|
#include "minecraft/auth/AuthFlow.h"
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QtCore/QEventLoop>
|
|
||||||
#include <QtWidgets/QDialog>
|
#include <QtWidgets/QDialog>
|
||||||
|
|
||||||
#include "minecraft/auth/MinecraftAccount.h"
|
#include "minecraft/auth/MinecraftAccount.h"
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ResourceDownloadDialog.h"
|
#include "ResourceDownloadDialog.h"
|
||||||
#include <QEventLoop>
|
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user