aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/BaseKey.qml
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/BaseKey.qml')
-rw-r--r--src/components/BaseKey.qml234
1 files changed, 234 insertions, 0 deletions
diff --git a/src/components/BaseKey.qml b/src/components/BaseKey.qml
new file mode 100644
index 00000000..1fb2dff4
--- /dev/null
+++ b/src/components/BaseKey.qml
@@ -0,0 +1,234 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+import QtQuick
+import QtQuick.Layouts
+import QtQuick.VirtualKeyboard
+
+/*!
+ \qmltype BaseKey
+ \inqmlmodule QtQuick.VirtualKeyboard.Components
+ \ingroup qmlclass
+ \ingroup qtvirtualkeyboard-components-qml
+ \inherits Item
+
+ \brief Common parent for all key types.
+
+ BaseKey is a common type for all keys in keyboard layout.
+
+ This type should not be used directly in the layouts. The specialized
+ key types, such as Key or EnterKey should be used instead.
+*/
+
+Item {
+ id: keyItem
+
+ /*! \since QtQuick.VirtualKeyboard 6.1
+
+ \l Key type for the specialized key. Possible values are defined by the
+ {QtVirtualKeyboard::KeyType}{key type enumeration}.
+
+ For example, \l SpaceKey sets this value to \e QtVirtualKeyboard.KeyType.SpaceKey.
+ */
+ property int keyType: QtVirtualKeyboard.KeyType.BaseKey
+
+ /*! Sets the key weight value which determines the relative size of the key.
+
+ Use this property to change the key size in the layout.
+
+ The default value is inherited from the parent element
+ of the key in the layout hierarchy.
+ */
+ property real weight: parent.keyWeight
+
+ /*! Sets the key text for input method processing.
+
+ In most cases, this is the Unicode representation of the key code.
+
+ The default value is an empty string.
+ */
+ property string text: ""
+
+ /*! Sets the display text.
+
+ This string is rendered in the keyboard layout.
+
+ The default value is the key text.
+ */
+ property string displayText: text
+
+ /*! \since QtQuick.VirtualKeyboard 2.0
+
+ Sets the small text rendered in the corner of the key.
+
+ The default value based on the default item in the effective alternative keys.
+ */
+ property string smallText: effectiveAlternativeKeys && effectiveAlternativeKeysHighlightIndex !== -1 ? effectiveAlternativeKeys[effectiveAlternativeKeysHighlightIndex] : ""
+
+ /*! \since QtQuick.VirtualKeyboard 2.0
+
+ Sets the visibility of small text.
+
+ The default value is inherited from the parent.
+ */
+ property bool smallTextVisible: parent.smallTextVisible
+
+ /*! Sets the list of alternative keys.
+
+ This property can be set to a string, or a list of strings. If the value is
+ a string, the alternative keys are presented as individual characters of
+ that string. If the value is a list of strings, the list is used instead.
+
+ The alternative keys are presented to the user by pressing and holding a key
+ with this property set.
+
+ \note If the alternative keys contains the key \c text, it will be filtered from
+ the \c effectiveAlternativeKeys and its position will be used as an indicator
+ for the highlighted item instead.
+
+ The default is empty list.
+ */
+ property var alternativeKeys: []
+
+ /*! \since QtQuick.VirtualKeyboard 2.0
+
+ This property contains the effective alternative keys presented to user.
+
+ The list is contains the items in the \c alternativeKeys excluding the \c text
+ item.
+ */
+ readonly property var effectiveAlternativeKeys: {
+ var textIndex = alternativeKeys.indexOf(text)
+ if (textIndex == -1)
+ return alternativeKeys
+ return alternativeKeys.slice(0, textIndex).concat(alternativeKeys.slice(textIndex + 1))
+ }
+
+ /*! \since QtQuick.VirtualKeyboard 2.0
+
+ This property contains the index of highlighted item in the \c effectiveAlternativeKeys.
+
+ The index is calculated from the index of the key \c text in the \c alternativeKeys.
+
+ For example, if the alternative keys contains "çcċčć" and the key \c text is "c",
+ this index will become 1 and the effective alternative keys presented to user will
+ be "ç[ċ]čć".
+ */
+ readonly property int effectiveAlternativeKeysHighlightIndex: {
+ var index = alternativeKeys.indexOf(text)
+ return index > 0 && (index + 1) == alternativeKeys.length ? index - 1 : index
+ }
+
+ /*! \since QtQuick.VirtualKeyboard 6.2
+
+ This property allows overriding the list of key strings presented to the user in the
+ alternative keys view.
+ */
+ property var displayAlternativeKeys: effectiveAlternativeKeys
+
+ /*! Sets the key code for input method processing.
+
+ The default is Qt.Key_unknown.
+ */
+ property int key: Qt.Key_unknown
+
+ /*! \since QtQuick.VirtualKeyboard 1.3
+
+ This property controls whether the key emits key events for input
+ method processing. When true, the key events are disabled.
+
+ By default, the key event is emitted if the \e key is not unknown
+ or the \e text is not empty.
+ */
+ property bool noKeyEvent: key === Qt.Key_unknown && text.length === 0
+
+ /*! This property holds the active status of the key.
+
+ This property is automatically set to true when the key is pressed.
+ */
+ property bool active: false
+
+ /*! \since QtQuick.VirtualKeyboard 1.3
+
+ Disables key modifiers on the emitted key.
+
+ The default is false.
+ */
+ property bool noModifier: false
+
+ /*! Sets the key repeat attribute.
+
+ If the repeat is enabled, the key will repeat the input events while held down.
+ The repeat should not be used if alternativeKeys is also set.
+
+ The default is false.
+ */
+ property bool repeat: false
+
+ /*! Sets the highlighted status of the key.
+
+ The default is false.
+ */
+ property bool highlighted: false
+
+ /*! Sets the function key attribute.
+
+ The default is false.
+ */
+ property bool functionKey: false
+
+ /*! Sets the show preview attribute.
+
+ By default, the character preview popup is not shown for function keys.
+ */
+ property bool showPreview: enabled && !functionKey && !keyboard.navigationModeActive
+
+ /*! This property holds the pressed status of the key.
+
+ The pressed status can only be true if the key is both enabled and active.
+ When the key state becomes pressed, it triggers a key down event for the
+ input engine. A key up event is triggered when the key is released.
+ */
+ property bool pressed: enabled && active
+
+ /*! This property holds the uppercase status of the key.
+
+ By default, this property reflects the uppercase status of the keyboard.
+ */
+ property bool uppercased: InputContext.uppercase && !noModifier
+
+ /*! Sets the key panel delegate for the key.
+
+ This property is essential for key decoration. Without a key panel delegate,
+ the key is invisible. This property should be assigned in the inherited key type.
+ */
+ property alias keyPanelDelegate: keyPanel.sourceComponent
+
+ /*!
+ \since QtQuick.VirtualKeyboard 1.1
+
+ This property holds the sound effect to be played on key press.
+
+ This property is read-only since the sound effects are defined in the keyboard style.
+ */
+ readonly property url soundEffect: keyPanel.item ? keyPanel.item.soundEffect : ""
+
+ onSoundEffectChanged: keyboard.soundEffect.register(soundEffect)
+
+ Layout.minimumWidth: keyPanel.implicitWidth
+ Layout.minimumHeight: keyPanel.implicitHeight
+ Layout.preferredWidth: weight
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ Loader {
+ id: keyPanel
+ anchors.fill: parent
+ onLoaded: keyPanel.item.control = keyItem
+ }
+
+ /*! This signal is triggered when the key is pressed, allowing custom processing
+ of key.
+ */
+ signal clicked
+}