kodi
GUIDialogKeyboardGeneric.h
1 /*
2  * Copyright (C) 2012-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 "guilib/GUIDialog.h"
12 #include "guilib/GUIKeyboard.h"
13 #include "input/keyboard/KeyboardLayout.h"
14 
15 #include <memory>
16 #include <string>
17 #include <vector>
18 
19 class CGUIFont;
20 
22 
23 enum class KEY_TYPE
24 {
25  CAPS,
26  LOWER,
27  SYMBOLS
28 };
29 
31 {
32  public:
34 
35  //CGUIKeyboard Interface
36  bool ShowAndGetInput(char_callback_t pCallback, const std::string &initialString, std::string &typedString, const std::string &heading, bool bHiddenInput) override;
37  void Cancel() override;
38  int GetWindowId() const override;
39 
40  void SetHeading(const std::string& heading);
41  void SetText(const std::string& text);
42  const std::string &GetText() const;
43  bool IsConfirmed() { return m_bIsConfirmed; }
44  void SetHiddenInput(bool hiddenInput) { m_hiddenInput = hiddenInput; }
45  bool IsInputHidden() const { return m_hiddenInput; }
46 
47  protected:
48  void OnWindowLoaded() override;
49  void OnInitWindow() override;
50  bool OnAction(const CAction &action) override;
51  bool OnMessage(CGUIMessage& message) override;
52  void OnDeinitWindow(int nextWindowID) override;
53  void SetControlLabel(int id, const std::string &label);
54  void OnShift();
55  void MoveCursor(int iAmount);
56  void OnLayout();
57  void OnReveal();
58  void OnSymbols();
59  void OnIPAddress();
60  void OnVoiceRecognition();
61  void OnOK();
62 
63  private:
64  void OnClickButton(int iButtonControl);
65  void UpdateButtons();
66  void Character(const std::string &ch);
67  void Backspace();
68  void SetEditText(const std::string& text);
69  float GetStringWidth(const std::wstring& utf16);
70  void ChangeWordList(int direct); // direct: 0 - first page, 1 - next page, -1 - prev page
71  void ShowWordList(int which); // which: 0 - current page, 1 - next page, -1 -prev page
72  bool CodingCharacter(const std::string &ch);
73  void NormalCharacter(const std::string &ch);
74 
75  bool m_bIsConfirmed;
76  KEY_TYPE m_keyType;
77  bool m_bShift;
78  bool m_hiddenInput;
79  bool m_isKeyboardNavigationMode;
80  int m_previouslyFocusedButton;
81 
82  std::vector<KODI::KEYBOARD::CKeyboardLayout> m_layouts;
83  unsigned int m_currentLayout;
84 
85  std::string m_strHeading;
86  std::string m_text;
87 
88  IInputCodingTablePtr m_codingtable;
89  std::vector<std::wstring> m_words;
90  std::string m_hzcode;
91  int m_pos;
92  int m_num = 0;
93  float m_listwidth;
94  CGUIFont *m_listfont = nullptr;
95  CCriticalSection m_CS;
96 
97  char_callback_t m_pCharCallback;
98 
99  std::shared_ptr<CSpeechRecognitionListener> m_speechRecognitionListener;
100 };
Definition: GUIKeyboard.h:24
Definition: GUIDialogKeyboardGeneric.h:30
Class encapsulating information regarding a particular user action to be sent to windows and controls...
Definition: Action.h:21
Definition: GUIDialog.h:35
Definition: GUIMessage.h:365
Definition: GUIFont.h:110
Definition: GUIDialogKeyboardGeneric.cpp:70