aboutsummaryrefslogtreecommitdiff
path: root/launcher/InstanceTask.h
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/InstanceTask.h')
-rw-r--r--launcher/InstanceTask.h89
1 files changed, 47 insertions, 42 deletions
diff --git a/launcher/InstanceTask.h b/launcher/InstanceTask.h
index 82e23f11..e35533fc 100644
--- a/launcher/InstanceTask.h
+++ b/launcher/InstanceTask.h
@@ -1,52 +1,57 @@
#pragma once
-#include "tasks/Task.h"
#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);
+
+struct InstanceName {
+ public:
+ InstanceName() = default;
+ InstanceName(QString name, QString version) : m_original_name(std::move(name)), m_original_version(std::move(version)) {}
+
+ [[nodiscard]] QString modifiedName() const;
+ [[nodiscard]] QString originalName() const;
+ [[nodiscard]] QString name() const;
+ [[nodiscard]] 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
-{
+class InstanceTask : public Task, public InstanceName {
Q_OBJECT
-public:
- explicit InstanceTask();
- virtual ~InstanceTask();
-
- void setParentSettings(SettingsObjectPtr settings)
- {
- m_globalSettings = settings;
- }
-
- void setStagingPath(const QString &stagingPath)
- {
- m_stagingPath = stagingPath;
- }
-
- void setName(const QString &name)
- {
- m_instName = name;
- }
- QString name() const
- {
- return m_instName;
- }
-
- void setIcon(const QString &icon)
- {
- m_instIcon = icon;
- }
-
- void setGroup(const QString &group)
- {
- m_instGroup = group;
- }
- QString group() const
- {
- return m_instGroup;
- }
-
-protected: /* data */
+ public:
+ InstanceTask();
+ ~InstanceTask() override = default;
+
+ void setParentSettings(SettingsObjectPtr settings) { m_globalSettings = settings; }
+
+ void setStagingPath(const QString& stagingPath) { m_stagingPath = stagingPath; }
+
+ void setIcon(const QString& icon) { m_instIcon = icon; }
+
+ void setGroup(const QString& group) { m_instGroup = group; }
+ QString group() const { return m_instGroup; }
+
+ bool shouldOverride() const { return m_override_existing; }
+
+ protected:
+ void setOverride(bool override) { m_override_existing = override; }
+
+ protected: /* data */
SettingsObjectPtr m_globalSettings;
- QString m_instName;
QString m_instIcon;
QString m_instGroup;
QString m_stagingPath;
+
+ bool m_override_existing = false;
};