You.i Engine
YiKeyboardInputBridge.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_KEYBOARD_INPUT_BRIDGE_H_
3 #define _YI_KEYBOARD_INPUT_BRIDGE_H_
4 
10 #include "framework/YiPredef.h"
11 #include "signal/YiSignal.h"
12 #include "utility/YiString.h"
13 
28 {
29 public:
40  {
69  };
70 
80  {
86  };
87 
95  class Receiver
96  {
97  public:
98 
102  struct Description
103  {
105  {}
106 
111  };
112 
113  virtual ~Receiver() {}
114 
120  virtual bool OnTextEntered(const CYIString &text, int32_t nCursor) = 0;
125  virtual bool OnTextDeleted(int32_t nBeforeCursor, int32_t nAfterCursor) = 0;
126 
130  virtual void OnTextReplaced(const CYIString &text, int32_t nCursor) = 0;
131 
135  virtual void OnCursorPositionChanged(int32_t nCursor) = 0;
136 
142  virtual bool OnKeyboardHidden() = 0;
143 
149  virtual void OnSynchronizeKeyboard(Description &receiverKeyboardInfo);
150 
156  virtual INPUT_TYPE GetInputType() const;
157 
164 
171  void SetReturnKeyType(RETURN_KEY_TYPE eKeyType);
172 
173  /*
174  \details Triggered when the return key is pressed. The active Receiver is included as a signal parameter.
175  */
177 
183  virtual bool OnSetComposingText(const CYIString &text, int32_t nCursor) = 0;
187  virtual bool OnFinishComposingText() = 0;
191  virtual bool OnSetComposingRegion(int32_t nStart, int32_t nEnd) = 0;
192 
196  virtual bool OnTextPasted(const CYIString &text) = 0;
197 
198  protected:
200 
202  };
203 
205  virtual ~CYIKeyboardInputBridge();
206 
210  void ResetKeyboard(Receiver *pSource);
211 
216  virtual bool ShowKeyboard(Receiver *pSource);
217 
222  virtual bool HideKeyboard();
223 
227  bool IsKeyboardShowing() const;
228 
232  bool IsHardwareKeyboardAvailable() const;
233 
243  void OnTextChanged(const CYIString & text, Receiver *pSource);
253  void OnCursorPositionChanged(int32_t nCursor, Receiver *pSource);
254 
264  void OnCursorPositionWillChange(Receiver *pSource);
265 
270 
277  void ShowSelectionMenu(bool bTextSelected, YI_RECT rect);
278 
282  void HideSelectionMenu();
283 
289 
295 
296 protected:
297  virtual void ResetKeyboardInternal() = 0;
298  virtual bool ShowKeyboardInternal(Receiver *pSource) = 0;
299  virtual bool HideKeyboardInternal() = 0;
300  virtual bool IsKeyboardShowingInternal() const = 0;
301  virtual bool IsHardwareKeyboardAvailableInternal() const = 0;
302  virtual void OnCursorPositionWillChangeInternal() = 0;
303  virtual void OnCursorPositionChangedInternal(int32_t nStart, int32_t nEnd) = 0;
304  virtual void OnTextChangedInternal(const CYIString &rText) = 0;
305  virtual void ShowSelectionMenuInternal(bool bTextSelected, YI_RECT rect) = 0;
306  virtual void HideSelectionMenuInternal() = 0;
307  virtual void OnKeyboardShown();
308  virtual void OnKeyboardHidden();
309 
310 private:
311  Receiver *m_pCurrentReceiver;
312 };
313 
317 {
318  return INPUT_TEXT;
319 }
320 
322 {
323  return m_keyType;
324 }
325 
327 {
328  m_keyType = keyType;
329 }
330 
331 inline bool CYIKeyboardInputBridge::Receiver::OnSetComposingText(const CYIString &pText, int32_t nCursor)
332 {
333  YI_UNUSED(pText);
334  YI_UNUSED(nCursor);
335 
336  return false;
337 }
338 
340 {
341  return false;
342 }
343 
344 inline bool CYIKeyboardInputBridge::Receiver::OnSetComposingRegion(int32_t nStart, int32_t nEnd)
345 {
346  YI_UNUSED(nStart);
347  YI_UNUSED(nEnd);
348 
349  return false;
350 }
351 
352 
353 #endif /* _YI_KEYBOARD_INPUT_METHOD_H_ */
int32_t nCurrentCursorPosition
The position of the cursor in Description::defaultText. Must be greater than or equal to 0 and less t...
Definition: YiKeyboardInputBridge.h:110
virtual bool HideKeyboardInternal()=0
virtual bool OnFinishComposingText()=0
Definition: YiKeyboardInputBridge.h:339
virtual bool OnTextDeleted(int32_t nBeforeCursor, int32_t nAfterCursor)=0
Provides an interface to interact with the system software keyboard.
Definition: YiKeyboardInputBridge.h:95
Definition: YiPredef.h:234
YI_RECT_REL screenRect
The screen space area occupied by the Receiver's visual representation. This is used to position the ...
Definition: YiKeyboardInputBridge.h:109
virtual void ShowSelectionMenuInternal(bool bTextSelected, YI_RECT rect)=0
void OnCursorPositionWillChange(Receiver *pSource)
Container class for Unicode strings. Conceptually, a CYIString object is a sequence of Unicode charac...
Definition: YiString.h:35
virtual bool OnTextPasted(const CYIString &text)=0
virtual void OnCursorPositionChanged(int32_t nCursor)=0
virtual bool OnTextEntered(const CYIString &text, int32_t nCursor)=0
Definition: YiKeyboardInputBridge.h:52
INPUT_TYPE
The preferred input type.
Definition: YiKeyboardInputBridge.h:39
virtual bool IsHardwareKeyboardAvailableInternal() const =0
Definition: YiKeyboardInputBridge.h:56
Definition: YiPredef.h:183
virtual void OnKeyboardShown()
void ResetKeyboard(Receiver *pSource)
void ShowSelectionMenu(bool bTextSelected, YI_RECT rect)
The keyboard will be dismissed when pressed.
Definition: YiKeyboardInputBridge.h:83
The keyboard will be dismissed when pressed.
Definition: YiKeyboardInputBridge.h:85
virtual ~CYIKeyboardInputBridge()
bool IsKeyboardShowing() const
Description()
Definition: YiKeyboardInputBridge.h:104
virtual bool IsKeyboardShowingInternal() const =0
virtual bool ShowKeyboardInternal(Receiver *pSource)=0
virtual void OnTextChangedInternal(const CYIString &rText)=0
virtual INPUT_TYPE GetInputType() const
Definition: YiKeyboardInputBridge.h:316
Definition: YiKeyboardInputBridge.h:48
CYISignal KeyboardHidden
Definition: YiKeyboardInputBridge.h:294
bool IsHardwareKeyboardAvailable() const
virtual void HideSelectionMenuInternal()=0
virtual bool ShowKeyboard(Receiver *pSource)
void OnTextChanged(const CYIString &text, Receiver *pSource)
Provides access to the system software keyboard.
Definition: YiKeyboardInputBridge.h:27
virtual bool HideKeyboard()
Definition: YiKeyboardInputBridge.h:60
The keyboard will be dismissed when pressed.
Definition: YiKeyboardInputBridge.h:82
Definition: YiKeyboardInputBridge.h:44
virtual ~Receiver()
Definition: YiKeyboardInputBridge.h:113
CYISignal KeyboardShown
Definition: YiKeyboardInputBridge.h:288
#define YI_UNUSED(param)
Definition: YiPredef.h:85
CYISignal< CYIKeyboardInputBridge::Receiver * > ReturnKeyPressed
Definition: YiKeyboardInputBridge.h:176
RETURN_KEY_TYPE GetReturnKeyType() const
Definition: YiKeyboardInputBridge.h:321
virtual void ResetKeyboardInternal()=0
CYIString defaultText
The existing text maintained by the Receiver.
Definition: YiKeyboardInputBridge.h:107
RETURN_KEY_TYPE m_keyType
Definition: YiKeyboardInputBridge.h:201
virtual void OnSynchronizeKeyboard(Description &receiverKeyboardInfo)
void SetReturnKeyType(RETURN_KEY_TYPE eKeyType)
Definition: YiKeyboardInputBridge.h:326
Receiver * GetCurrentReceiver()
virtual void OnCursorPositionWillChangeInternal()=0
Display the system&#39;s default return key. The keyboard will be dismissed when pressed.
Definition: YiKeyboardInputBridge.h:81
uint32_t nMaximumCharacterCount
The maxiumum character count.
Definition: YiKeyboardInputBridge.h:108
Provides details to the system software keyboard.
Definition: YiKeyboardInputBridge.h:102
virtual void OnTextReplaced(const CYIString &text, int32_t nCursor)=0
RETURN_KEY_TYPE
The preferred return key type.
Definition: YiKeyboardInputBridge.h:79
Signals and slots are a thread-safe and flexible communication framework that will allow various obje...
Definition: YiSignal.h:164
Definition: YiKeyboardInputBridge.h:68
The system will attempt to activate the next input field. If there is no next field, the keyboard will be dismissed.
Definition: YiKeyboardInputBridge.h:84
virtual bool OnSetComposingRegion(int32_t nStart, int32_t nEnd)=0
Definition: YiKeyboardInputBridge.h:344
Receiver()
Definition: YiKeyboardInputBridge.h:199
virtual void OnCursorPositionChangedInternal(int32_t nStart, int32_t nEnd)=0
virtual bool OnSetComposingText(const CYIString &text, int32_t nCursor)=0
Definition: YiKeyboardInputBridge.h:331