From 05e4c2a1bb32831a4340304e402a06c11e28e718 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sun, 12 Mar 2017 09:59:52 +1300 Subject: [PATCH 1/4] MyAvatar is available in tablet now --- .../resources/qml/dialogs/preferences/AvatarPreference.qml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/interface/resources/qml/dialogs/preferences/AvatarPreference.qml b/interface/resources/qml/dialogs/preferences/AvatarPreference.qml index 53d36b6c79..0c5c5bf630 100644 --- a/interface/resources/qml/dialogs/preferences/AvatarPreference.qml +++ b/interface/resources/qml/dialogs/preferences/AvatarPreference.qml @@ -23,10 +23,7 @@ Preference { Component.onCompleted: { dataTextField.text = preference.value; - // FIXME: MyAvatar object isn't available in HMD mode for some reason. - if (typeof MyAvatar !== "undefined") { - console.log("MyAvatar modelName " + MyAvatar.getFullAvatarModelName()) - } + console.log("MyAvatar modelName " + MyAvatar.getFullAvatarModelName()) console.log("Application : " + ApplicationInterface) ApplicationInterface.fullAvatarURLChanged.connect(processNewAvatar); } From f3a99a2437c45cf752c7203fc89d3e1f56fa844d Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 14 Mar 2017 15:36:51 +1300 Subject: [PATCH 2/4] Implement avatar browser for tablet avatar settings --- .../dialogs/preferences/AvatarPreference.qml | 26 ++++-- .../preferences/TabletAvatarBrowser.qml | 79 +++++++++++++++++++ 2 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 interface/resources/qml/hifi/tablet/tabletWindows/preferences/TabletAvatarBrowser.qml diff --git a/interface/resources/qml/dialogs/preferences/AvatarPreference.qml b/interface/resources/qml/dialogs/preferences/AvatarPreference.qml index 0c5c5bf630..848dd3c6e9 100644 --- a/interface/resources/qml/dialogs/preferences/AvatarPreference.qml +++ b/interface/resources/qml/dialogs/preferences/AvatarPreference.qml @@ -10,8 +10,8 @@ import QtQuick 2.5 -import "../../dialogs" import "../../controls-uit" +import "../../hifi/tablet/tabletWindows/preferences" Preference { id: root @@ -82,12 +82,26 @@ Preference { verticalCenter: dataTextField.verticalCenter } onClicked: { - // Load dialog via OffscreenUi so that JavaScript EventBridge is available. - root.browser = OffscreenUi.load("dialogs/preferences/AvatarBrowser.qml"); - root.browser.windowDestroyed.connect(function(){ - root.browser = null; - }); + if (typeof desktop !== "undefined") { + // Load dialog via OffscreenUi so that JavaScript EventBridge is available. + root.browser = OffscreenUi.load("dialogs/preferences/AvatarBrowser.qml"); + root.browser.windowDestroyed.connect(function(){ + root.browser = null; + }); + } else { + root.browser = tabletAvatarBrowserBuilder.createObject(tabletRoot, { + createGlobalEventBridgeSource: eventBridgeJavaScriptToInject + }); + + // Make dialog modal. + tabletRoot.openModal = root.browser; + } } } + + Component { + id: tabletAvatarBrowserBuilder; + TabletAvatarBrowser { } + } } } diff --git a/interface/resources/qml/hifi/tablet/tabletWindows/preferences/TabletAvatarBrowser.qml b/interface/resources/qml/hifi/tablet/tabletWindows/preferences/TabletAvatarBrowser.qml new file mode 100644 index 0000000000..57ef7b5933 --- /dev/null +++ b/interface/resources/qml/hifi/tablet/tabletWindows/preferences/TabletAvatarBrowser.qml @@ -0,0 +1,79 @@ +// +// TabletAvatarBrowser.qml +// +// Created by David Rowe on 14 Mar 2017 +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +import QtQuick 2.5 +import QtQuick.Controls 1.4 +import QtWebChannel 1.0 +import QtWebEngine 1.2 + +import "../../../../windows" +import "../../../../controls-uit" +import "../../../../styles-uit" + +Item { + id: root + objectName: "ModelBrowserDialog" + + property string title: "Attachment Model" + + property var result + + signal selected(var modelUrl) + signal canceled() + + anchors.fill: parent + + /* + Rectangle { + id: pane // Surrogate for ScrollingWindow's pane. + anchors.fill: parent + } + */ + + BaseWebView { + id: webview + url: "https://metaverse.highfidelity.com/marketplace?category=avatars" + focus: true + + anchors { + top: parent.top + left: parent.left + right: parent.right + bottom: footer.top + } + } + + Rectangle { + id: footer + height: 40 + + anchors { + left: parent.left + right: parent.right + bottom: parent.bottom + } + + color: hifi.colors.baseGray + + Row { + anchors { + verticalCenter: parent.verticalCenter + right: parent.right + rightMargin: hifi.dimensions.contentMargin.x + } + + Button { + text: "Cancel" + color: hifi.buttons.white + onClicked: root.destroy(); + } + } + } +} From d141d5b683badfa9492f191333c49e510049a73d Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 14 Mar 2017 21:36:57 +1300 Subject: [PATCH 3/4] 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; + } } From 43687d4773f4a423ba1c2b3fdca10d8db6ac3557 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 14 Mar 2017 21:41:04 +1300 Subject: [PATCH 4/4] Tidying --- .../tablet/tabletWindows/preferences/TabletAvatarBrowser.qml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/interface/resources/qml/hifi/tablet/tabletWindows/preferences/TabletAvatarBrowser.qml b/interface/resources/qml/hifi/tablet/tabletWindows/preferences/TabletAvatarBrowser.qml index 8c415f5ebb..029cf7d46b 100644 --- a/interface/resources/qml/hifi/tablet/tabletWindows/preferences/TabletAvatarBrowser.qml +++ b/interface/resources/qml/hifi/tablet/tabletWindows/preferences/TabletAvatarBrowser.qml @@ -23,15 +23,10 @@ Item { property string title: "Attachment Model" - property var result - property bool keyboardEnabled: false property bool keyboardRaised: false property bool punctuationMode: false - signal selected(var modelUrl) - signal canceled() - property alias eventBridge: eventBridgeWrapper.eventBridge anchors.fill: parent