#ifndef PROJECT_SETTINGS_H #define PROJECT_SETTINGS_H #include #include #include "settings/Settings.h" class ProjectSettings : public Settings { public: static std::vector getDefaultSourceExtensions(); static std::shared_ptr getInstance(); ProjectSettings(); ~ProjectSettings(); bool operator==(const ProjectSettings& other) const; bool operator!=(const ProjectSettings& other) const; virtual void save(const FilePath& filePath); // language settings std::string getLanguage() const; bool setLanguage(const std::string& language); std::string getStandard() const; bool setStandard(const std::string& standard); // java... todo: move this std::vector getJavaClasspaths() const; std::vector getAbsoluteJavaClasspaths() const; // source std::vector getSourcePaths() const; std::vector getAbsoluteSourcePaths() const; bool setSourcePaths(const std::vector& sourcePaths); std::vector getHeaderSearchPaths() const; std::vector getAbsoluteHeaderSearchPaths() const; bool setHeaderSearchPaths(const std::vector& headerSearchPaths); std::vector getFrameworkSearchPaths() const; std::vector getAbsoluteFrameworkSearchPaths() const; bool setFrameworkSearchPaths(const std::vector& frameworkSearchPaths); std::vector getCompilerFlags() const; bool setCompilerFlags(const std::vector& compilerFlags); std::vector getSourceExtensions() const; bool setSourceExtensions(const std::vector& sourceExtensions); bool getUseSourcePathsForHeaderSearch() const; bool setUseSourcePathsForHeaderSearch(bool useSourcePathsForHeaderSearch); std::vector getExcludePaths() const; std::vector getAbsoluteExcludePaths() const; bool setExcludePaths(const std::vector& excludePaths); FilePath getVisualStudioSolutionPath() const; bool setVisualStudioSolutionPath(const FilePath& visualStudioSolutionPath); FilePath getCompilationDatabasePath() const; bool setCompilationDatabasePath(const FilePath& compilationDatabasePath); // info std::string getDescription() const; // used in project wizzard std::string getProjectName() const; void setProjectName(const std::string& name); FilePath getProjectFileLocation() const; void setProjectFileLocation(const FilePath& location); private: void makePathsAbsolute(std::vector& paths) const; std::string m_projectName; FilePath m_projectFileLocation; static std::shared_ptr s_instance; }; #endif // PROJECT_SETTINGS_H