diff options
author | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2015-08-13 17:07:51 +0300 |
---|---|---|
committer | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2015-10-07 15:17:12 +0000 |
commit | e5f0d1ea6aeb0a6a0cb5afb20a39da02527b33a4 (patch) | |
tree | 0290e1f5af7dcac7f11869d166f9a34c22ac0104 /tests | |
parent | 7ef969cb6d7b6b4ae56f22da5ee97dd735c76244 (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.qml | 31 | ||||
-rw-r--r-- | tests/auto/inputpanel/data/tst_inputpanel.qml | 40 |
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)) + } + } } } |