Merge pull request #12395 from druiz17/fix-qml-tablet-apps

Prevent adding the same tablet url to the tabletApps list
This commit is contained in:
Brad Hefta-Gaub 2018-02-18 19:10:24 -08:00 committed by GitHub
commit 0ef2794c35
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -18,7 +18,7 @@ Item {
signal showDesktop(); signal showDesktop();
property bool shown: true property bool shown: true
property int currentApp: -1; property int currentApp: -1;
property alias tabletApps: tabletApps property alias tabletApps: tabletApps
function setOption(value) { function setOption(value) {
option = value; option = value;
@ -44,7 +44,7 @@ Item {
Component { id: fileDialogBuilder; TabletFileDialog { } } Component { id: fileDialogBuilder; TabletFileDialog { } }
function fileDialog(properties) { function fileDialog(properties) {
openModal = fileDialogBuilder.createObject(tabletRoot, properties); openModal = fileDialogBuilder.createObject(tabletRoot, properties);
return openModal; return openModal;
} }
Component { id: assetDialogBuilder; TabletAssetDialog { } } Component { id: assetDialogBuilder; TabletAssetDialog { } }
@ -66,6 +66,16 @@ Item {
return false; return false;
} }
function isUrlLoaded(url) {
if (currentApp >= 0) {
var currentAppUrl = tabletApps.get(currentApp).appUrl;
if (currentAppUrl === url) {
return true;
}
}
return false;
}
function loadSource(url) { function loadSource(url) {
tabletApps.clear(); tabletApps.clear();
tabletApps.append({"appUrl": url, "isWebUrl": false, "scriptUrl": "", "appWebUrl": ""}); tabletApps.append({"appUrl": url, "isWebUrl": false, "scriptUrl": "", "appWebUrl": ""});
@ -73,23 +83,27 @@ Item {
} }
function loadQMLOnTop(url) { function loadQMLOnTop(url) {
tabletApps.append({"appUrl": url, "isWebUrl": false, "scriptUrl": "", "appWebUrl": ""}); if (!isUrlLoaded(url)) {
loader.load(tabletApps.get(currentApp).appUrl, function(){ tabletApps.append({"appUrl": url, "isWebUrl": false, "scriptUrl": "", "appWebUrl": ""});
if (loader.item.hasOwnProperty("gotoPreviousApp")) { loader.load(tabletApps.get(currentApp).appUrl, function(){
loader.item.gotoPreviousApp = true; if (loader.item.hasOwnProperty("gotoPreviousApp")) {
} loader.item.gotoPreviousApp = true;
}) }
});
}
} }
function loadWebContent(source, url, injectJavaScriptUrl) { function loadWebContent(source, url, injectJavaScriptUrl) {
tabletApps.append({"appUrl": source, "isWebUrl": true, "scriptUrl": injectJavaScriptUrl, "appWebUrl": url}); if (!isUrlLoaded(url)) {
loader.load(source, function() { tabletApps.append({"appUrl": source, "isWebUrl": true, "scriptUrl": injectJavaScriptUrl, "appWebUrl": url});
loader.item.scriptURL = injectJavaScriptUrl; loader.load(source, function() {
loader.item.url = url; loader.item.scriptURL = injectJavaScriptUrl;
if (loader.item.hasOwnProperty("gotoPreviousApp")) { loader.item.url = url;
loader.item.gotoPreviousApp = true; if (loader.item.hasOwnProperty("gotoPreviousApp")) {
} loader.item.gotoPreviousApp = true;
}); }
});
}
} }
function loadWebBase(url, injectJavaScriptUrl) { function loadWebBase(url, injectJavaScriptUrl) {
@ -99,7 +113,7 @@ Item {
function loadTabletWebBase(url, injectJavaScriptUrl) { function loadTabletWebBase(url, injectJavaScriptUrl) {
loadWebContent("hifi/tablet/BlocksWebView.qml", url, injectJavaScriptUrl); loadWebContent("hifi/tablet/BlocksWebView.qml", url, injectJavaScriptUrl);
} }
function returnToPreviousApp() { function returnToPreviousApp() {
tabletApps.remove(currentApp); tabletApps.remove(currentApp);
var isWebPage = tabletApps.get(currentApp).isWebUrl; var isWebPage = tabletApps.get(currentApp).isWebUrl;
@ -190,19 +204,19 @@ Item {
property string source: ""; property string source: "";
property var item: null; property var item: null;
signal loaded; signal loaded;
onWidthChanged: { onWidthChanged: {
if (loader.item) { if (loader.item) {
loader.item.width = loader.width; loader.item.width = loader.width;
} }
} }
onHeightChanged: { onHeightChanged: {
if (loader.item) { if (loader.item) {
loader.item.height = loader.height; loader.item.height = loader.height;
} }
} }
function load(newSource, callback) { function load(newSource, callback) {
if (loader.source == newSource) { if (loader.source == newSource) {
loader.loaded(); loader.loaded();
@ -226,18 +240,18 @@ Item {
loader.item.setRootMenu(tabletRoot.rootMenu, tabletRoot.subMenu); loader.item.setRootMenu(tabletRoot.rootMenu, tabletRoot.subMenu);
} }
loader.item.forceActiveFocus(); loader.item.forceActiveFocus();
if (openModal) { if (openModal) {
openModal.canceled(); openModal.canceled();
openModal.destroy(); openModal.destroy();
openModal = null; openModal = null;
} }
if (openBrowser) { if (openBrowser) {
openBrowser.destroy(); openBrowser.destroy();
openBrowser = null; openBrowser = null;
} }
if (callback) { if (callback) {
callback(); callback();
} }