Simplify implementation by removing some unused code

Only applies to cauldron loader which doesn't exist on Modrinth or
CurseForge, and doesn't even make sense for shaders.

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
This commit is contained in:
TheKodeToad
2025-12-09 11:42:17 +00:00
parent 2477c4f021
commit 66c8afe4d3
8 changed files with 19 additions and 57 deletions

View File

@@ -22,7 +22,6 @@
#include "Application.h" #include "Application.h"
#include "FileSystem.h" #include "FileSystem.h"
#include "minecraft/mod/ModFolderModel.h"
#include "minecraft/mod/ResourceFolderModel.h" #include "minecraft/mod/ResourceFolderModel.h"
#include "minecraft/mod/ShaderPackFolderModel.h" #include "minecraft/mod/ShaderPackFolderModel.h"
@@ -33,9 +32,8 @@
ResourceDownloadTask::ResourceDownloadTask(ModPlatform::IndexedPack::Ptr pack, ResourceDownloadTask::ResourceDownloadTask(ModPlatform::IndexedPack::Ptr pack,
ModPlatform::IndexedVersion version, ModPlatform::IndexedVersion version,
const std::shared_ptr<ResourceFolderModel> packs, const std::shared_ptr<ResourceFolderModel> packs,
bool is_indexed, bool is_indexed)
QString custom_target_folder) : m_pack(std::move(pack)), m_pack_version(std::move(version)), m_pack_model(packs)
: m_pack(std::move(pack)), m_pack_version(std::move(version)), m_pack_model(packs), m_custom_target_folder(custom_target_folder)
{ {
if (is_indexed) { if (is_indexed) {
m_update_task.reset(new LocalResourceUpdateTask(m_pack_model->indexDir(), *m_pack, m_pack_version)); m_update_task.reset(new LocalResourceUpdateTask(m_pack_model->indexDir(), *m_pack, m_pack_version));
@@ -47,19 +45,7 @@ ResourceDownloadTask::ResourceDownloadTask(ModPlatform::IndexedPack::Ptr pack,
m_filesNetJob.reset(new NetJob(tr("Resource download"), APPLICATION->network())); m_filesNetJob.reset(new NetJob(tr("Resource download"), APPLICATION->network()));
m_filesNetJob->setStatus(tr("Downloading resource:\n%1").arg(m_pack_version.downloadUrl)); m_filesNetJob->setStatus(tr("Downloading resource:\n%1").arg(m_pack_version.downloadUrl));
QDir dir{ m_pack_model->dir() }; auto action = Net::ApiDownload::makeFile(m_pack_version.downloadUrl, m_pack_model->dir().absoluteFilePath(getFilename()));
{
// FIXME: Make this more generic. May require adding additional info to IndexedVersion,
// or adquiring a reference to the base instance.
if (!m_custom_target_folder.isEmpty()) {
dir.cdUp();
dir.cd(m_custom_target_folder);
}
}
m_targetPath = dir.absoluteFilePath(getFilename());
auto action = Net::ApiDownload::makeFile(m_pack_version.downloadUrl, m_targetPath);
if (!m_pack_version.hash_type.isEmpty() && !m_pack_version.hash.isEmpty()) { if (!m_pack_version.hash_type.isEmpty() && !m_pack_version.hash.isEmpty()) {
switch (Hashing::algorithmFromString(m_pack_version.hash_type)) { switch (Hashing::algorithmFromString(m_pack_version.hash_type)) {
case Hashing::Algorithm::Md4: case Hashing::Algorithm::Md4:
@@ -93,26 +79,24 @@ ResourceDownloadTask::ResourceDownloadTask(ModPlatform::IndexedPack::Ptr pack,
void ResourceDownloadTask::downloadSucceeded() void ResourceDownloadTask::downloadSucceeded()
{ {
m_filesNetJob.reset(); m_filesNetJob.reset();
auto name = std::get<0>(to_delete); auto oldName = std::get<0>(to_delete);
auto filename = std::get<1>(to_delete); auto oldFilename = std::get<1>(to_delete);
if (name.isEmpty() || filename == m_pack_version.fileName) if (oldName.isEmpty() || oldFilename == m_pack_version.fileName)
return; return;
m_pack_model->uninstallResource(filename, true); m_pack_model->uninstallResource(oldFilename, true);
// also rename the shader config file // also rename the shader config file
if (dynamic_cast<ShaderPackFolderModel*>(m_pack_model.get()) != nullptr) { if (dynamic_cast<ShaderPackFolderModel*>(m_pack_model.get()) != nullptr) {
QFileInfo oldConfig(m_pack_model->dir(), filename + ".txt"); QFileInfo oldConfig(m_pack_model->dir(), oldFilename + ".txt");
QFileInfo newConfig(m_targetPath + ".txt"); QFileInfo newConfig(m_pack_model->dir(), getFilename() + ".txt");
if (oldConfig.exists() && !newConfig.exists()) { if (oldConfig.exists() && !newConfig.exists()) {
bool success = FS::move(oldConfig.filePath(), newConfig.filePath()); bool success = FS::move(oldConfig.filePath(), newConfig.filePath());
if (!success) { if (!success)
emit logWarning( emit logWarning(tr("Failed to rename shader config from '%1' to '%2'").arg(oldConfig.fileName(), newConfig.fileName()));
tr("Failed to rename shader config from '%1' to '%2'").arg(oldConfig.absoluteFilePath(), newConfig.absoluteFilePath()));
}
} }
} }
} }

View File

@@ -33,10 +33,8 @@ class ResourceDownloadTask : public SequentialTask {
explicit ResourceDownloadTask(ModPlatform::IndexedPack::Ptr pack, explicit ResourceDownloadTask(ModPlatform::IndexedPack::Ptr pack,
ModPlatform::IndexedVersion version, ModPlatform::IndexedVersion version,
std::shared_ptr<ResourceFolderModel> packs, std::shared_ptr<ResourceFolderModel> packs,
bool is_indexed = true, bool is_indexed = true);
QString custom_target_folder = {});
const QString& getFilename() const { return m_pack_version.fileName; } const QString& getFilename() const { return m_pack_version.fileName; }
const QString& getCustomPath() const { return m_custom_target_folder; }
const QVariant& getVersionID() const { return m_pack_version.fileId; } const QVariant& getVersionID() const { return m_pack_version.fileId; }
const ModPlatform::IndexedVersion& getVersion() const { return m_pack_version; } const ModPlatform::IndexedVersion& getVersion() const { return m_pack_version; }
const ModPlatform::ResourceProvider& getProvider() const { return m_pack->provider; } const ModPlatform::ResourceProvider& getProvider() const { return m_pack->provider; }
@@ -47,8 +45,6 @@ class ResourceDownloadTask : public SequentialTask {
ModPlatform::IndexedPack::Ptr m_pack; ModPlatform::IndexedPack::Ptr m_pack;
ModPlatform::IndexedVersion m_pack_version; ModPlatform::IndexedVersion m_pack_version;
const std::shared_ptr<ResourceFolderModel> m_pack_model; const std::shared_ptr<ResourceFolderModel> m_pack_model;
QString m_custom_target_folder;
QString m_targetPath;
NetJob::Ptr m_filesNetJob; NetJob::Ptr m_filesNetJob;
LocalResourceUpdateTask::Ptr m_update_task; LocalResourceUpdateTask::Ptr m_update_task;

View File

@@ -185,9 +185,8 @@ void ResourceDownloadDialog::confirm()
}); });
for (auto& task : selected) { for (auto& task : selected) {
auto extraInfo = dependencyExtraInfo.value(task->getPack()->addonId.toString()); auto extraInfo = dependencyExtraInfo.value(task->getPack()->addonId.toString());
confirm_dialog->appendResource({ task->getName(), task->getFilename(), task->getCustomPath(), confirm_dialog->appendResource({ task->getName(), task->getFilename(), ModPlatform::ProviderCapabilities::name(task->getProvider()),
ModPlatform::ProviderCapabilities::name(task->getProvider()), extraInfo.required_by, extraInfo.required_by, ModPlatform::indexedVersionTypeToString(task->getVersion().version_type),
ModPlatform::indexedVersionTypeToString(task->getVersion().version_type),
!extraInfo.maybe_installed }); !extraInfo.maybe_installed });
} }

View File

@@ -68,17 +68,6 @@ void ReviewMessageBox::appendResource(ResourceInformation&& info)
filenameItem->setText(0, tr("Filename: %1").arg(info.filename)); filenameItem->setText(0, tr("Filename: %1").arg(info.filename));
filenameItem->setData(0, Qt::UserRole, info.filename); filenameItem->setData(0, Qt::UserRole, info.filename);
if (!info.custom_file_path.isEmpty()) {
auto customPathItem = new QTreeWidgetItem(itemTop);
customPathItem->setText(0, tr("This download will be placed in: %1").arg(info.custom_file_path));
customPathItem->setData(0, Qt::UserRole, info.custom_file_path);
itemTop->setIcon(1, QIcon(QIcon::fromTheme("status-yellow")));
itemTop->setToolTip(
1,
tr("This file will be downloaded to a folder location different from the default, possibly due to its loader requiring it."));
}
auto providerItem = new QTreeWidgetItem(itemTop); auto providerItem = new QTreeWidgetItem(itemTop);
providerItem->setText(0, tr("Provider: %1").arg(info.provider)); providerItem->setText(0, tr("Provider: %1").arg(info.provider));
providerItem->setData(0, Qt::UserRole, info.provider); providerItem->setData(0, Qt::UserRole, info.provider);
@@ -137,4 +126,4 @@ void ReviewMessageBox::on_toggleDepsButton_clicked()
auto state = m_deps_checked ? Qt::Checked : Qt::Unchecked; auto state = m_deps_checked ? Qt::Checked : Qt::Unchecked;
for (auto dep : m_deps) for (auto dep : m_deps)
dep->setCheckState(0, state); dep->setCheckState(0, state);
}; };

View File

@@ -16,7 +16,6 @@ class ReviewMessageBox : public QDialog {
using ResourceInformation = struct res_info { using ResourceInformation = struct res_info {
QString name; QString name;
QString filename; QString filename;
QString custom_file_path{};
QString provider; QString provider;
QStringList required_by; QStringList required_by;
QString version_type; QString version_type;

View File

@@ -472,11 +472,10 @@ void ResourceModel::infoRequestSucceeded(ModPlatform::IndexedPack::Ptr pack, con
void ResourceModel::addPack(ModPlatform::IndexedPack::Ptr pack, void ResourceModel::addPack(ModPlatform::IndexedPack::Ptr pack,
ModPlatform::IndexedVersion& version, ModPlatform::IndexedVersion& version,
const std::shared_ptr<ResourceFolderModel> packs, const std::shared_ptr<ResourceFolderModel> packs,
bool is_indexed, bool is_indexed)
QString custom_target_folder)
{ {
version.is_currently_selected = true; version.is_currently_selected = true;
m_selected.append(makeShared<ResourceDownloadTask>(pack, version, packs, is_indexed, custom_target_folder)); m_selected.append(makeShared<ResourceDownloadTask>(pack, version, packs, is_indexed));
} }
void ResourceModel::removePack(const QString& rem) void ResourceModel::removePack(const QString& rem)

View File

@@ -94,8 +94,7 @@ class ResourceModel : public QAbstractListModel {
void addPack(ModPlatform::IndexedPack::Ptr pack, void addPack(ModPlatform::IndexedPack::Ptr pack,
ModPlatform::IndexedVersion& version, ModPlatform::IndexedVersion& version,
std::shared_ptr<ResourceFolderModel> packs, std::shared_ptr<ResourceFolderModel> packs,
bool is_indexed = false, bool is_indexed = false);
QString custom_target_folder = {});
void removePack(const QString& rem); void removePack(const QString& rem);
QList<DownloadTaskPtr> selectedPacks() { return m_selected; } QList<DownloadTaskPtr> selectedPacks() { return m_selected; }

View File

@@ -47,10 +47,7 @@ void ShaderPackResourcePage::addResourceToPage(ModPlatform::IndexedPack::Ptr pac
const std::shared_ptr<ResourceFolderModel> base_model) const std::shared_ptr<ResourceFolderModel> base_model)
{ {
bool is_indexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); bool is_indexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool();
QString custom_target_folder; m_model->addPack(pack, version, base_model, is_indexed);
if (version.loaders & ModPlatform::Cauldron)
custom_target_folder = QStringLiteral("resourcepacks");
m_model->addPack(pack, version, base_model, is_indexed, custom_target_folder);
} }
} // namespace ResourceDownload } // namespace ResourceDownload