diff options
Diffstat (limited to 'Swift/Controllers/Settings/SettingsProviderHierachy.h')
| -rw-r--r-- | Swift/Controllers/Settings/SettingsProviderHierachy.h | 46 | 
1 files changed, 46 insertions, 0 deletions
diff --git a/Swift/Controllers/Settings/SettingsProviderHierachy.h b/Swift/Controllers/Settings/SettingsProviderHierachy.h new file mode 100644 index 0000000..b7f6961 --- /dev/null +++ b/Swift/Controllers/Settings/SettingsProviderHierachy.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2012 Kevin Smith + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include <Swift/Controllers/Settings/SettingsProvider.h> + +namespace Swift { + +class SettingsProviderHierachy : public SettingsProvider { +	public: +		virtual ~SettingsProviderHierachy(); +		virtual std::string getSetting(const Setting<std::string>& setting); +		virtual void storeSetting(const Setting<std::string>& setting, const std::string& value); +		virtual bool getSetting(const Setting<bool>& setting); +		virtual void storeSetting(const Setting<bool>& setting, const bool& value); +		virtual int getSetting(const Setting<int>& setting); +		virtual void storeSetting(const Setting<int>& setting, const int& value); +		virtual std::vector<std::string> getAvailableProfiles(); +		virtual void createProfile(const std::string& profile); +		virtual void removeProfile(const std::string& profile); +	protected: +		virtual bool getIsSettingFinal(const std::string& settingPath); + +	public: +		/** +		 * Adds a provider less significant than any already added. +		 * This means that if an existing provider has a setting, this provider won't be asked. +		 * Any settings will be pushed into the topmost (least significant) provider. +		 * Does not take ownership of provider. +		 */ +		void addProviderToTopOfStack(SettingsProvider* provider); +	private: +		SettingsProvider* getWritableProvider(); +	private: +		/* Start/Left is most significant (lowest), left overrides right.*/ +		std::vector<SettingsProvider*> providers_; +}; + +} + + +  | 
 Swift