diff --git a/libraries/script-engine/src/TabletScriptingInterface.cpp b/libraries/script-engine/src/TabletScriptingInterface.cpp index 97dfe1e80f..f2639f9f2a 100644 --- a/libraries/script-engine/src/TabletScriptingInterface.cpp +++ b/libraries/script-engine/src/TabletScriptingInterface.cpp @@ -44,7 +44,7 @@ void TabletScriptingInterface::setQmlTabletRoot(QString tabletId, QQuickItem* qm static const char* TABLET_SOURCE_URL = "Tablet.qml"; static const char* WEB_VIEW_SOURCE_URL = "TabletWebView.qml"; -static const char* LOADER_SOURCE_PROPERTY_NAME = "loaderSource"; +static const char* LOADER_SOURCE_PROPERTY_NAME = "LoaderSource"; TabletProxy::TabletProxy(QString name) : _name(name) { ; @@ -79,6 +79,8 @@ void TabletProxy::setQmlTabletRoot(QQuickItem* qmlTabletRoot, QObject* qmlOffscr if (_qmlTabletRoot && _qmlOffscreenSurface) { QObject::connect(_qmlOffscreenSurface, SIGNAL(webEventReceived(QVariant)), this, SIGNAL(webEventReceived(QVariant))); gotoHomeScreen(); + //auto loader = _qmlTabletRoot->findChild("loader"); + //QObject::connect(loader, SIGNAL(loaded()), this, SLOT(addButtonsToHomeScreen())); } else { removeButtonsFromHomeScreen(); } @@ -88,8 +90,10 @@ void TabletProxy::gotoHomeScreen() { if (_qmlTabletRoot) { QString tabletSource = _qmlTabletRoot->property(LOADER_SOURCE_PROPERTY_NAME).toString(); if (tabletSource != TABLET_SOURCE_URL) { + _qmlTabletRoot->setProperty(LOADER_SOURCE_PROPERTY_NAME, TABLET_SOURCE_URL); + auto loader = _qmlTabletRoot->findChild("loader"); + QObject::connect(loader, SIGNAL(loaded()), this, SLOT(addButtonsToHomeScreen())); QMetaObject::invokeMethod(_qmlTabletRoot, "loadSource", Q_ARG(const QVariant&, QVariant(TABLET_SOURCE_URL))); - addButtonsToHomeScreen(); } } } @@ -99,6 +103,7 @@ void TabletProxy::gotoWebScreen(const QString& url) { removeButtonsFromHomeScreen(); QString tabletSource = _qmlTabletRoot->property(LOADER_SOURCE_PROPERTY_NAME).toString(); if (tabletSource != WEB_VIEW_SOURCE_URL) { + _qmlTabletRoot->setProperty(LOADER_SOURCE_PROPERTY_NAME, WEB_VIEW_SOURCE_URL); QMetaObject::invokeMethod(_qmlTabletRoot, "loadSource", Q_ARG(const QVariant&, QVariant(WEB_VIEW_SOURCE_URL))); // TABLET_UI_HACK: TODO: addEventBridge to tablet.... } @@ -168,6 +173,8 @@ void TabletProxy::addButtonsToHomeScreen() { for (auto& buttonProxy : _tabletButtonProxies) { addButtonProxyToQmlTablet(tablet, buttonProxy.data()); } + auto loader = _qmlTabletRoot->findChild("loader"); + QObject::disconnect(loader, SIGNAL(loaded()), this, SLOT(addButtonsToHomeScreen())); } void TabletProxy::removeButtonsFromHomeScreen() { diff --git a/libraries/script-engine/src/TabletScriptingInterface.h b/libraries/script-engine/src/TabletScriptingInterface.h index 7268a3520c..cc8b38ebff 100644 --- a/libraries/script-engine/src/TabletScriptingInterface.h +++ b/libraries/script-engine/src/TabletScriptingInterface.h @@ -109,9 +109,11 @@ signals: */ void webEventReceived(QVariant msg); -protected: - +private slots: void addButtonsToHomeScreen(); + +protected: + void removeButtonsFromHomeScreen(); QQuickItem* getQmlTablet() const;