#pragma once #include #include #include #include #include "ProblemProvider.h" class ComponentList; namespace Meta { class Version; class VersionList; } class VersionFile; class ProfilePatch : public ProblemProvider { public: ProfilePatch(std::shared_ptr version); ProfilePatch(std::shared_ptr file, const QString &filename = QString()); virtual ~ProfilePatch(){}; virtual void applyTo(ComponentList *profile); virtual bool isMoveable(); virtual bool isCustomizable(); virtual bool isRevertible(); virtual bool isRemovable(); virtual bool isCustom(); virtual bool isVersionChangeable(); virtual void setOrder(int order); virtual int getOrder(); virtual QString getID(); virtual QString getName(); virtual QString getVersion(); virtual std::shared_ptr getMeta(); virtual QDateTime getReleaseDateTime(); virtual QString getFilename(); virtual std::shared_ptr getVersionFile(); virtual std::shared_ptr getVersionList(); void setVanilla (bool state); void setRemovable (bool state); void setRevertible (bool state); void setMovable (bool state); const QList getProblems() override; ProblemSeverity getProblemSeverity() override; protected: // Properties for UI and version manipulation from UI in general bool m_isMovable = false; bool m_isRevertible = false; bool m_isRemovable = false; bool m_isVanilla = false; bool m_orderOverride = false; int m_order = 0; std::shared_ptr m_metaVersion; std::shared_ptr m_file; QString m_filename; }; typedef std::shared_ptr ProfilePatchPtr;