Merge pull request #9368 from hyperlogic/tablet-ui

Fixes for qt asserts in debug
This commit is contained in:
Seth Alves 2017-01-12 13:46:42 -08:00 committed by GitHub
commit 998cda6dd7
2 changed files with 17 additions and 18 deletions

View file

@ -21,10 +21,6 @@ TabletScriptingInterface::TabletScriptingInterface() {
qmlRegisterType<SoundEffect>("Hifi", 1, 0, "SoundEffect");
}
TabletScriptingInterface::~TabletScriptingInterface() {
qDebug() << "Shutting down TabletScriptingInterface";
}
QObject* TabletScriptingInterface::getTablet(const QString& tabletId) {
std::lock_guard<std::mutex> guard(_mutex);
@ -57,7 +53,6 @@ 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* VRMENU_SOURCE_URL = "TabletMenu.qml";
TabletProxy::TabletProxy(QString name) : _name(name) {
@ -95,38 +90,40 @@ void TabletProxy::setQmlTabletRoot(QQuickItem* qmlTabletRoot, QObject* qmlOffscr
gotoHomeScreen();
} else {
removeButtonsFromHomeScreen();
_state = State::Uninitialized;
}
}
void TabletProxy::gotoMenuScreen() {
if (_qmlTabletRoot) {
_qmlTabletRoot->setProperty(LOADER_SOURCE_PROPERTY_NAME, VRMENU_SOURCE_URL);
auto loader = _qmlTabletRoot->findChild<QQuickItem*>("loader");
QObject::connect(loader, SIGNAL(loaded()), this, SLOT(addButtonsToMenuScreen()));
QMetaObject::invokeMethod(_qmlTabletRoot, "loadSource", Q_ARG(const QVariant&, QVariant(VRMENU_SOURCE_URL)));
if (_state != State::Menu) {
auto loader = _qmlTabletRoot->findChild<QQuickItem*>("loader");
QObject::connect(loader, SIGNAL(loaded()), this, SLOT(addButtonsToMenuScreen()));
QMetaObject::invokeMethod(_qmlTabletRoot, "loadSource", Q_ARG(const QVariant&, QVariant(VRMENU_SOURCE_URL)));
_state = State::Menu;
}
}
}
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);
if (_state != State::Home) {
auto loader = _qmlTabletRoot->findChild<QQuickItem*>("loader");
QObject::connect(loader, SIGNAL(loaded()), this, SLOT(addButtonsToHomeScreen()));
QMetaObject::invokeMethod(_qmlTabletRoot, "loadSource", Q_ARG(const QVariant&, QVariant(TABLET_SOURCE_URL)));
_state = State::Home;
}
}
}
void TabletProxy::gotoWebScreen(const QString& url) {
if (_qmlTabletRoot) {
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);
if (_state == State::Home) {
removeButtonsFromHomeScreen();
}
if (_state != State::Web) {
QMetaObject::invokeMethod(_qmlTabletRoot, "loadSource", Q_ARG(const QVariant&, QVariant(WEB_VIEW_SOURCE_URL)));
// TABLET_UI_HACK: TODO: addEventBridge to tablet....
_state = State::Web;
}
QMetaObject::invokeMethod(_qmlTabletRoot, "loadWebUrl", Q_ARG(const QVariant&, QVariant(url)));
}

View file

@ -36,7 +36,6 @@ class TabletScriptingInterface : public QObject, public Dependency {
Q_OBJECT
public:
TabletScriptingInterface();
virtual ~TabletScriptingInterface();
/**jsdoc
* Creates or retruns a new TabletProxy and returns it.
@ -132,6 +131,9 @@ protected:
std::vector<QSharedPointer<TabletButtonProxy>> _tabletButtonProxies;
QQuickItem* _qmlTabletRoot { nullptr };
QObject* _qmlOffscreenSurface { nullptr };
enum class State { Uninitialized, Home, Web, Menu };
State _state { State::Uninitialized };
};
/**jsdoc