bb386a1162
Also carry on the original ID to avoid updating the wrong instance. Signed-off-by: flow <flowlnlnln@gmail.com>
73 lines
2.3 KiB
C++
73 lines
2.3 KiB
C++
#pragma once
|
|
|
|
#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);
|
|
|
|
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, public InstanceName {
|
|
Q_OBJECT
|
|
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; }
|
|
|
|
[[nodiscard]] bool shouldConfirmUpdate() const { return m_confirm_update; }
|
|
void setConfirmUpdate(bool confirm) { m_confirm_update = confirm; }
|
|
|
|
bool shouldOverride() const { return m_override_existing; }
|
|
|
|
[[nodiscard]] QString originalInstanceID() const { return m_original_instance_id; };
|
|
|
|
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;
|
|
}
|
|
|
|
protected: /* data */
|
|
SettingsObjectPtr m_globalSettings;
|
|
QString m_instIcon;
|
|
QString m_instGroup;
|
|
QString m_stagingPath;
|
|
|
|
bool m_override_existing = false;
|
|
bool m_confirm_update = true;
|
|
|
|
QString m_original_instance_id;
|
|
};
|