From 3338db3f28db271d86024300d08a3e89bf8cb05c Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 7 May 2026 23:39:31 +0300 Subject: [PATCH] remove InstanceName Signed-off-by: Trial97 --- launcher/InstanceList.cpp | 29 +++---- launcher/InstanceList.h | 9 +-- launcher/InstanceTask.cpp | 77 +++++++++++-------- launcher/InstanceTask.h | 71 ++++++++--------- .../flame/FlameInstanceCreationTask.h | 4 +- .../modrinth/ModrinthInstanceCreationTask.h | 2 +- launcher/ui/dialogs/NewInstanceDialog.cpp | 5 +- .../ui/pages/instance/ManagedPackPage.cpp | 8 +- 8 files changed, 95 insertions(+), 110 deletions(-) diff --git a/launcher/InstanceList.cpp b/launcher/InstanceList.cpp index 1339499c7..8fdbb6748 100644 --- a/launcher/InstanceList.cpp +++ b/launcher/InstanceList.cpp @@ -955,7 +955,7 @@ class InstanceStaging : public Task { void childSucceeded() { unsigned sleepTime = backoff(); - if (m_parent->commitStagedInstance(m_stagingPath, *m_child, m_child->group(), *m_child)) { + if (m_parent->commitStagedInstance(m_stagingPath, *m_child, m_child->group())) { m_backoffTimer.stop(); emitSucceeded(); return; @@ -972,14 +972,14 @@ class InstanceStaging : public Task { void childFailed(const QString& reason) { m_backoffTimer.stop(); - m_parent->destroyStagingPath(m_stagingPath); + FS::deletePath(m_stagingPath); emitFailed(reason); } void childAborted() { m_backoffTimer.stop(); - m_parent->destroyStagingPath(m_stagingPath); + FS::deletePath(m_stagingPath); emitAborted(); } @@ -1024,22 +1024,20 @@ QString InstanceList::getStagedInstancePath() return result; } -bool InstanceList::commitStagedInstance(const QString& path, - const InstanceName& instanceName, - QString groupName, - const InstanceTask& commiting) +bool InstanceList::commitStagedInstance(const QString& path, const InstanceTask& instanceTask, QString groupName) { - if (groupName.isEmpty() && !groupName.isNull()) + if (groupName.isEmpty() && !groupName.isNull()) { groupName = QString(); + } QString instID; - auto should_override = commiting.shouldOverride(); + auto shouldOverride = instanceTask.shouldOverride(); - if (should_override) { - instID = commiting.originalInstanceID(); + if (shouldOverride) { + instID = instanceTask.originalInstanceID(); } else { - instID = FS::DirNameFromString(instanceName.modifiedName(), m_instDir); + instID = FS::DirNameFromString(instanceTask.modifiedName(), m_instDir); } Q_ASSERT(!instID.isEmpty()); @@ -1048,7 +1046,7 @@ bool InstanceList::commitStagedInstance(const QString& path, WatchLock lock(m_watcher, m_instDir); QString destination = FS::PathCombine(m_instDir, instID); - if (should_override) { + if (shouldOverride) { if (!FS::overrideFolder(destination, path)) { qWarning() << "Failed to override" << path << "to" << destination; return false; @@ -1073,11 +1071,6 @@ bool InstanceList::commitStagedInstance(const QString& path, return true; } -bool InstanceList::destroyStagingPath(const QString& keyPath) -{ - return FS::deletePath(keyPath); -} - int InstanceList::getTotalPlayTime() { updateTotalPlayTime(); diff --git a/launcher/InstanceList.h b/launcher/InstanceList.h index f0a92d273..3c44e5b92 100644 --- a/launcher/InstanceList.h +++ b/launcher/InstanceList.h @@ -46,7 +46,6 @@ class QFileSystemWatcher; class InstanceTask; -struct InstanceName; using InstanceId = QString; using GroupId = QString; @@ -136,13 +135,7 @@ class InstanceList : public QAbstractListModel { * should_override is used when another similar instance already exists, and we want to override it * - for instance, when updating it. */ - bool commitStagedInstance(const QString& keyPath, const InstanceName& instanceName, QString groupName, const InstanceTask&); - - /** - * Destroy a previously created staging area given by @keyPath - used when creation fails. - * Used by instance manipulation tasks. - */ - bool destroyStagingPath(const QString& keyPath); + bool commitStagedInstance(const QString& keyPath, const InstanceTask& instanceTask, QString groupName); int getTotalPlayTime(); diff --git a/launcher/InstanceTask.cpp b/launcher/InstanceTask.cpp index 01998a7aa..f83779d9c 100644 --- a/launcher/InstanceTask.cpp +++ b/launcher/InstanceTask.cpp @@ -7,89 +7,100 @@ #include -InstanceNameChange askForChangingInstanceName(QWidget* parent, const QString& old_name, const QString& new_name) +InstanceNameChange askForChangingInstanceName(QWidget* parent, const QString& oldName, const QString& newName) { - auto dialog = + auto* dialog = CustomMessageBox::selectable(parent, QObject::tr("Change instance name"), QObject::tr("The instance's name seems to include the old version. Would you like to update it?\n\n" "Old name: %1\n" "New name: %2") - .arg(old_name, new_name), + .arg(oldName, newName), QMessageBox::Question, QMessageBox::No | QMessageBox::Yes); auto result = dialog->exec(); - if (result == QMessageBox::Yes) + if (result == QMessageBox::Yes) { return InstanceNameChange::ShouldChange; + } return InstanceNameChange::ShouldKeep; } -ShouldUpdate askIfShouldUpdate(QWidget* parent, QString original_version_name) +ShouldUpdate askIfShouldUpdate(QWidget* parent, QString originalVersionName) { - if (APPLICATION->settings()->get("SkipModpackUpdatePrompt").toBool()) + if (APPLICATION->settings()->get("SkipModpackUpdatePrompt").toBool()) { return ShouldUpdate::SkipUpdating; + } - auto info = CustomMessageBox::selectable( + auto* info = CustomMessageBox::selectable( parent, QObject::tr("Similar modpack was found!"), QObject::tr( "One or more of your instances are from this same modpack%1. Do you want to create a " "separate instance, or update the existing one?\n\nNOTE: Make sure you made a backup of your important instance data before " "updating, as worlds can be corrupted and some configuration may be lost (due to pack overrides).") - .arg(original_version_name), + .arg(originalVersionName), QMessageBox::Information, QMessageBox::Cancel); QAbstractButton* update = info->addButton(QObject::tr("Update existing instance"), QMessageBox::AcceptRole); QAbstractButton* skip = info->addButton(QObject::tr("Create new instance"), QMessageBox::ResetRole); info->exec(); - if (info->clickedButton() == update) + if (info->clickedButton() == update) { return ShouldUpdate::Update; - if (info->clickedButton() == skip) + } + if (info->clickedButton() == skip) { return ShouldUpdate::SkipUpdating; + } return ShouldUpdate::Cancel; } -QString InstanceName::name() const +QString InstanceTask::name() const { - if (!m_modified_name.isEmpty()) + if (!m_modifiedName.isEmpty()) { return modifiedName(); - if (!m_original_version.isEmpty()) - return QString("%1 %2").arg(m_original_name, m_original_version); + } + if (!m_originalVersion.isEmpty()) { + return QString("%1 %2").arg(m_originalName, m_originalVersion); + } - return m_original_name; + return m_originalName; } -QString InstanceName::originalName() const +QString InstanceTask::originalName() const { - return m_original_name; + return m_originalName; } -QString InstanceName::modifiedName() const +QString InstanceTask::modifiedName() const { - if (!m_modified_name.isEmpty()) - return m_modified_name; - return m_original_name; + if (!m_modifiedName.isEmpty()) { + return m_modifiedName; + } + return m_originalName; } -QString InstanceName::version() const +QString InstanceTask::version() const { - return m_original_version; + return m_originalVersion; } -void InstanceName::setName(InstanceName& other) +void InstanceTask::setOriginalName(const QString& name, const QString& version) { - m_original_name = other.m_original_name; - m_original_version = other.m_original_version; - m_modified_name = other.m_modified_name; + m_originalName = name; + m_originalVersion = version; +} +void InstanceTask::setOverride(bool override, const QString& instanceIdToOverride) +{ + m_overrideExisting = override; + if (!instanceIdToOverride.isEmpty()) { + m_originalInstanceId = instanceIdToOverride; + } } - -InstanceTask::InstanceTask() : Task(), InstanceName() {} ShouldDeleteSaves askIfShouldDeleteSaves(QWidget* parent) { - auto dialog = CustomMessageBox::selectable(parent, QObject::tr("Delete Existing Save Files"), - QObject::tr("An earlier version of this mod pack installed save files.\n" - "Would you like to remove those existing saves as part of this update?"), - QMessageBox::Question, QMessageBox::No | QMessageBox::Yes); + auto* dialog = CustomMessageBox::selectable(parent, QObject::tr("Delete Existing Save Files"), + QObject::tr("An earlier version of this mod pack installed save files.\n" + "Would you like to remove those existing saves as part of this update?"), + QMessageBox::Question, QMessageBox::No | QMessageBox::Yes); auto result = dialog->exec(); return result == QMessageBox::Yes ? ShouldDeleteSaves::Yes : ShouldDeleteSaves::No; } diff --git a/launcher/InstanceTask.h b/launcher/InstanceTask.h index 125930a27..8cb5826f4 100644 --- a/launcher/InstanceTask.h +++ b/launcher/InstanceTask.h @@ -1,40 +1,21 @@ #pragma once +#include #include "settings/SettingsObject.h" #include "tasks/Task.h" /* Helpers */ -enum class InstanceNameChange { ShouldChange, ShouldKeep }; -[[nodiscard]] InstanceNameChange askForChangingInstanceName(QWidget* parent, const QString& old_name, const QString& new_name); -enum class ShouldUpdate { Update, SkipUpdating, Cancel }; -[[nodiscard]] ShouldUpdate askIfShouldUpdate(QWidget* parent, QString original_version_name); -enum class ShouldDeleteSaves { NotAsked, Yes, No }; +enum class InstanceNameChange : std::uint8_t { ShouldChange, ShouldKeep }; +[[nodiscard]] InstanceNameChange askForChangingInstanceName(QWidget* parent, const QString& oldName, const QString& newName); +enum class ShouldUpdate : std::uint8_t { Update, SkipUpdating, Cancel }; +[[nodiscard]] ShouldUpdate askIfShouldUpdate(QWidget* parent, QString originalVersionName); +enum class ShouldDeleteSaves : std::uint8_t { NotAsked, Yes, No }; [[nodiscard]] ShouldDeleteSaves askIfShouldDeleteSaves(QWidget* parent); -struct InstanceName { - public: - InstanceName() = default; - InstanceName(QString name, QString version) : m_original_name(std::move(name)), m_original_version(std::move(version)) {} - - QString modifiedName() const; - QString originalName() const; - QString name() const; - QString version() const; - - void setName(QString name) { m_modified_name = name; } - void setName(InstanceName& other); - - protected: - QString m_original_name; - QString m_original_version; - - QString m_modified_name; -}; - -class InstanceTask : public Task, public InstanceName { +class InstanceTask : public Task { Q_OBJECT public: - InstanceTask(); + InstanceTask() = default; ~InstanceTask() override = default; void setParentSettings(SettingsObject* settings) { m_globalSettings = settings; } @@ -46,29 +27,37 @@ class InstanceTask : public Task, public InstanceName { void setGroup(const QString& group) { m_instGroup = group; } QString group() const { return m_instGroup; } - bool shouldConfirmUpdate() const { return m_confirm_update; } - void setConfirmUpdate(bool confirm) { m_confirm_update = confirm; } + bool shouldConfirmUpdate() const { return m_confirmUpdate; } + void setConfirmUpdate(bool confirm) { m_confirmUpdate = confirm; } - bool shouldOverride() const { return m_override_existing; } + bool shouldOverride() const { return m_overrideExisting; } - QString originalInstanceID() const { return m_original_instance_id; }; + QString originalInstanceID() const { return m_originalInstanceId; }; + + QString modifiedName() const; + QString originalName() const; + QString name() const; + QString version() const; + + void setName(const QString& name) { m_modifiedName = name; } + void setOriginalName(const QString& name, const QString& version); protected: - void setOverride(bool override, QString instance_id_to_override = {}) - { - m_override_existing = override; - if (!instance_id_to_override.isEmpty()) - m_original_instance_id = instance_id_to_override; - } + void setOverride(bool override, const QString& instanceIdToOverride = {}); protected: /* data */ - SettingsObject* m_globalSettings; + SettingsObject* m_globalSettings{}; QString m_instIcon; QString m_instGroup; QString m_stagingPath; - bool m_override_existing = false; - bool m_confirm_update = true; + bool m_overrideExisting = false; + bool m_confirmUpdate = true; - QString m_original_instance_id; + QString m_originalInstanceId; + + QString m_originalName; + QString m_originalVersion; + + QString m_modifiedName; }; diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.h b/launcher/modplatform/flame/FlameInstanceCreationTask.h index 221ceaf22..1b0e68af4 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.h +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.h @@ -62,7 +62,7 @@ class FlameCreationTask final : public InstanceCreationTask { setStagingPath(staging_path); setParentSettings(global_settings); - m_original_instance_id = std::move(original_instance_id); + m_originalInstanceId = std::move(original_instance_id); } bool abort() override; @@ -73,7 +73,7 @@ class FlameCreationTask final : public InstanceCreationTask { private slots: void idResolverSucceeded(QEventLoop&); void setupDownloadJob(QEventLoop&); - void copyBlockedMods(QList const& blocked_mods); + void copyBlockedMods(const QList& blocked_mods); void validateOtherResources(QEventLoop& loop); QString getVersionForLoader(QString uid, QString loaderType, QString version, QString mcVersion); diff --git a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.h b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.h index c8835e142..1b82fbb89 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.h +++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.h @@ -35,7 +35,7 @@ class ModrinthCreationTask final : public InstanceCreationTask { setStagingPath(stagingPath); setParentSettings(globalSettings); - m_original_instance_id = std::move(originalInstanceId); + m_originalInstanceId = std::move(originalInstanceId); } bool abort() override; diff --git a/launcher/ui/dialogs/NewInstanceDialog.cpp b/launcher/ui/dialogs/NewInstanceDialog.cpp index 8cf094527..7175efed2 100644 --- a/launcher/ui/dialogs/NewInstanceDialog.cpp +++ b/launcher/ui/dialogs/NewInstanceDialog.cpp @@ -254,9 +254,8 @@ InstanceTask* NewInstanceDialog::extractTask() { InstanceTask* extracted = creationTask.release(); - InstanceName inst_name(ui->instNameTextBox->placeholderText().trimmed(), importVersion); - inst_name.setName(ui->instNameTextBox->text().trimmed()); - extracted->setName(inst_name); + extracted->setName(ui->instNameTextBox->text().trimmed()); + extracted->setOriginalName(ui->instNameTextBox->placeholderText().trimmed(), importVersion); extracted->setGroup(instGroup()); extracted->setIcon(iconKey()); diff --git a/launcher/ui/pages/instance/ManagedPackPage.cpp b/launcher/ui/pages/instance/ManagedPackPage.cpp index d2683fa92..0553c2907 100644 --- a/launcher/ui/pages/instance/ManagedPackPage.cpp +++ b/launcher/ui/pages/instance/ManagedPackPage.cpp @@ -128,7 +128,8 @@ ManagedPackPage::ManagedPackPage(BaseInstance* inst, InstanceWindow* instance_wi QDesktopServices::openUrl(url); }); - connect(ui->urlLine, &QLineEdit::textChanged, this, [this](QString text) { m_inst->settings()->set("ManagedPackURL", text.trimmed()); }); + connect(ui->urlLine, &QLineEdit::textChanged, this, + [this](QString text) { m_inst->settings()->set("ManagedPackURL", text.trimmed()); }); } ManagedPackPage::~ManagedPackPage() @@ -523,9 +524,8 @@ void ManagedPackPage::updatePack(const QUrl& url, QString versionID, QString ver if (versionName.isEmpty()) { extracted->setName(m_inst->name()); } else { - InstanceName inst_name(m_inst->getManagedPackName(), versionName); - inst_name.setName(m_inst->name().replace(m_inst->getManagedPackVersionName(), versionName)); - extracted->setName(inst_name); + extracted->setOriginalName(m_inst->getManagedPackName(), versionName); + extracted->setName(m_inst->name().replace(m_inst->getManagedPackVersionName(), versionName)); } extracted->setGroup(APPLICATION->instances()->getInstanceGroup(m_inst->id())); extracted->setIcon(m_inst->iconKey());