diff options
author | Max Horn | 2006-04-15 13:12:03 +0000 |
---|---|---|
committer | Max Horn | 2006-04-15 13:12:03 +0000 |
commit | 3628629007e4b97b7b634d0545e3acd474c7708b (patch) | |
tree | 4c357399bf7bb1ea4fbea8faa91fc631b2ef5847 /common/config-manager.h | |
parent | 2f024e270199d5fc2d38d62150b689a1fdca0b1d (diff) | |
download | scummvm-rg350-3628629007e4b97b7b634d0545e3acd474c7708b.tar.gz scummvm-rg350-3628629007e4b97b7b634d0545e3acd474c7708b.tar.bz2 scummvm-rg350-3628629007e4b97b7b634d0545e3acd474c7708b.zip |
- Replaced ConfigManager::_globalDomains by _appDomain (we don't support multiple global domains anymore)
- Restructured parts of the ConfigManager to be more consistent and a bit easier to understand
- Introduced ConfigManager::getDomain, potentially useful for code that needs to edit a specific domain (like the option dialogs)
- Allow passing an empty string to ConfigManager::setActiveDomain(), to reset the active domain
- Discard all transient config options (i.e. mostly command line settings) when entering the launcher, and after an engine exits
- Introduced various hidden easter bugs. Happy easter, and have fun searching!
svn-id: r21906
Diffstat (limited to 'common/config-manager.h')
-rw-r--r-- | common/config-manager.h | 67 |
1 files changed, 48 insertions, 19 deletions
diff --git a/common/config-manager.h b/common/config-manager.h index 8793a35db8..10313f64d5 100644 --- a/common/config-manager.h +++ b/common/config-manager.h @@ -92,37 +92,64 @@ public: void loadDefaultConfigFile(); void loadConfigFile(const String &filename); + /** + * Retrieve the config domain with the given name. + * @param domName the name of the domain to retrieve + * @return pointer to the domain, or 0 if the domain doesn't exist. + */ + Domain * getDomain(const String &domName); + const Domain * getDomain(const String &domName) const; + + + // + // Generic access methods: No domain specified, use the values from the + // various domains in the order of their priority. + // + bool hasKey(const String &key) const; - bool hasKey(const String &key, const String &dom) const; - - void removeKey(const String &key, const String &dom); + const String & get(const String &key) const; + void set(const String &key, const String &value); + +#if 1 + // + // Domain specific access methods: Acces *one specific* domain and modify it. + // TODO: I'd like to get rid of most of those if possible, or at least reduce + // their usage, by using getDomain as often as possible. For example in the + // options dialog code... + // + + bool hasKey(const String &key, const String &domName) const; + const String & get(const String &key, const String &domName) const; + void set(const String &key, const String &value, const String &domName); + + void removeKey(const String &key, const String &domName); +#endif - const String & get(const String &key, const String &dom = String::emptyString) const; - int getInt(const String &key, const String &dom = String::emptyString) const; - bool getBool(const String &key, const String &dom = String::emptyString) const; + // + // Some additional convenience accessors. + // + int getInt(const String &key, const String &domName = String::emptyString) const; + bool getBool(const String &key, const String &domName = String::emptyString) const; + void set(const String &key, int value, const String &domName = String::emptyString); + void set(const String &key, bool value, const String &domName = String::emptyString); - void set(const String &key, const String &value, const String &dom = String::emptyString); - void set(const String &key, const char *value, const String &dom = String::emptyString); - void set(const String &key, int value, const String &dom = String::emptyString); - void set(const String &key, bool value, const String &dom = String::emptyString); void registerDefault(const String &key, const String &value); void registerDefault(const String &key, const char *value); void registerDefault(const String &key, int value); void registerDefault(const String &key, bool value); -// ... void flushToDisk(); - void setActiveDomain(const String &domain); - const String & getActiveDomain() const { return _activeDomain; } + void setActiveDomain(const String &domName); + const String & getActiveDomain() const { return _activeDomainName; } -// void addDomain(const String &name); - void removeGameDomain(const String &name); +// void addDomain(const String &domName); + void removeGameDomain(const String &domName); void renameGameDomain(const String &oldName, const String &newName); - bool hasGameDomain(const String &domain) const; + bool hasGameDomain(const String &domName) const; const DomainMap & getGameDomains() const { return _gameDomains; } - + /* TODO: Callback/change notification system typedef void (*ConfigCallback)(const ConstString &key, void *refCon); @@ -140,12 +167,14 @@ private: Domain _transientDomain; DomainMap _gameDomains; - DomainMap _globalDomains; + Domain _appDomain; Domain _defaultsDomain; StringList _domainSaveOrder; - String _activeDomain; + String _activeDomainName; + Domain * _activeDomain; + String _filename; }; |