From ab9432c1cda5882ad1d0dd746895303a76d795dd Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Fri, 17 Nov 2017 16:02:53 -0800 Subject: [PATCH] load webpage if tablet root is not initialized --- .../ui/src/ui/TabletScriptingInterface.cpp | 24 ++++++++++++++++--- .../ui/src/ui/TabletScriptingInterface.h | 3 ++- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/libraries/ui/src/ui/TabletScriptingInterface.cpp b/libraries/ui/src/ui/TabletScriptingInterface.cpp index b9da230715..2fba6c6160 100644 --- a/libraries/ui/src/ui/TabletScriptingInterface.cpp +++ b/libraries/ui/src/ui/TabletScriptingInterface.cpp @@ -282,6 +282,7 @@ void TabletProxy::setToolbarMode(bool toolbarMode) { _desktopWindow = nullptr; } } + qDebug() << "-------> current path " << _currentPathLoaded; } static void addButtonProxyToQmlTablet(QQuickItem* qmlTablet, TabletButtonProxy* buttonProxy) { @@ -328,7 +329,8 @@ void TabletProxy::initialScreen(const QVariant& url) { pushOntoStack(url); } else { _initialScreen = true; - _initialPath = url; + _initialPath.first = url; + _initialPath.second = State::QML; } } @@ -416,10 +418,18 @@ void TabletProxy::setQmlTabletRoot(OffscreenQmlSurface* qmlOffscreenSurface) { }); if (_initialScreen) { - if (!_showRunningScripts) { - pushOntoStack(_initialPath); + if (!_showRunningScripts && _initialPath.second == State::QML) { + pushOntoStack(_initialPath.first); + } else if (_initialPath.second == State::Web) { + QVariant webUrl = _initialPath.first; + QVariant scriptUrl = _initialWebPathParams.first; + gotoWebScreen(webUrl.toString(), scriptUrl.toString(), _initialWebPathParams.second); } _initialScreen = false; + _initialPath.first = ""; + _initialPath.second = State::Uninitialized; + _initialWebPathParams.first = ""; + _initialWebPathParams.second = false; } if (_showRunningScripts) { @@ -685,6 +695,14 @@ void TabletProxy::gotoWebScreen(const QString& url, const QString& injectedJavaS QMetaObject::invokeMethod(root, "setResizable", Q_ARG(const QVariant&, QVariant(false))); } QMetaObject::invokeMethod(root, "loadWebUrl", Q_ARG(const QVariant&, QVariant(url)), Q_ARG(const QVariant&, QVariant(injectedJavaScriptUrl))); + } else { + // tablet is not initialized yet, save information and load when + // the tablet root is set + _initialPath.first = url; + _initialPath.second = State::Web; + _initialWebPathParams.first = injectedJavaScriptUrl; + _initialWebPathParams.second = loadOtherBase; + _initialScreen = true; } _state = State::Web; emit screenChanged(QVariant("Web"), QVariant(url)); diff --git a/libraries/ui/src/ui/TabletScriptingInterface.h b/libraries/ui/src/ui/TabletScriptingInterface.h index bd195fdd20..ad6a7c8001 100644 --- a/libraries/ui/src/ui/TabletScriptingInterface.h +++ b/libraries/ui/src/ui/TabletScriptingInterface.h @@ -248,7 +248,6 @@ protected: void removeButtonsFromToolbar(); bool _initialScreen { false }; - QVariant _initialPath { "" }; QVariant _currentPathLoaded { "" }; QString _name; std::vector> _tabletButtonProxies; @@ -260,6 +259,8 @@ protected: enum class State { Uninitialized, Home, Web, Menu, QML }; State _state { State::Uninitialized }; + std::pair _initialPath { "", State::Uninitialized }; + std::pair _initialWebPathParams; bool _landscape { false }; bool _showRunningScripts { false }; };