#pragma once #include #include enum class ProblemSeverity { None, Warning, Error }; struct PatchProblem { ProblemSeverity m_severity; QString m_description; }; class ProblemProvider { public: virtual ~ProblemProvider() {} virtual const QList getProblems() const = 0; virtual ProblemSeverity getProblemSeverity() const = 0; }; class ProblemContainer : public ProblemProvider { public: const QList 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 m_problems; ProblemSeverity m_problemSeverity = ProblemSeverity::None; };