diff options
Diffstat (limited to 'backends/common/keymap-manager.h')
-rw-r--r-- | backends/common/keymap-manager.h | 45 |
1 files changed, 29 insertions, 16 deletions
diff --git a/backends/common/keymap-manager.h b/backends/common/keymap-manager.h index d9c97d7de1..e5152d2426 100644 --- a/backends/common/keymap-manager.h +++ b/backends/common/keymap-manager.h @@ -2,35 +2,48 @@ #define COMMON_KEYMAP_MANAGER #include "backends/common/keymap.h" -#include "common/list.h" +#include "common/hash-str.h" +#include "common/hashmap.h" namespace Common { class KeymapManager { public: - KeymapManager(); + class Domain { + public: + Domain() : _defaultKeymap(0) {} - bool registerSuperGlobalKeymap(const Keymap& map); - bool registerGlobalKeymap(const String& name, const Keymap& map); - bool registerKeymap(const String& name, const String& domain, const Keymap& map); + void addDefaultKeymap(Keymap *map); + void addKeymap(const String& name, Keymap *map); - bool unregisterSuperGlobalKeymap(); - bool unregisterGlobalKeymap(const String& name); - bool unregisterKeymap(const String& name, const String& domain); + void deleteAllKeyMaps(); -private: + Keymap *getDefaultKeymap(); + Keymap *getKeymap(const String& name); + + private: + typedef HashMap<String, Keymap*, + IgnoreCase_Hash, IgnoreCase_EqualTo> KeymapMap; - struct Entry { - String _name; - String _domain; - Keymap *_keymap; + Keymap *_defaultKeymap; + KeymapMap _keymaps; }; - typedef List<Entry*>::iterator Iterator; - Iterator findEntry(const String& name, const String& domain); + void registerDefaultGlobalKeymap(Keymap *map); + void registerGlobalKeymap(const String& name, Keymap *map); + + void registerDefaultGameKeymap(Keymap *map); + void registerGameKeymap(const String& name, Keymap *map); + + void unregisterAllGameKeymaps(); + + Keymap *KeymapManager::getKeymap(const String& name); + +private: - List<Entry*> _keymaps; + Domain _globalDomain; + Domain _gameDomain; }; } // end of namespace Common |