aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--launcher/InstanceTask.cpp23
-rw-r--r--launcher/InstanceTask.h2
-rw-r--r--launcher/modplatform/flame/FlameInstanceCreationTask.cpp19
-rw-r--r--launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp19
4 files changed, 31 insertions, 32 deletions
diff --git a/launcher/InstanceTask.cpp b/launcher/InstanceTask.cpp
index 55a44fd3..06682782 100644
--- a/launcher/InstanceTask.cpp
+++ b/launcher/InstanceTask.cpp
@@ -18,6 +18,29 @@ InstanceNameChange askForChangingInstanceName(QWidget* parent, const QString& ol
return InstanceNameChange::ShouldKeep;
}
+ShouldUpdate askIfShouldUpdate(QWidget *parent, QString original_version_name)
+{
+ 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),
+ QMessageBox::Information, QMessageBox::Ok | QMessageBox::Reset | QMessageBox::Abort);
+ info->setButtonText(QMessageBox::Ok, QObject::tr("Update existing instance"));
+ info->setButtonText(QMessageBox::Abort, QObject::tr("Create new instance"));
+ info->setButtonText(QMessageBox::Reset, QObject::tr("Cancel"));
+
+ info->exec();
+
+ if (info->clickedButton() == info->button(QMessageBox::Ok))
+ return ShouldUpdate::Update;
+ if (info->clickedButton() == info->button(QMessageBox::Abort))
+ return ShouldUpdate::SkipUpdating;
+ return ShouldUpdate::Cancel;
+
+}
+
QString InstanceName::name() const
{
if (!m_modified_name.isEmpty())
diff --git a/launcher/InstanceTask.h b/launcher/InstanceTask.h
index e35533fc..178fbc45 100644
--- a/launcher/InstanceTask.h
+++ b/launcher/InstanceTask.h
@@ -6,6 +6,8 @@
/* 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);
struct InstanceName {
public:
diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp
index f9258f24..d8356c75 100644
--- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp
+++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp
@@ -102,23 +102,10 @@ bool FlameCreationTask::updateInstance()
auto version_id = inst->getManagedPackVersionName();
auto version_str = !version_id.isEmpty() ? tr(" (version %1)").arg(version_id) : "";
- auto info = CustomMessageBox::selectable(
- m_parent, tr("Similar modpack was found!"),
- 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(version_str),
- QMessageBox::Information, QMessageBox::Ok | QMessageBox::Reset | QMessageBox::Abort);
- info->setButtonText(QMessageBox::Ok, tr("Update existing instance"));
- info->setButtonText(QMessageBox::Abort, tr("Create new instance"));
- info->setButtonText(QMessageBox::Reset, tr("Cancel"));
-
- info->exec();
-
- if (info->clickedButton() == info->button(QMessageBox::Abort))
+ auto should_update = askIfShouldUpdate(m_parent, version_str);
+ if (should_update == ShouldUpdate::SkipUpdating)
return false;
-
- if (info->clickedButton() == info->button(QMessageBox::Reset)) {
+ if (should_update == ShouldUpdate::Cancel) {
m_abort = true;
return false;
}
diff --git a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp
index ddeea224..762feef6 100644
--- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp
+++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp
@@ -49,23 +49,10 @@ bool ModrinthCreationTask::updateInstance()
auto version_name = inst->getManagedPackVersionName();
auto version_str = !version_name.isEmpty() ? tr(" (version %1)").arg(version_name) : "";
- auto info = CustomMessageBox::selectable(
- m_parent, tr("Similar modpack was found!"),
- 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(version_str),
- QMessageBox::Information, QMessageBox::Ok | QMessageBox::Reset | QMessageBox::Abort);
- info->setButtonText(QMessageBox::Ok, tr("Create new instance"));
- info->setButtonText(QMessageBox::Abort, tr("Update existing instance"));
- info->setButtonText(QMessageBox::Reset, tr("Cancel"));
-
- info->exec();
-
- if (info->clickedButton() == info->button(QMessageBox::Ok))
+ auto should_update = askIfShouldUpdate(m_parent, version_str);
+ if (should_update == ShouldUpdate::SkipUpdating)
return false;
-
- if (info->clickedButton() == info->button(QMessageBox::Reset)) {
+ if (should_update == ShouldUpdate::Cancel) {
m_abort = true;
return false;
}