History

First cut of pal on tablet.

Anthony J. Thibault committed 9 years ago

Commit a209d031 parent 7db86208 files · +138 −17Browse files

Showing the changes to libraries/script-engine/src/TabletScriptingInterface.cpp (1 of 8 files). Show all

Unified · Split

libraries/script-engine/src/TabletScriptingInterface.cpp+23−0
@@ -183,6 +183,18 @@ void TabletProxy::setQmlTabletRoot(QQuickItem* qmlTabletRoot, QObject* qmlOffscr · 182 unmodified lines
183183 _qmlTabletRoot = qmlTabletRoot;
184184 if (_qmlTabletRoot && _qmlOffscreenSurface) {
185185 QObject::connect(_qmlOffscreenSurface, SIGNAL(webEventReceived(QVariant)), this, SIGNAL(webEventReceived(QVariant)));
186+
187+ // forward qml surface events to interface js
188+ connect(dynamic_cast<OffscreenQmlSurface*>(_qmlOffscreenSurface), &OffscreenQmlSurface::fromQml, [this](QVariant message) {
189+ if (message.canConvert<QJSValue>()) {
190+ emit fromQml(qvariant_cast<QJSValue>(message).toVariant());
191+ } else if (message.canConvert<QString>()) {
192+ emit fromQml(message.toString());
193+ } else {
194+ qWarning() << "fromQml: Unsupported message type " << message;
195+ }
196+ });
197+
186198 gotoHomeScreen();
187199
188200 QMetaObject::invokeMethod(_qmlTabletRoot, "setUsername", Q_ARG(const QVariant&, QVariant(getUsername())));
@@ -197,6 +209,7 @@ void TabletProxy::setQmlTabletRoot(QQuickItem* qmlTabletRoot, QObject* qmlOffscr · 8 unmodified lines
197209 } else {
198210 removeButtonsFromHomeScreen();
199211 _state = State::Uninitialized;
212+ emit screenChanged(QVariant("Closed"), QVariant(""));
200213 }
201214 }
202215
@@ -208,6 +221,7 @@ void TabletProxy::gotoMenuScreen() { · 5 unmodified lines
208221 QObject::connect(loader, SIGNAL(loaded()), this, SLOT(addButtonsToMenuScreen()), Qt::DirectConnection);
209222 QMetaObject::invokeMethod(_qmlTabletRoot, "loadSource", Q_ARG(const QVariant&, QVariant(VRMENU_SOURCE_URL)));
210223 _state = State::Menu;
224+ emit screenChanged(QVariant("Menu"), QVariant(VRMENU_SOURCE_URL));
211225 }
212226 }
213227 }
@@ -217,6 +231,7 @@ void TabletProxy::loadQMLSource(const QVariant& path) { · 3 unmodified lines
217231 if (_state != State::QML) {
218232 QMetaObject::invokeMethod(_qmlTabletRoot, "loadSource", Q_ARG(const QVariant&, path));
219233 _state = State::QML;
234+ emit screenChanged(QVariant("QML"), path);
220235 }
221236 }
222237 }
@@ -228,6 +243,7 @@ void TabletProxy::gotoHomeScreen() { · 5 unmodified lines
228243 QMetaObject::invokeMethod(_qmlTabletRoot, "loadSource", Q_ARG(const QVariant&, QVariant(TABLET_SOURCE_URL)));
229244 QMetaObject::invokeMethod(_qmlTabletRoot, "playButtonClickSound");
230245 _state = State::Home;
246+ emit screenChanged(QVariant("Home"), QVariant(TABLET_SOURCE_URL));
231247 }
232248 }
233249 }
@@ -244,6 +260,7 @@ void TabletProxy::gotoWebScreen(const QString& url, const QString& injectedJavaS · 10 unmodified lines
244260 if (_state != State::Web) {
245261 QMetaObject::invokeMethod(_qmlTabletRoot, "loadSource", Q_ARG(const QVariant&, QVariant(WEB_VIEW_SOURCE_URL)));
246262 _state = State::Web;
263+ emit screenChanged(QVariant("Web"), QVariant(url));
247264 }
248265 QMetaObject::invokeMethod(_qmlTabletRoot, "loadWebUrl", Q_ARG(const QVariant&, QVariant(url)),
249266 Q_ARG(const QVariant&, QVariant(injectedJavaScriptUrl)));
@@ -306,6 +323,12 @@ void TabletProxy::emitScriptEvent(QVariant msg) { · 56 unmodified lines
306323 }
307324 }
308325
326+void TabletProxy::sendToQml(QVariant msg) {
327+ if (_qmlOffscreenSurface) {
328+ QMetaObject::invokeMethod(_qmlOffscreenSurface, "sendToQml", Qt::AutoConnection, Q_ARG(QVariant, msg));
329+ }
330+}
331+
309332 void TabletProxy::addButtonsToHomeScreen() {
310333 auto tablet = getQmlTablet();
311334 if (!tablet) {