aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJarkko Koivikko <jarkko.koivikko@code-q.fi>2017-08-02 11:06:37 +0300
committerJarkko Koivikko <jarkko.koivikko@code-q.fi>2017-08-04 15:50:56 +0000
commiteb292cddf99b08cc97f404b009d64ea302263390 (patch)
treeb8e371761d58e0e70197b2e64dd032a023e95d20 /src
parenta0b84f2f3f6f5fdfef5efcdf80d3c3fe7a887233 (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.qml45
-rw-r--r--src/virtualkeyboard/content/layouts/ja_JP/main.qml2
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