aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJarkko Koivikko <jarkko.koivikko@code-q.fi>2015-08-13 17:07:51 +0300
committerJarkko Koivikko <jarkko.koivikko@code-q.fi>2015-10-07 15:17:12 +0000
commite5f0d1ea6aeb0a6a0cb5afb20a39da02527b33a4 (patch)
tree0290e1f5af7dcac7f11869d166f9a34c22ac0104 /tests
parent7ef969cb6d7b6b4ae56f22da5ee97dd735c76244 (diff)
Add a new API to change the keyboard language
This change adds three new properties for VirtualKeyboardSettings. - locale: Defines the default locale, can also be used to change the current language. - availableLocales: A list of built-in locales. - activeLocales: Application defined list of active locales. Task-number: QTRD-3332 Change-Id: Ia9e69f54501ec7ad7680a6167546b52d0972e2dc Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/inputpanel/data/inputpanel/inputpanel.qml31
-rw-r--r--tests/auto/inputpanel/data/tst_inputpanel.qml40
2 files changed, 50 insertions, 21 deletions
diff --git a/tests/auto/inputpanel/data/inputpanel/inputpanel.qml b/tests/auto/inputpanel/data/inputpanel/inputpanel.qml
index df00f102..70f8214b 100644
--- a/tests/auto/inputpanel/data/inputpanel/inputpanel.qml
+++ b/tests/auto/inputpanel/data/inputpanel/inputpanel.qml
@@ -19,7 +19,7 @@
import QtTest 1.0
import QtQuick 2.0
import QtQuick.Enterprise.VirtualKeyboard 2.0
-import QtQuick.Enterprise.VirtualKeyboard.Settings 1.2
+import QtQuick.Enterprise.VirtualKeyboard.Settings 2.0
import "handwriting.js" as Handwriting
import "utils.js" as Utils
@@ -35,7 +35,10 @@ InputPanel {
property var virtualKeyPressPoint: null
readonly property bool autoCapitalizationEnabled: InputContext.shiftHandler.autoCapitalizationEnabled
readonly property bool toggleShiftEnabled: InputContext.shiftHandler.toggleShiftEnabled
- readonly property string locale: InputContext.locale
+ readonly property string locale: keyboard.locale
+ readonly property string defaultLocale: VirtualKeyboardSettings.locale
+ readonly property var availableLocales: VirtualKeyboardSettings.availableLocales
+ readonly property var activeLocales: VirtualKeyboardSettings.activeLocales
readonly property int inputMode: InputContext.inputEngine.inputMode
readonly property var keyboard: Utils.findChildByProperty(inputPanel, "objectName", "keyboard", null)
readonly property bool handwritingMode: keyboard.handwritingMode
@@ -160,27 +163,17 @@ InputPanel {
}
function isLocaleSupported(inputLocale) {
- var localeIndex = keyboard.findLocale(inputLocale, -1)
+ var localeIndex = VirtualKeyboardSettings.availableLocales.indexOf(inputLocale)
return localeIndex !== -1
}
function setLocale(inputLocale) {
- var localeIndex = keyboard.findLocale(inputLocale, -1)
- if (localeIndex === -1)
- return false
- var origLocaleIndex = keyboard.localeIndex
- if (keyboard.localeIndex !== localeIndex) {
- keyboard.localeIndex = localeIndex
- keyboardLayoutLoaderItemSpy.wait()
- }
- var success = keyboardLayoutLoader.item !== null
- if (keyboardLayoutLoader.item === null) {
- if (keyboard.localeIndex !== origLocaleIndex) {
- keyboard.localeIndex = origLocaleIndex
- keyboardLayoutLoaderItemSpy.wait()
- }
- }
- return success
+ VirtualKeyboardSettings.locale = inputLocale
+ return Qt.inputMethod.locale.name.substring(0, 2) === inputLocale.substring(0, 2)
+ }
+
+ function setActiveLocales(activeLocales) {
+ VirtualKeyboardSettings.activeLocales = activeLocales
}
function mapInputMode(inputModeName) {
diff --git a/tests/auto/inputpanel/data/tst_inputpanel.qml b/tests/auto/inputpanel/data/tst_inputpanel.qml
index a47282b9..81033fa0 100644
--- a/tests/auto/inputpanel/data/tst_inputpanel.qml
+++ b/tests/auto/inputpanel/data/tst_inputpanel.qml
@@ -81,10 +81,12 @@ Rectangle {
handwritingInputPanel.available = false
textInput.forceActiveFocus()
inputPanel.setHandwritingMode(false)
+ var activeLocales = data !== undefined && data.hasOwnProperty("activeLocales") ? data.activeLocales : []
+ inputPanel.setActiveLocales(activeLocales)
var locale = data !== undefined && data.hasOwnProperty("initLocale") ? data.initLocale : "en_GB"
if (!inputPanel.isLocaleSupported(locale))
- expectFail("", "Input locale not enabled")
- var localeChanged = inputPanel.locale !== locale
+ expectFail("", "Input locale not available (%1)".arg(locale))
+ var localeChanged = Qt.inputMethod.locale.name !== locale
verify(inputPanel.setLocale(locale))
if (localeChanged && !(textInput.inputMethodHints & Qt.ImhNoPredictiveText))
wait(300)
@@ -137,6 +139,12 @@ Rectangle {
{ qml: "import QtQuick 2.0; \
import QtQuick.Enterprise.VirtualKeyboard.Settings 1.2; \
Item { property var styleName: VirtualKeyboardSettings.styleName }" },
+ { qml: "import QtQuick 2.0; \
+ import QtQuick.Enterprise.VirtualKeyboard.Settings 2.0; \
+ Item { property var styleName: VirtualKeyboardSettings.styleName; \
+ property var locale: VirtualKeyboardSettings.locale; \
+ property var availableLocales: VirtualKeyboardSettings.availableLocales; \
+ property var availableLocales: VirtualKeyboardSettings.activeLocales }" },
]
}
@@ -917,5 +925,33 @@ Rectangle {
Qt.inputMethod.commit()
compare(textInput.text, data.outputText)
}
+
+ function test_availableLocales() {
+ verify(inputPanel.availableLocales.length > 0)
+ }
+
+ function test_activeLocales_data() {
+ return [
+ { activeLocales: ["invalid"], expectedLocale: "en_GB" },
+ { activeLocales: ["fi_FI"], initLocale: "fi_FI" },
+ { activeLocales: ["en_GB"], initLocale: "en_GB" },
+ { activeLocales: ["en_GB", "fi_FI", "ar_AR"] },
+ ]
+ }
+
+ function test_activeLocales(data) {
+ prepareTest(data)
+ for (var i = 0; i < inputPanel.availableLocales.length; i++) {
+ var locale = inputPanel.availableLocales[i]
+ var expectedResult
+ if (data.hasOwnProperty("expectedLocale"))
+ expectedResult = locale === data.expectedLocale
+ else
+ expectedResult = (inputPanel.activeLocales.length === 0 || inputPanel.activeLocales.indexOf(locale) !== -1) && inputPanel.availableLocales.indexOf(locale) !== -1
+ inputPanel.setLocale(locale)
+ waitForRendering(inputPanel)
+ compare(inputPanel.locale === locale, expectedResult, "Test locale %1".arg(locale))
+ }
+ }
}
}