#ifndef PROJECT_SETTINGS_H #define PROJECT_SETTINGS_H #include #include #include "settings/Settings.h" #include "settings/LanguageType.h" class ProjectSettings : public Settings { public: static LanguageType getLanguageOfProject(FilePath projectFilePath); static const size_t VERSION; ProjectSettings(); ProjectSettings(const FilePath& projectFilePath); ProjectSettings(std::string projectName, const FilePath& projectFileLocation); virtual ~ProjectSettings(); virtual bool equalsExceptNameAndLocation(const ProjectSettings& other) const; virtual std::vector getLanguageStandards() const; bool needMigration() const; void migrate(); bool reload(); std::string getProjectName() const; void setProjectName(const std::string& name); FilePath getProjectFileLocation() const; void setProjectFileLocation(const FilePath& location); std::string getDescription() const; LanguageType getLanguage() const; bool setLanguage(LanguageType language); std::string getStandard() const; bool setStandard(const std::string& standard); std::vector getSourcePaths() const; std::vector getAbsoluteSourcePaths() const; bool setSourcePaths(const std::vector& sourcePaths); std::vector getExcludePaths() const; std::vector getAbsoluteExcludePaths() const; bool setExcludePaths(const std::vector& excludePaths); std::vector getSourceExtensions() const; bool setSourceExtensions(const std::vector& sourceExtensions); protected: void makePathsAbsolute(std::vector& paths) const; private: virtual std::vector getDefaultSourceExtensions() const; virtual std::string getDefaultStandard() const; SettingsMigrator getMigrations() const; }; #endif // PROJECT_SETTINGS_H