diff options
author | Kalle Viironen <kalle.viironen@digia.com> | 2014-02-21 12:24:09 +0200 |
---|---|---|
committer | Kalle Viironen <kalle.viironen@digia.com> | 2014-02-21 12:27:37 +0200 |
commit | 436af494659d416cfbd531b8d3ba9fc49e2fa710 (patch) | |
tree | ab5e6b48e711a3c3a2e2cd4399ce1b3d34347406 /src/imports/virtualkeyboard/Keyboard.qml | |
parent | a10b8b669d357325e9f0b735bcda42758ad2b3d0 (diff) | |
parent | 4738811e35a559d238ba20703eb792fca8f5756b (diff) |
Merge branch 'stable' into releaseQtEE_v2.0.0
* stable: (90 commits)
Doc: Document support services for Yocto recipes
doc: minor changes to customization inline code blocks
Doc: Clarify which Qt Creator templates work out of the box
Doc: Fix missing sudo for i.MX6 embedded Linux deployment
Doc: Fixed 32bit package install command for newer ubuntu versions
doc: add quide how to use b2qt_build_scripts
Doc: Add instructions how to install newer VirtualBox
[Wifi] Fix initialization code
Doc: Explain about disabling surfaceflinger
Enable internet on eAndroid emulator
Doc: Add instructions for building Boot2Qt demos
Doc: Troubleshooting entry for BeagleBone Black HDMI issues
Don't use wifi on Emulator
Doc: Document building your own embedded linux stack
Update copyright year
Doc: Fix the 2.0 release date
Doc: ChangeLog: Remove 'black screen after exit' from bugfixes
Doc: Use a global Qt documentation template
Doc: Add changelog
Disable QConnectivity daemon on emulator
...
Change-Id: I25ba7e19677c3d91d5e78ab68291296face3c073
Diffstat (limited to 'src/imports/virtualkeyboard/Keyboard.qml')
-rw-r--r-- | src/imports/virtualkeyboard/Keyboard.qml | 242 |
1 files changed, 0 insertions, 242 deletions
diff --git a/src/imports/virtualkeyboard/Keyboard.qml b/src/imports/virtualkeyboard/Keyboard.qml deleted file mode 100644 index c626dbc..0000000 --- a/src/imports/virtualkeyboard/Keyboard.qml +++ /dev/null @@ -1,242 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 2.0 -import "components" -import Boot2Qt.InputContext 1.0 -import Qt.labs.folderlistmodel 2.0 - -Image { - id: keyboard - - property var activeKey: 0 - property int localeIndex: 1 - property string locale: layoutsModel.count > 0 ? layoutsModel.get(localeIndex, "fileBaseName") : "en_GB" - property bool active: Qt.inputMethod.visible - property bool uppercased: uppercaseOnly ? true : (lowercaseOnly ? false : InputContext.shift || InputContext.capsLock) - property bool uppercaseOnly: InputContext.inputMethodHints & Qt.ImhUppercaseOnly - property bool lowercaseOnly: InputContext.inputMethodHints & Qt.ImhLowercaseOnly - property bool numberMode: InputContext.inputMethodHints & (Qt.ImhDialableCharactersOnly | Qt.ImhFormattedNumbersOnly | Qt.ImhDigitsOnly) - property bool symbolMode - - z: 1 - source: "images/keypad.png" - fillMode: Image.Stretch - width: parent.width - height: keyboardLayout.height+10 - y: Qt.inputMethod.visible ? parent.height - height : parent.height - visible: Qt.inputMethod.visible || Qt.inputMethod.animating; - - onLocaleChanged: InputContext.setLocale(locale) - onUppercasedChanged: if (Qt.inputMethod.visible) InputContext.handleUppercasing(uppercased) - - function changeInputLanguage() { - localeIndex = (localeIndex+1) % layoutsModel.count - } - - Behavior on y { - SequentialAnimation { - ScriptAction { - script: { - if (Qt.inputMethod.visible) { - keyboard.symbolMode = false - InputContext.handleUppercasing(uppercased) - } - InputContext.setAnimating(true) - } - } - NumberAnimation { duration: 300; easing.type: Easing.InOutQuad } - ScriptAction { script: InputContext.setAnimating(false) } - } - } - AutoScroller {} - FolderListModel { - id: layoutsModel - folder: "layouts" - nameFilters: ["*_*.qml"] - } - PressedKey {} - InputEngine { id: inputEngine } - AlternativeKeys { id: alternativeKeys } - Timer { id: releaseInaccuracyTimer; interval: 500 } - CharacterPreviewBubble { enabled: keyboardMouse.pressed && !alternativeKeys.active } - Binding { - target: InputContext - property: "keyboardRectangle" - value: Qt.rect(keyboard.x, keyboard.y, keyboard.width, keyboard.height) - } - Column { - id: keyboardLayout - anchors.centerIn: parent - Loader { - active: false - visible: keyboard.symbolMode && !keyboard.numberMode - source: "layouts/symbols.qml" - onVisibleChanged: if (visible) active = true - Component.onCompleted: if (visible) active = true - anchors.horizontalCenter: parent.horizontalCenter - } - Loader { - active: false - visible: keyboard.numberMode - source: "layouts/numbers.qml" - onVisibleChanged: if (visible) active = true - Component.onCompleted: if (visible) active = true - anchors.horizontalCenter: parent.horizontalCenter - } - Loader { - visible: !keyboard.symbolMode && !keyboard.numberMode - source: "layouts/" + keyboard.locale +".qml" - } - } - MouseArea { - id: keyboardMouse - - property var initialKey - property var previousKey - property bool dragSymbolMode - property real pressAndHoldMargin: 6 - property real releaseMargin: 18 - - anchors.fill: keyboardLayout - - function press(key) { - if (key && key.enabled) { - if (key.key != Qt.Key_unknown || key.text.length > 0) - inputEngine.sendKeyPress(key.key, keyboard.uppercased ? key.text.toUpperCase() : key.text, keyboard.uppercased ? Qt.ShiftModifier : 0, key.repeat) - } - } - function release(key) { - if (key && key.enabled) { - if (key.key != Qt.Key_unknown || key.text.length > 0) - inputEngine.sendKeyRelease(key.key, keyboard.uppercased ? key.text.toUpperCase() : key.text, keyboard.uppercased ? Qt.ShiftModifier : 0) - key.clicked() - } else if (initialKey !== undefined) // rollback - InputContext.preeditText = InputContext.preeditText.substr(0, InputContext.preeditText.length-1) - } - function click(key) { - if (key && key.enabled) { - if (key.key != Qt.Key_unknown || key.text.length > 0) - inputEngine.sendKeyClick(key.key, keyboard.uppercased ? key.text.toUpperCase() : key.text, keyboard.uppercased ? Qt.ShiftModifier : 0, key.repeat) - key.clicked() - } - } - function setActiveKey(activeKey) { - if (keyboard.activeKey) - keyboard.activeKey.active = false - keyboard.activeKey = activeKey - if (keyboard.activeKey) - keyboard.activeKey.active = true - } - function keyOnMouse(mx, my) { - var parentItem = keyboardLayout - var child = parentItem.childAt(mx, my) - while (child != null) { - var position = parentItem.mapToItem(child, mx, my) - mx = position.x; my = position.y - parentItem = child - child = parentItem.childAt(mx, my) - if (child && child.key != undefined) - return child - } - return undefined - } - function hitInitialKey(mouseX, mouseY, margin) { - if (!initialKey) - return false - var position = initialKey.mapFromItem(keyboardMouse, mouseX, mouseY) - return (position.x > -margin - && position.y > -margin - && position.x < initialKey.width + margin - && position.y < initialKey.height + margin) - } - function reset() { - alternativeKeys.close() - previousKey = keyboard.activeKey - setActiveKey(0) - if (dragSymbolMode) - keyboard.symbolMode = false - dragSymbolMode = false - } - - onPressed: { - releaseInaccuracyTimer.start() - initialKey = keyOnMouse(mouseX, mouseY) - setActiveKey(initialKey ? initialKey : 0) - press(initialKey) - } - onPositionChanged: { - if (alternativeKeys.active) { - alternativeKeys.move(mouseX) - } else { - var key = keyOnMouse(mouseX, mouseY) - if (key !== keyboard.activeKey) { - setActiveKey(key ? key : 0) - } - } - } - onPressAndHold: { - var key = hitInitialKey(mouseX, mouseY, pressAndHoldMargin) ? initialKey : keyboard.activeKey - if (key != undefined && key == initialKey) { - alternativeKeys.open(key) - if (!alternativeKeys.active && key.key == Qt.Key_Context1) { - dragSymbolMode = true - keyboard.symbolMode = true - } - } - } - onClicked: {} - onReleased: { - var key = keyOnMouse(mouseX, mouseY) - if (alternativeKeys.active) { - alternativeKeys.move(mouseX) - alternativeKeys.clicked() - } else if (dragSymbolMode) { - var key = keyOnMouse(mouseX, mouseY) - release(initialKey) - click(key) - } else { - release(releaseInaccuracyTimer.running && hitInitialKey(mouseX, mouseY, releaseMargin) ? initialKey : keyOnMouse(mouseX, mouseY)) - } - reset() - } - onCanceled: reset() - } -} |