aboutsummaryrefslogtreecommitdiff
path: root/common/config-manager.h
diff options
context:
space:
mode:
authorMax Horn2006-04-15 13:12:03 +0000
committerMax Horn2006-04-15 13:12:03 +0000
commit3628629007e4b97b7b634d0545e3acd474c7708b (patch)
tree4c357399bf7bb1ea4fbea8faa91fc631b2ef5847 /common/config-manager.h
parent2f024e270199d5fc2d38d62150b689a1fdca0b1d (diff)
downloadscummvm-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.h67
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;
};