diff options
Diffstat (limited to 'backends/keymapper/keymap-manager.h')
-rw-r--r-- | backends/keymapper/keymap-manager.h | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/backends/keymapper/keymap-manager.h b/backends/keymapper/keymap-manager.h new file mode 100644 index 0000000000..171da3ac5e --- /dev/null +++ b/backends/keymapper/keymap-manager.h @@ -0,0 +1,97 @@ +/* ScummVM - Graphic Adventure Engine +* +* ScummVM is the legal property of its developers, whose names +* are too numerous to list here. Please refer to the COPYRIGHT +* file distributed with this source distribution. +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +* +* $URL$ +* $Id$ +* +*/ + +#ifndef COMMON_KEYMAP_MANAGER +#define COMMON_KEYMAP_MANAGER + +#include "backends/keymapper/hardware-key.h" +#include "backends/keymapper/keymap.h" +#include "common/hash-str.h" +#include "common/hashmap.h" + +namespace Common { + +class KeymapManager { +public: + + class Domain { + public: + Domain() : _defaultKeymap(0), _configDomain(0) {} + ~Domain() { + deleteAllKeyMaps(); + } + + void setConfigDomain(ConfigManager::Domain *confDom) { + _configDomain = confDom; + } + ConfigManager::Domain *getConfigDomain() { + return _configDomain; + } + + void setDefaultKeymap(Keymap *map); + void addKeymap(const String& name, Keymap *map); + + void deleteAllKeyMaps(); + + Keymap *getDefaultKeymap(); + Keymap *getKeymap(const String& name); + + private: + typedef HashMap<String, Keymap*, + IgnoreCase_Hash, IgnoreCase_EqualTo> KeymapMap; + + ConfigManager::Domain *_configDomain; + Keymap *_defaultKeymap; + KeymapMap _keymaps; + }; + + KeymapManager(); + ~KeymapManager(); + + void registerHardwareKeySet(HardwareKeySet *keys); + + void registerDefaultGlobalKeymap(Keymap *map); + void registerGlobalKeymap(const String& name, Keymap *map); + + void refreshGameDomain(); + void registerDefaultGameKeymap(Keymap *map); + void registerGameKeymap(const String& name, Keymap *map); + + Keymap *getKeymap(const String& name); + +private: + + void initKeymap(ConfigManager::Domain *domain, const String& name, Keymap *keymap); + void automaticMap(Keymap *map); + + Domain _globalDomain; + Domain _gameDomain; + + HardwareKeySet *_hardwareKeys; +}; + +} // end of namespace Common + +#endif |