From 51c2cc793a173b0ac973d762ee515d65d0888da2 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 12 Jun 2019 10:20:54 -0700 Subject: [PATCH] Tinkering with toolbar visibility signal - not quite working --- interface/resources/qml/hifi/Desktop.qml | 8 ++++++++ libraries/ui/src/OffscreenUi.cpp | 6 ++++++ libraries/ui/src/OffscreenUi.h | 4 +++- libraries/ui/src/ui/ToolbarScriptingInterface.cpp | 5 +++++ libraries/ui/src/ui/ToolbarScriptingInterface.h | 6 ++++++ 5 files changed, 28 insertions(+), 1 deletion(-) diff --git a/interface/resources/qml/hifi/Desktop.qml b/interface/resources/qml/hifi/Desktop.qml index 5fa6234504..64a145b0c5 100644 --- a/interface/resources/qml/hifi/Desktop.qml +++ b/interface/resources/qml/hifi/Desktop.qml @@ -12,6 +12,8 @@ import controlsUit 1.0 OriginalDesktop.Desktop { id: desktop + property alias toolbarObjectName: sysToolbar.objectName + MouseArea { id: hoverWatch anchors.fill: parent @@ -70,7 +72,13 @@ OriginalDesktop.Desktop { x: sysToolbar.x buttonModel: tablet ? tablet.buttons : null; shown: tablet ? tablet.toolbarMode : false; + + onVisibleChanged: { + console.log("ZRF HERE DESKTOP.QML: " + visible); + desktop.toolbarVisibleChanged(visible); + } } + signal toolbarVisibleChanged(bool isVisible); QtSettings.Settings { id: settings; diff --git a/libraries/ui/src/OffscreenUi.cpp b/libraries/ui/src/OffscreenUi.cpp index 1e6a01c187..c39159748d 100644 --- a/libraries/ui/src/OffscreenUi.cpp +++ b/libraries/ui/src/OffscreenUi.cpp @@ -688,6 +688,12 @@ void OffscreenUi::createDesktop(const QUrl& url) { menuInitializer(_vrMenu); } + + QString toolbarName = newObject->property("toolbarObjectName").toString(); // will return "com.highfidelity.interface.toolbar.system" + auto toolbarScriptingInterface = DependencyManager::get(); + _currentToolbarProxy = dynamic_cast(toolbarScriptingInterface->getToolbar(toolbarName)); + connect(_desktop, SIGNAL(toolbarVisibleChanged(bool)), _currentToolbarProxy, SLOT(onToolbarVisibleChanged(bool))); + auto keyboardFocus = new KeyboardFocusHack(); connect(_desktop, SIGNAL(showDesktop()), this, SIGNAL(showDesktop())); emit desktopReady(); diff --git a/libraries/ui/src/OffscreenUi.h b/libraries/ui/src/OffscreenUi.h index 6abbc486d0..67c23ce41e 100644 --- a/libraries/ui/src/OffscreenUi.h +++ b/libraries/ui/src/OffscreenUi.h @@ -24,6 +24,7 @@ #include #include "ui/OffscreenQmlSurface.h" +#include "ui/ToolbarScriptingInterface.h" #include "OffscreenQmlElement.h" class VrMenu; @@ -270,7 +271,8 @@ private: QList _modalDialogListeners; std::unordered_map _pressedKeys; VrMenu* _vrMenu { nullptr }; - QQueue> _queuedMenuInitializers; + QQueue> _queuedMenuInitializers; + ToolbarProxy* _currentToolbarProxy; }; #endif diff --git a/libraries/ui/src/ui/ToolbarScriptingInterface.cpp b/libraries/ui/src/ui/ToolbarScriptingInterface.cpp index d01b538004..ebc22d528b 100644 --- a/libraries/ui/src/ui/ToolbarScriptingInterface.cpp +++ b/libraries/ui/src/ui/ToolbarScriptingInterface.cpp @@ -63,6 +63,11 @@ void ToolbarButtonProxy::editProperties(const QVariantMap& properties) { } } +void ToolbarProxy::onToolbarVisibleChanged(bool isVisible) { + qDebug() << "ZRF HERE IN ENGINE SLOT"; + emit ToolbarProxy::toolbarVisibleChanged(isVisible); +} + ToolbarProxy::ToolbarProxy(QObject* qmlObject, QObject* parent) : QmlWrapper(qmlObject, parent) { Q_ASSERT(QThread::currentThread() == qApp->thread()); } diff --git a/libraries/ui/src/ui/ToolbarScriptingInterface.h b/libraries/ui/src/ui/ToolbarScriptingInterface.h index 409ea28fdc..8ce548f7b6 100644 --- a/libraries/ui/src/ui/ToolbarScriptingInterface.h +++ b/libraries/ui/src/ui/ToolbarScriptingInterface.h @@ -129,6 +129,12 @@ public: * @param {string[]} propertyList * @returns {object} */ + +public slots: + void onToolbarVisibleChanged(bool isVisible); + +signals: + void toolbarVisibleChanged(bool isVisible); }; Q_DECLARE_METATYPE(ToolbarProxy*);