diff options
author | Eugene Sandulenko | 2009-05-10 17:33:31 +0000 |
---|---|---|
committer | Eugene Sandulenko | 2009-05-10 17:33:31 +0000 |
commit | 7d79a092b5982c87ac889fb71c6e3b2a2e2bae35 (patch) | |
tree | 616772eaa8dd1f2e48540fa8c019803cfe1760cc /common | |
parent | 978758190e0cf09f65d3e7737d49bd4e518b59ca (diff) | |
download | scummvm-rg350-7d79a092b5982c87ac889fb71c6e3b2a2e2bae35.tar.gz scummvm-rg350-7d79a092b5982c87ac889fb71c6e3b2a2e2bae35.tar.bz2 scummvm-rg350-7d79a092b5982c87ac889fb71c6e3b2a2e2bae35.zip |
Store global keymaps into a separate section
svn-id: r40427
Diffstat (limited to 'common')
-rw-r--r-- | common/config-manager.cpp | 36 | ||||
-rw-r--r-- | common/config-manager.h | 16 |
2 files changed, 52 insertions, 0 deletions
diff --git a/common/config-manager.cpp b/common/config-manager.cpp index d32919185f..f001c1821a 100644 --- a/common/config-manager.cpp +++ b/common/config-manager.cpp @@ -45,11 +45,19 @@ namespace Common { const String ConfigManager::kApplicationDomain("scummvm"); const String ConfigManager::kTransientDomain("__TRANSIENT"); +#ifdef ENABLE_KEYMAPPER +const String ConfigManager::kKeymapperDomain("keymapper"); +#endif + #else const char *ConfigManager::kApplicationDomain = "scummvm"; const char *ConfigManager::kTransientDomain = "__TRANSIENT"; +#ifdef ENABLE_KEYMAPPER +const char *ConfigManager::kKeymapperDomain = "keymapper"; +#endif + #endif #pragma mark - @@ -99,6 +107,10 @@ void ConfigManager::loadFromStream(SeekableReadStream &stream) { _transientDomain.clear(); _domainSaveOrder.clear(); +#ifdef ENABLE_KEYMAPPER + _keymapperDomain.clear(); +#endif + // TODO: Detect if a domain occurs multiple times (or likewise, if // a key occurs multiple times inside one domain). @@ -135,6 +147,10 @@ void ConfigManager::loadFromStream(SeekableReadStream &stream) { // Store domain comment if (domain == kApplicationDomain) { _appDomain.setDomainComment(comment); +#ifdef ENABLE_KEYMAPPER + } else if (domain == kKeymapperDomain) { + _keymapperDomain.setDomainComment(comment); +#endif } else { _gameDomains[domain].setDomainComment(comment); } @@ -177,6 +193,10 @@ void ConfigManager::loadFromStream(SeekableReadStream &stream) { // Store comment if (domain == kApplicationDomain) { _appDomain.setKVComment(key, comment); +#ifdef ENABLE_KEYMAPPER + } else if (domain == kKeymapperDomain) { + _keymapperDomain.setKVComment(key, comment); +#endif } else { _gameDomains[domain].setKVComment(key, comment); } @@ -215,6 +235,10 @@ void ConfigManager::flushToDisk() { for (i = _domainSaveOrder.begin(); i != _domainSaveOrder.end(); ++i) { if (kApplicationDomain == *i) { writeDomain(*stream, *i, _appDomain); +#ifdef ENABLE_KEYMAPPER + } else if (kKeymapperDomain == *i) { + writeDomain(*stream, *i, _keymapperDomain); +#endif } else if (_gameDomains.contains(*i)) { writeDomain(*stream, *i, _gameDomains[*i]); } @@ -226,6 +250,10 @@ void ConfigManager::flushToDisk() { // Now write the domains which haven't been written yet if (find(_domainSaveOrder.begin(), _domainSaveOrder.end(), kApplicationDomain) == _domainSaveOrder.end()) writeDomain(*stream, kApplicationDomain, _appDomain); +#ifdef ENABLE_KEYMAPPER + if (find(_domainSaveOrder.begin(), _domainSaveOrder.end(), kKeymapperDomain) == _domainSaveOrder.end()) + writeDomain(*stream, kKeymapperDomain, _keymapperDomain); +#endif for (d = _gameDomains.begin(); d != _gameDomains.end(); ++d) { if (find(_domainSaveOrder.begin(), _domainSaveOrder.end(), d->_key) == _domainSaveOrder.end()) writeDomain(*stream, d->_key, d->_value); @@ -290,6 +318,10 @@ const ConfigManager::Domain *ConfigManager::getDomain(const String &domName) con return &_transientDomain; if (domName == kApplicationDomain) return &_appDomain; +#ifdef ENABLE_KEYMAPPER + if (domName == kKeymapperDomain) + return &_keymapperDomain; +#endif if (_gameDomains.contains(domName)) return &_gameDomains[domName]; @@ -304,6 +336,10 @@ ConfigManager::Domain *ConfigManager::getDomain(const String &domName) { return &_transientDomain; if (domName == kApplicationDomain) return &_appDomain; +#ifdef ENABLE_KEYMAPPER + if (domName == kKeymapperDomain) + return &_keymapperDomain; +#endif if (_gameDomains.contains(domName)) return &_gameDomains[domName]; diff --git a/common/config-manager.h b/common/config-manager.h index 9e5b88a073..d86431be2f 100644 --- a/common/config-manager.h +++ b/common/config-manager.h @@ -74,11 +74,23 @@ public: /** The transient (pseudo) domain. */ static const String kTransientDomain; + +#ifdef ENABLE_KEYMAPPER + /** The name of keymapper domain used to store the key maps */ + static const String kKeymapperDomain; +#endif + #else static const char *kApplicationDomain; static const char *kTransientDomain; const String _emptyString; + +#ifdef ENABLE_KEYMAPPER + /** The name of keymapper domain used to store the key maps */ + static const char *kKeymapperDomain; +#endif + #endif void loadDefaultConfigFile(); @@ -156,6 +168,10 @@ private: Domain _appDomain; Domain _defaultsDomain; +#ifdef ENABLE_KEYMAPPER + Domain _keymapperDomain; +#endif + StringList _domainSaveOrder; String _activeDomainName; |