diff options
author | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2017-08-02 11:06:37 +0300 |
---|---|---|
committer | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2017-08-04 15:50:56 +0000 |
commit | eb292cddf99b08cc97f404b009d64ea302263390 (patch) | |
tree | b8e371761d58e0e70197b2e64dd032a023e95d20 /src | |
parent | a0b84f2f3f6f5fdfef5efcdf80d3c3fe7a887233 (diff) |
Add new features to InputModeKey
New property InputModeKey::inputModes:
This property allows to define a custom list of input modes to
toggle. If the list contains an invalid input modes (the ones
not included in the available input modes) they are automatically
disabled. The default list contains all the available input modes.
New property InputModeKey::inputModeCount:
This read-only property reflects the actual number of input modes
the user can cycle through this key.
Change-Id: I6be118565dc3d799074aa4159f1b0eec802ce591
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/virtualkeyboard/content/components/InputModeKey.qml | 45 | ||||
-rw-r--r-- | src/virtualkeyboard/content/layouts/ja_JP/main.qml | 2 |
2 files changed, 40 insertions, 7 deletions
diff --git a/src/virtualkeyboard/content/components/InputModeKey.qml b/src/virtualkeyboard/content/components/InputModeKey.qml index dc4c8266..8303efe1 100644 --- a/src/virtualkeyboard/content/components/InputModeKey.qml +++ b/src/virtualkeyboard/content/components/InputModeKey.qml @@ -50,7 +50,7 @@ Key { inputModeNameList[InputContext.inputEngine.inputMode] : "ABC" onClicked: InputContext.inputEngine.inputMode = __nextInputMode(InputContext.inputEngine.inputMode) keyPanelDelegate: keyboard.style ? keyboard.style.symbolKeyPanel : undefined - enabled: InputContext.inputEngine.inputModes.length > 1 + enabled: inputModeCount > 1 /*! List of input mode names. @@ -73,13 +73,46 @@ Key { "한국어", // InputEngine.KoreanHandwriting ] + /*! + List of input modes to toggle. + + This property allows to define a custom list of input modes to + toggle. + + The default list contains all the available input modes. + */ + property var inputModes: InputContext.inputEngine.inputModes + + /*! + This read-only property reflects the actual number of input modes + the user can cycle through this key. + */ + readonly property int inputModeCount: __inputModes !== undefined ? __inputModes.length : 0 + + property var __inputModes: __filterInputModes([].concat(InputContext.inputEngine.inputModes), inputModes) + + onInputModesChanged: { + // Check that the current input mode is included in our list + if (keyboard.active && InputContext.inputEngine.inputMode !== -1 && + __inputModes !== undefined && __inputModes.length > 0 && + __inputModes.indexOf(InputContext.inputEngine.inputMode) === -1) + InputContext.inputEngine.inputMode = __inputModes[0] + } + function __nextInputMode(inputMode) { - var inputModes = InputContext.inputEngine.inputModes - if (inputModes.length < 2) + if (!enabled) return inputMode - var inputModeIndex = inputModes.indexOf(inputMode) + 1 - if (inputModeIndex >= inputModes.length) + var inputModeIndex = __inputModes.indexOf(inputMode) + 1 + if (inputModeIndex >= __inputModes.length) inputModeIndex = 0 - return inputModes[inputModeIndex] + return __inputModes[inputModeIndex] + } + + function __filterInputModes(inputModes, filter) { + for (var i = 0; i < inputModes.length; i++) { + if (filter.indexOf(inputModes[i]) === -1) + inputModes.splice(i, 1) + } + return inputModes } } diff --git a/src/virtualkeyboard/content/layouts/ja_JP/main.qml b/src/virtualkeyboard/content/layouts/ja_JP/main.qml index 06d8fd0b..2d765d36 100644 --- a/src/virtualkeyboard/content/layouts/ja_JP/main.qml +++ b/src/virtualkeyboard/content/layouts/ja_JP/main.qml @@ -130,7 +130,7 @@ KeyboardLayoutLoader { KeyboardRow { keyWeight: 156 InputModeKey { - enabled: !(InputContext.inputMethodHints & Qt.ImhLatinOnly) + enabled: !(InputContext.inputMethodHints & Qt.ImhLatinOnly) && inputModeCount > 1 inputModeNameList: [ "半角", // InputEngine.Latin "", // InputEngine.Numeric |