9ff364b0d3
Signed-off-by: timoreo <contact@timoreo.fr>
58 lines
1.6 KiB
C++
58 lines
1.6 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);
|
|
|
|
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; }
|
|
|
|
bool shouldOverride() const { return m_override_existing; }
|
|
|
|
protected:
|
|
void setOverride(bool override) { m_override_existing = override; }
|
|
|
|
protected: /* data */
|
|
SettingsObjectPtr m_globalSettings;
|
|
QString m_instIcon;
|
|
QString m_instGroup;
|
|
QString m_stagingPath;
|
|
|
|
bool m_override_existing = false;
|
|
};
|