diff options
Diffstat (limited to 'xbmc/input/WindowTranslator.h')
-rw-r--r-- | xbmc/input/WindowTranslator.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/xbmc/input/WindowTranslator.h b/xbmc/input/WindowTranslator.h new file mode 100644 index 0000000..9d99c15 --- /dev/null +++ b/xbmc/input/WindowTranslator.h @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2017-2018 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#pragma once + +#include <set> +#include <string> +#include <vector> + +class CWindowTranslator +{ +public: + /*! + * \brief Get a list of all known window names + */ + static void GetWindows(std::vector<std::string>& windowList); + + /*! + * \brief Translate between a window name and its ID + * \param window The name of the window + * \return ID of the window, or WINDOW_INVALID if not found + */ + static int TranslateWindow(const std::string& window); + + /*! + * \brief Translate between a window id and it's name + * \param window id of the window + * \return name of the window, or an empty string if not found + */ + static std::string TranslateWindow(int windowId); + + /*! + * \brief Get the window ID that should be used as fallback for keymap input + * \return The fallback window, or -1 for no fallback window + */ + static int GetFallbackWindow(int windowId); + + /*! + * \brief Get the special window ID if conditions met + * \return The special window ID or the given window ID + */ + static int GetVirtualWindow(int windowId); + +private: + struct WindowMapItem + { + const char* windowName; + int windowId; + }; + + struct WindowNameCompare + { + bool operator()(const WindowMapItem& lhs, const WindowMapItem& rhs) const; + }; + + struct WindowIDCompare + { + bool operator()(const WindowMapItem& lhs, const WindowMapItem& rhs) const; + }; + + using WindowMapByName = std::set<WindowMapItem, WindowNameCompare>; + using WindowMapByID = std::set<WindowMapItem, WindowIDCompare>; + + static WindowMapByID CreateWindowMappingByID(); + + static const WindowMapByName WindowMappingByName; +}; |