/ src / MappedInputManager.cpp
MappedInputManager.cpp
 1  #include "MappedInputManager.h"
 2  
 3  #include "ThemeManager.h"
 4  #include "core/SignalOSSettings.h"
 5  
 6  decltype(InputManager::BTN_BACK) MappedInputManager::mapButton(const Button button) const {
 7    const auto frontLayout = static_cast<FrontButtonLayout>(THEME.frontButtonLayout);
 8    const auto sideLayout = settings_ ? static_cast<signalos::Settings::SideButtonLayout>(settings_->sideButtonLayout)
 9                                      : signalos::Settings::PrevNext;
10  
11    switch (button) {
12      case Button::Back:
13        switch (frontLayout) {
14          case FRONT_LRBC:
15            return InputManager::BTN_LEFT;
16          case FRONT_BCLR:
17          default:
18            return InputManager::BTN_BACK;
19        }
20      case Button::Confirm:
21        switch (frontLayout) {
22          case FRONT_LRBC:
23            return InputManager::BTN_RIGHT;
24          case FRONT_BCLR:
25          default:
26            return InputManager::BTN_CONFIRM;
27        }
28      case Button::Left:
29        switch (frontLayout) {
30          case FRONT_LRBC:
31            return InputManager::BTN_BACK;
32          case FRONT_BCLR:
33          default:
34            return InputManager::BTN_LEFT;
35        }
36      case Button::Right:
37        switch (frontLayout) {
38          case FRONT_LRBC:
39            return InputManager::BTN_CONFIRM;
40          case FRONT_BCLR:
41          default:
42            return InputManager::BTN_RIGHT;
43        }
44      case Button::Up:
45        return InputManager::BTN_UP;
46      case Button::Down:
47        return InputManager::BTN_DOWN;
48      case Button::Power:
49        return InputManager::BTN_POWER;
50      case Button::PageBack:
51        switch (sideLayout) {
52          case signalos::Settings::NextPrev:
53            return InputManager::BTN_DOWN;
54          case signalos::Settings::PrevNext:
55          default:
56            return InputManager::BTN_UP;
57        }
58      case Button::PageForward:
59        switch (sideLayout) {
60          case signalos::Settings::NextPrev:
61            return InputManager::BTN_UP;
62          case signalos::Settings::PrevNext:
63          default:
64            return InputManager::BTN_DOWN;
65        }
66    }
67  
68    return InputManager::BTN_BACK;
69  }
70  
71  bool MappedInputManager::wasPressed(const Button button) const { return inputManager.wasPressed(mapButton(button)); }
72  
73  bool MappedInputManager::wasReleased(const Button button) const { return inputManager.wasReleased(mapButton(button)); }
74  
75  bool MappedInputManager::isPressed(const Button button) const { return inputManager.isPressed(mapButton(button)); }
76  
77  bool MappedInputManager::wasAnyPressed() const { return inputManager.wasAnyPressed(); }
78  
79  bool MappedInputManager::wasAnyReleased() const { return inputManager.wasAnyReleased(); }
80  
81  unsigned long MappedInputManager::getHeldTime() const { return inputManager.getHeldTime(); }
82  
83  MappedInputManager::Labels MappedInputManager::mapLabels(const char* back, const char* confirm, const char* previous,
84                                                           const char* next) const {
85    const auto layout = static_cast<FrontButtonLayout>(THEME.frontButtonLayout);
86  
87    switch (layout) {
88      case FRONT_LRBC:
89        return {previous, next, back, confirm};
90      case FRONT_BCLR:
91      default:
92        return {back, confirm, previous, next};
93    }
94  }