From d141d5b683badfa9492f191333c49e510049a73d Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 14 Mar 2017 21:36:57 +1300 Subject: [PATCH] Add keyboard --- .../dialogs/preferences/AvatarPreference.qml | 8 +-- .../preferences/TabletAvatarBrowser.qml | 58 ++++++++++++++++--- 2 files changed, 54 insertions(+), 12 deletions(-) diff --git a/interface/resources/qml/dialogs/preferences/AvatarPreference.qml b/interface/resources/qml/dialogs/preferences/AvatarPreference.qml index 848dd3c6e9..7ae4fe6761 100644 --- a/interface/resources/qml/dialogs/preferences/AvatarPreference.qml +++ b/interface/resources/qml/dialogs/preferences/AvatarPreference.qml @@ -89,9 +89,7 @@ Preference { root.browser = null; }); } else { - root.browser = tabletAvatarBrowserBuilder.createObject(tabletRoot, { - createGlobalEventBridgeSource: eventBridgeJavaScriptToInject - }); + root.browser = tabletAvatarBrowserBuilder.createObject(tabletRoot); // Make dialog modal. tabletRoot.openModal = root.browser; @@ -101,7 +99,9 @@ Preference { Component { id: tabletAvatarBrowserBuilder; - TabletAvatarBrowser { } + TabletAvatarBrowser { + eventBridge: tabletRoot.eventBridge + } } } } diff --git a/interface/resources/qml/hifi/tablet/tabletWindows/preferences/TabletAvatarBrowser.qml b/interface/resources/qml/hifi/tablet/tabletWindows/preferences/TabletAvatarBrowser.qml index 57ef7b5933..8c415f5ebb 100644 --- a/interface/resources/qml/hifi/tablet/tabletWindows/preferences/TabletAvatarBrowser.qml +++ b/interface/resources/qml/hifi/tablet/tabletWindows/preferences/TabletAvatarBrowser.qml @@ -25,17 +25,16 @@ Item { property var result + property bool keyboardEnabled: false + property bool keyboardRaised: false + property bool punctuationMode: false + signal selected(var modelUrl) signal canceled() - anchors.fill: parent + property alias eventBridge: eventBridgeWrapper.eventBridge - /* - Rectangle { - id: pane // Surrogate for ScrollingWindow's pane. - anchors.fill: parent - } - */ + anchors.fill: parent BaseWebView { id: webview @@ -48,6 +47,32 @@ Item { right: parent.right bottom: footer.top } + + QtObject { + id: eventBridgeWrapper + WebChannel.id: "eventBridgeWrapper" + property var eventBridge; + } + + webChannel.registeredObjects: [eventBridgeWrapper] + + // Create a global EventBridge object for raiseAndLowerKeyboard. + WebEngineScript { + id: createGlobalEventBridge + sourceCode: eventBridgeJavaScriptToInject + injectionPoint: WebEngineScript.DocumentCreation + worldId: WebEngineScript.MainWorld + } + + // Detect when may want to raise and lower keyboard. + WebEngineScript { + id: raiseAndLowerKeyboard + injectionPoint: WebEngineScript.Deferred + sourceUrl: resourceDirectoryUrl + "html/raiseAndLowerKeyboard.js" + worldId: WebEngineScript.MainWorld + } + + userScripts: [ createGlobalEventBridge, raiseAndLowerKeyboard ] } Rectangle { @@ -57,7 +82,7 @@ Item { anchors { left: parent.left right: parent.right - bottom: parent.bottom + bottom: keyboard.top } color: hifi.colors.baseGray @@ -76,4 +101,21 @@ Item { } } } + + Keyboard { + id: keyboard + + raised: parent.keyboardEnabled && parent.keyboardRaised + numeric: parent.punctuationMode + + anchors { + left: parent.left + right: parent.right + bottom: parent.bottom + } + } + + Component.onCompleted: { + keyboardEnabled = HMD.active; + } }