mirror of
https://github.com/overte-org/overte.git
synced 2025-06-15 17:19:47 +02:00
Merge pull request #10282 from druiz17/tablet-webview-keyboard
Added tabletwebview keyboard for HMD
This commit is contained in:
commit
c7ab4994ea
2 changed files with 36 additions and 5 deletions
|
@ -23,6 +23,8 @@ Item {
|
||||||
property bool keyboardRaised: false
|
property bool keyboardRaised: false
|
||||||
property bool punctuationMode: false
|
property bool punctuationMode: false
|
||||||
property bool isDesktop: false
|
property bool isDesktop: false
|
||||||
|
property bool removingPage: false
|
||||||
|
property bool loadingPage: false
|
||||||
|
|
||||||
|
|
||||||
property int currentPage: -1 // used as a model for repeater
|
property int currentPage: -1 // used as a model for repeater
|
||||||
|
@ -94,10 +96,14 @@ Item {
|
||||||
}
|
}
|
||||||
|
|
||||||
function goBack() {
|
function goBack() {
|
||||||
if (webview.canGoBack) {
|
if (webview.canGoBack && !isUrlLoaded(webview.url)) {
|
||||||
|
if (currentPage > 0) {
|
||||||
|
removingPage = true;
|
||||||
pagesModel.remove(currentPage);
|
pagesModel.remove(currentPage);
|
||||||
|
}
|
||||||
webview.goBack();
|
webview.goBack();
|
||||||
} else if (currentPage > 0) {
|
} else if (currentPage > 0) {
|
||||||
|
removingPage = true;
|
||||||
pagesModel.remove(currentPage);
|
pagesModel.remove(currentPage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -121,6 +127,10 @@ Item {
|
||||||
urlAppend(url)
|
urlAppend(url)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isUrlLoaded(url) {
|
||||||
|
return (pagesModel.get(currentPage).webUrl === url);
|
||||||
|
}
|
||||||
|
|
||||||
function reloadPage() {
|
function reloadPage() {
|
||||||
view.reloadAndBypassCache()
|
view.reloadAndBypassCache()
|
||||||
view.setActiveFocusOnPress(true);
|
view.setActiveFocusOnPress(true);
|
||||||
|
@ -128,6 +138,10 @@ Item {
|
||||||
}
|
}
|
||||||
|
|
||||||
function urlAppend(url) {
|
function urlAppend(url) {
|
||||||
|
if (removingPage) {
|
||||||
|
removingPage = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
var lurl = decodeURIComponent(url)
|
var lurl = decodeURIComponent(url)
|
||||||
if (lurl[lurl.length - 1] !== "/") {
|
if (lurl[lurl.length - 1] !== "/") {
|
||||||
lurl = lurl + "/"
|
lurl = lurl + "/"
|
||||||
|
@ -140,6 +154,7 @@ Item {
|
||||||
|
|
||||||
onCurrentPageChanged: {
|
onCurrentPageChanged: {
|
||||||
if (currentPage >= 0 && currentPage < pagesModel.count) {
|
if (currentPage >= 0 && currentPage < pagesModel.count) {
|
||||||
|
timer.start();
|
||||||
webview.url = pagesModel.get(currentPage).webUrl;
|
webview.url = pagesModel.get(currentPage).webUrl;
|
||||||
web.url = webview.url;
|
web.url = webview.url;
|
||||||
web.address = webview.url;
|
web.address = webview.url;
|
||||||
|
@ -158,7 +173,7 @@ Item {
|
||||||
|
|
||||||
Timer {
|
Timer {
|
||||||
id: timer
|
id: timer
|
||||||
interval: 100
|
interval: 200
|
||||||
running: false
|
running: false
|
||||||
repeat: false
|
repeat: false
|
||||||
onTriggered: timer.stop();
|
onTriggered: timer.stop();
|
||||||
|
@ -230,10 +245,10 @@ Item {
|
||||||
keyboardRaised = false;
|
keyboardRaised = false;
|
||||||
punctuationMode = false;
|
punctuationMode = false;
|
||||||
keyboard.resetShiftMode(false);
|
keyboard.resetShiftMode(false);
|
||||||
|
|
||||||
// Required to support clicking on "hifi://" links
|
// Required to support clicking on "hifi://" links
|
||||||
if (WebEngineView.LoadStartedStatus == loadRequest.status) {
|
if (WebEngineView.LoadStartedStatus == loadRequest.status) {
|
||||||
urlAppend(loadRequest.url.toString())
|
urlAppend(loadRequest.url.toString());
|
||||||
|
loadingPage = true;
|
||||||
var url = loadRequest.url.toString();
|
var url = loadRequest.url.toString();
|
||||||
if (urlHandler.canHandleUrl(url)) {
|
if (urlHandler.canHandleUrl(url)) {
|
||||||
if (urlHandler.handleUrl(url)) {
|
if (urlHandler.handleUrl(url)) {
|
||||||
|
@ -241,6 +256,10 @@ Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (WebEngineView.LoadFailedStatus == loadRequest.status) {
|
||||||
|
console.log(" Tablet WebEngineView failed to laod url: " + loadRequest.url.toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onNewViewRequested: {
|
onNewViewRequested: {
|
||||||
|
@ -248,6 +267,17 @@ Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HiFiControls.Keyboard {
|
||||||
|
id: keyboard
|
||||||
|
raised: parent.keyboardEnabled && parent.keyboardRaised
|
||||||
|
|
||||||
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
right: parent.right
|
||||||
|
bottom: parent.bottom
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
web.isDesktop = (typeof desktop !== "undefined");
|
web.isDesktop = (typeof desktop !== "undefined");
|
||||||
address = url;
|
address = url;
|
||||||
|
|
|
@ -65,6 +65,7 @@ StackView {
|
||||||
var card = tabletWebView.createObject();
|
var card = tabletWebView.createObject();
|
||||||
card.url = addressBarDialog.metaverseServerUrl + targetString;
|
card.url = addressBarDialog.metaverseServerUrl + targetString;
|
||||||
card.parentStackItem = root;
|
card.parentStackItem = root;
|
||||||
|
card.eventBridge = root.eventBridge;
|
||||||
root.push(card);
|
root.push(card);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue