xbmc
GUIDialogAxisDetection.h
1 /*
2  * Copyright (C) 2017-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "GUIDialogButtonCapture.h"
12 
13 #include <string>
14 #include <utility>
15 #include <vector>
16 
17 namespace KODI
18 {
19 namespace GAME
20 {
25 {
26 public:
27  CGUIDialogAxisDetection() = default;
28 
29  ~CGUIDialogAxisDetection() override = default;
30 
31  // specialization of IButtonMapper via CGUIDialogButtonCapture
32  bool AcceptsPrimitive(JOYSTICK::PRIMITIVE_TYPE type) const override;
33  void OnLateAxis(const JOYSTICK::IButtonMap* buttonMap, unsigned int axisIndex) override;
34 
35 protected:
36  // implementation of CGUIDialogButtonCapture
37  std::string GetDialogText() override;
38  std::string GetDialogHeader() override;
39  bool MapPrimitiveInternal(JOYSTICK::IButtonMap* buttonMap,
40  IKeymap* keymap,
41  const JOYSTICK::CDriverPrimitive& primitive) override;
42  void OnClose(bool bAccepted) override {}
43 
44 private:
45  void AddAxis(const std::string& deviceLocation, unsigned int axisIndex);
46 
47  // Axis types
48  using DeviceName = std::string;
49  using AxisIndex = unsigned int;
50  using AxisEntry = std::pair<DeviceName, AxisIndex>;
51  using AxisVector = std::vector<AxisEntry>;
52 
53  // Axis detection
54  AxisVector m_detectedAxes;
55 };
56 } // namespace GAME
57 } // namespace KODI
Definition: GUIDialogButtonCapture.h:26
Interface for mapping buttons to Kodi actions.
Definition: IKeymap.h:22
Button map interface to translate between the driver&#39;s raw button/hat/axis elements and physical joys...
Definition: IButtonMap.h:28
bool AcceptsPrimitive(JOYSTICK::PRIMITIVE_TYPE type) const override
Return true if the button mapper accepts primitives of the given type.
Definition: GUIDialogAxisDetection.cpp:53
PRIMITIVE_TYPE
Type of driver primitive.
Definition: JoystickTypes.h:150
Definition: AudioDecoder.h:18
Definition: GUIDialogAxisDetection.h:24
Basic driver element associated with input events.
Definition: DriverPrimitive.h:69
void OnLateAxis(const JOYSTICK::IButtonMap *buttonMap, unsigned int axisIndex) override
Called when an axis has been detected after mapping began.
Definition: GUIDialogAxisDetection.cpp:66