2008-07-19 00:57:37 +00:00
|
|
|
#include "backends/common/keymap-manager.h"
|
|
|
|
|
|
|
|
namespace Common {
|
|
|
|
|
2008-07-21 00:11:25 +00:00
|
|
|
|
2008-07-21 15:55:25 +00:00
|
|
|
void KeymapManager::Domain::addDefaultKeymap(Keymap *map) {
|
|
|
|
_defaultKeymap = map;
|
2008-07-21 00:11:25 +00:00
|
|
|
}
|
|
|
|
|
2008-07-21 15:55:25 +00:00
|
|
|
void KeymapManager::Domain::addKeymap(const String& name, Keymap *map) {
|
|
|
|
if (_keymaps.contains(name))
|
|
|
|
delete _keymaps[name];
|
|
|
|
_keymaps[name] = map;
|
2008-07-19 00:57:37 +00:00
|
|
|
}
|
|
|
|
|
2008-07-21 15:55:25 +00:00
|
|
|
void KeymapManager::Domain::deleteAllKeyMaps() {
|
|
|
|
KeymapMap::iterator it;
|
|
|
|
for (it = _keymaps.begin(); it != _keymaps.end(); it++)
|
|
|
|
delete it->_value;
|
|
|
|
_keymaps.clear();
|
2008-07-19 00:57:37 +00:00
|
|
|
}
|
|
|
|
|
2008-07-21 15:55:25 +00:00
|
|
|
Keymap *KeymapManager::Domain::getDefaultKeymap() {
|
|
|
|
return _defaultKeymap;
|
2008-07-20 15:42:52 +00:00
|
|
|
}
|
|
|
|
|
2008-07-21 15:55:25 +00:00
|
|
|
Keymap *KeymapManager::Domain::getKeymap(const String& name) {
|
|
|
|
KeymapMap::iterator it = _keymaps.find(name);
|
|
|
|
if (it != _keymaps.end())
|
|
|
|
return it->_value;
|
|
|
|
else
|
|
|
|
return 0;
|
2008-07-20 15:42:52 +00:00
|
|
|
}
|
|
|
|
|
2008-07-21 15:55:25 +00:00
|
|
|
|
|
|
|
void KeymapManager::registerDefaultGlobalKeymap(Keymap *map) {
|
2008-07-23 08:45:12 +00:00
|
|
|
ConfigManager::Domain *dom = ConfMan.getDomain(ConfigManager::kApplicationDomain);
|
|
|
|
assert(dom);
|
|
|
|
initKeymap(dom, "default", map);
|
2008-07-21 15:55:25 +00:00
|
|
|
_globalDomain.addDefaultKeymap(map);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KeymapManager::registerGlobalKeymap(const String& name, Keymap *map) {
|
2008-07-23 08:45:12 +00:00
|
|
|
ConfigManager::Domain *dom = ConfMan.getDomain(ConfigManager::kApplicationDomain);
|
|
|
|
assert(dom);
|
|
|
|
|
|
|
|
initKeymap(dom, name, map);
|
2008-07-21 15:55:25 +00:00
|
|
|
_globalDomain.addKeymap(name, map);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KeymapManager::registerDefaultGameKeymap(Keymap *map) {
|
2008-07-23 08:45:12 +00:00
|
|
|
ConfigManager::Domain *dom = ConfMan.getActiveDomain();
|
|
|
|
assert(dom);
|
|
|
|
|
|
|
|
initKeymap(dom, "default", map);
|
2008-07-21 15:55:25 +00:00
|
|
|
_gameDomain.addDefaultKeymap(map);
|
|
|
|
}
|
|
|
|
|
|
|
|
void KeymapManager::registerGameKeymap(const String& name, Keymap *map) {
|
2008-07-23 08:45:12 +00:00
|
|
|
ConfigManager::Domain *dom = ConfMan.getActiveDomain();
|
|
|
|
assert(dom);
|
|
|
|
|
|
|
|
initKeymap(dom, name, map);
|
2008-07-21 15:55:25 +00:00
|
|
|
_gameDomain.addKeymap(name, map);
|
2008-07-20 15:42:52 +00:00
|
|
|
}
|
|
|
|
|
2008-07-23 08:45:12 +00:00
|
|
|
void KeymapManager::initKeymap(ConfigManager::Domain *domain,
|
|
|
|
const String& name,
|
|
|
|
Keymap *map) {
|
|
|
|
if (!loadKeymap(domain, name, map))
|
|
|
|
return;
|
|
|
|
automaticMap(map);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool KeymapManager::loadKeymap(ConfigManager::Domain *domain,
|
|
|
|
const String& name,
|
|
|
|
Keymap *map) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
void KeymapManager::saveKeymap(ConfigManager::Domain *domain,
|
|
|
|
const String& name,
|
|
|
|
Keymap *map) {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void KeymapManager::automaticMap(Keymap *map) {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2008-07-21 15:55:25 +00:00
|
|
|
void KeymapManager::unregisterAllGameKeymaps() {
|
|
|
|
_gameDomain.deleteAllKeyMaps();
|
2008-07-20 15:42:52 +00:00
|
|
|
}
|
|
|
|
|
2008-07-21 15:55:25 +00:00
|
|
|
Keymap *KeymapManager::getKeymap(const String& name) {
|
|
|
|
Keymap *keymap = _gameDomain.getKeymap(name);
|
|
|
|
if (!keymap)
|
|
|
|
_globalDomain.getKeymap(name);
|
|
|
|
return keymap;
|
2008-07-19 00:57:37 +00:00
|
|
|
}
|
2008-07-21 15:55:25 +00:00
|
|
|
|
2008-07-19 00:57:37 +00:00
|
|
|
} // end of namespace Common
|