mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 11:45:36 +02:00
Merge pull request #9368 from hyperlogic/tablet-ui
Fixes for qt asserts in debug
This commit is contained in:
commit
998cda6dd7
2 changed files with 17 additions and 18 deletions
|
@ -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)));
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue