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