| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- // Copyright (C) 2017 The Qt Company Ltd.
- // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
- import QtQuick
- import QtQuick.VirtualKeyboard
- /*!
- \qmltype InputModeKey
- \inqmlmodule QtQuick.VirtualKeyboard.Components
- \ingroup qmlclass
- \ingroup qtvirtualkeyboard-components-qml
- \ingroup qtvirtualkeyboard-key-types
- \inherits Key
- \since QtQuick.VirtualKeyboard 2.3
- \brief Input mode key for keyboard layouts.
- This key toggles between available \l {QVirtualKeyboardInputEngine::inputModes} {InputEngine.inputModes}.
- */
- Key {
- keyType: QtVirtualKeyboard.KeyType.InputModeKey
- key: Qt.Key_Mode_switch
- noKeyEvent: true
- functionKey: true
- highlighted: true
- text: InputContext.inputEngine.inputMode < inputModeNameList.length ?
- inputModeNameList[InputContext.inputEngine.inputMode] : "ABC"
- onClicked: InputContext.inputEngine.inputMode = __nextInputMode(InputContext.inputEngine.inputMode)
- keyPanelDelegate: keyboard.style ? keyboard.style.symbolKeyPanel : undefined
- enabled: inputModeCount > 1
- /*!
- List of input mode names.
- The default list contains all known input modes for \l {QVirtualKeyboardInputEngine::inputMode} {InputEngine.inputMode}.
- */
- property var inputModeNameList: [
- "ABC", // InputEngine.InputMode.Latin
- "123", // InputEngine.InputMode.Numeric
- "123", // InputEngine.InputMode.Dialable
- "拼音", // InputEngine.InputMode.Pinyin
- "倉頡", // InputEngine.InputMode.Cangjie
- "注音", // InputEngine.InputMode.Zhuyin
- "한글", // InputEngine.InputMode.Hangul
- "かな", // InputEngine.InputMode.Hiragana
- "カナ", // InputEngine.InputMode.Katakana
- "全角", // InputEngine.InputMode.FullwidthLatin
- "ΑΒΓ", // InputEngine.InputMode.Greek
- "АБВ", // InputEngine.InputMode.Cyrillic
- "\u0623\u200C\u0628\u200C\u062C", // InputEngine.InputMode.Arabic
- "\u05D0\u05D1\u05D2", // InputEngine.InputMode.Hebrew
- "中文", // InputEngine.InputMode.ChineseHandwriting
- "日本語", // InputEngine.InputMode.JapaneseHandwriting
- "한국어", // InputEngine.InputMode.KoreanHandwriting
- "กขค", // InputEngine.InputMode.Thai
- "笔画", // InputEngine.InputMode.Stroke
- "ABC", // InputEngine.InputMode.Romaji
- "FLK", // InputEngine.InputMode.HiraganaFlick
- ]
- /*!
- 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) {
- if (!enabled)
- return inputMode
- var inputModeIndex = __inputModes.indexOf(inputMode) + 1
- if (inputModeIndex >= __inputModes.length)
- inputModeIndex = 0
- 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
- }
- }
|