diff options
Diffstat (limited to 'launcher/ProblemProvider.h')
-rw-r--r-- | launcher/ProblemProvider.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/launcher/ProblemProvider.h b/launcher/ProblemProvider.h new file mode 100644 index 00000000..cd4745fa --- /dev/null +++ b/launcher/ProblemProvider.h @@ -0,0 +1,47 @@ +#pragma once + +enum class ProblemSeverity +{ + None, + Warning, + Error +}; + +struct PatchProblem +{ + ProblemSeverity m_severity; + QString m_description; +}; + +class ProblemProvider +{ +public: + virtual ~ProblemProvider() {}; + virtual const QList<PatchProblem> getProblems() const = 0; + virtual ProblemSeverity getProblemSeverity() const = 0; +}; + +class ProblemContainer : public ProblemProvider +{ +public: + const QList<PatchProblem> getProblems() const override + { + return m_problems; + } + ProblemSeverity getProblemSeverity() const override + { + return m_problemSeverity; + } + virtual void addProblem(ProblemSeverity severity, const QString &description) + { + if(severity > m_problemSeverity) + { + m_problemSeverity = severity; + } + m_problems.append({severity, description}); + } + +private: + QList<PatchProblem> m_problems; + ProblemSeverity m_problemSeverity = ProblemSeverity::None; +}; |