#ifndef PROJECT_SETTINGS_H #define PROJECT_SETTINGS_H #include #include #include "settings/migration/SettingsMigrator.h" #include "settings/LanguageType.h" #include "settings/Settings.h" class SourceGroupSettings; class ProjectSettings : public Settings { public: static const size_t VERSION; static LanguageType getLanguageOfProject(const FilePath& filePath); ProjectSettings(); ProjectSettings(const FilePath& projectFilePath); ProjectSettings(std::string projectName, const FilePath& projectFileLocation); virtual ~ProjectSettings(); bool equalsExceptNameAndLocation(const ProjectSettings& other) const; bool needMigration() const; void migrate(); bool reload(); FilePath getProjectFilePath() const; void setProjectFilePath(std::string projectName, const FilePath& projectFileLocation); std::string getProjectName() const; FilePath getProjectFileLocation() const; std::string getDescription() const; std::vector> getAllSourceGroupSettings() const; void setAllSourceGroupSettings(const std::vector>& allSettings); std::vector makePathsExpandedAndAbsolute(const std::vector& paths) const; FilePath makePathExpandedAndAbsolute(const FilePath& path) const; private: SettingsMigrator getMigrations() const; }; #endif // PROJECT_SETTINGS_H