From dec176b921d5093e11abaf3392690048cd02f543 Mon Sep 17 00:00:00 2001 From: milad Date: Mon, 22 Jul 2019 15:39:03 -0700 Subject: [PATCH 01/17] checking to see if I did something blocking the build --- browserUI/warning.qml | 67 +++ .../+webengine/FlickableWebViewCore.qml | 9 +- .../resources/qml/hifi/PermissionPopup.qml | 82 ++++ .../qml/hifi/PermissionPopupBackground.qml | 34 ++ interface/src/Menu.cpp | 454 +++++++++--------- interface/src/Menu.h | 400 +++++++-------- scripts/simplifiedUI/ui/simplifiedUI.js | 30 ++ 7 files changed, 647 insertions(+), 429 deletions(-) create mode 100644 browserUI/warning.qml create mode 100644 interface/resources/qml/hifi/PermissionPopup.qml create mode 100644 interface/resources/qml/hifi/PermissionPopupBackground.qml diff --git a/browserUI/warning.qml b/browserUI/warning.qml new file mode 100644 index 0000000000..515f69fb5b --- /dev/null +++ b/browserUI/warning.qml @@ -0,0 +1,67 @@ + Rectangle { + id:permissionsContainer + visible:false + color: "#000000" + width: parent.width + anchors.top: buttons.bottom + height:40 + z:100 + gradient: Gradient { + GradientStop { position: 0.0; color: "black" } + GradientStop { position: 1.0; color: "grey" } + } + + RalewayLight { + id: permissionsInfo + anchors.right:permissionsRow.left + anchors.rightMargin: 32 + anchors.topMargin:8 + anchors.top:parent.top + text: "This site wants to use your microphone/camera" + size: 18 + color: hifi.colors.white + } + + Row { + id: permissionsRow + spacing: 4 + anchors.top:parent.top + anchors.topMargin: 8 + anchors.right: parent.right + visible: true + z:101 + + Button { + id:allow + text: "Allow" + color: hifi.buttons.blue + colorScheme: root.colorScheme + width: 120 + enabled: true + onClicked: root.allowPermissions(); + z:101 + } + + Button { + id:block + text: "Block" + color: hifi.buttons.red + colorScheme: root.colorScheme + width: 120 + enabled: true + onClicked: root.hidePermissionsBar(); + z:101 + } + } + } + + function hidePermissionsBar(){ + permissionsContainer.visible=false; + } + + function allowPermissions(){ + webview.grantFeaturePermission(permissionsBar.securityOrigin, permissionsBar.feature, true); + hidePermissionsBar(); + } + + \ No newline at end of file diff --git a/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml b/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml index 56eecf3f46..8b792bf68d 100644 --- a/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml +++ b/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml @@ -5,6 +5,7 @@ import QtWebChannel 1.0 import QtQuick.Controls 2.2 import stylesUit 1.0 as StylesUIt +import "../hifi/PermissionPopup.qml" as PermissionPopup Item { id: flick @@ -140,8 +141,14 @@ Item { }); } + PermissionPopup { + id: permissionPopup + } + onFeaturePermissionRequested: { - grantFeaturePermission(securityOrigin, feature, false); + console.log("Requesting permissions:") + permissionPopup.visible = true; + // grantFeaturePermission(securityOrigin, feature, false); } //disable popup diff --git a/interface/resources/qml/hifi/PermissionPopup.qml b/interface/resources/qml/hifi/PermissionPopup.qml new file mode 100644 index 0000000000..2b110051ad --- /dev/null +++ b/interface/resources/qml/hifi/PermissionPopup.qml @@ -0,0 +1,82 @@ +import QtQuick 2.5 +import controlsUit 1.0 as HifiControls +import stylesUit 1.0 as HifiStyles +import "../windows" as Windows +import "../." + +Item { + id: root + width: 600 + height: 200 + z:100 + HifiConstants { id: hifi } + + // anchors.top: buttons.bottom + Rectangle { + id: mainContainer + width: root.width + height: root.height + color: hifi.colors.white + + Row { + id: webAccessHeaderContainer + height: root.height * 0.30 + RalewayLight { + id: webAccessHeaderText + text: "WEB CAMERA ACCESS REQUEST" + width: mainContainer.width + horizontalAlignment: Text.AlignHCenter + anchors.bottom: parent.bottom + font.bold: true + color: hifi.colors.black + size: 17 + } + } + + Row { + id: webAccessInfoContainer + anchors.top: webAccessHeaderContainer.bottom + anchors.topMargin: 10 + RalewayLight { + width: mainContainer.width + id: webAccessInfoText + horizontalAlignment: Text.AlignHCenter + text: "This domain is requesting access to your web camera and microphone" + size: 17 + color: hifi.colors.black + } + } + + Rectangle { + id: permissionsButtonRow + color: "#AAAAAA" + anchors.topMargin: 10 + height: 50 + width: leftButton.width + rightButton.width + (this.space * 3) + anchors.top: webAccessInfoContainer.bottom + anchors.horizontalCenter: webAccessInfoContainer.horizontalCenter + anchors.verticalCenter: webAccessInfoContainer.verticalCenter + property real space: 5 + Button { + anchors.left: permissionsButtonRow.left + id: leftButton + anchors.leftMargin: permissionsButtonRow.space + + text: "Yes allow access" + color: hifi.buttons.blue + colorScheme: root.colorScheme + enabled: true + width: 155 + } + Button { + id: rightButton + anchors.left: leftButton.right + anchors.leftMargin: permissionsButtonRow.space + text: "Don't Allow" + color: hifi.buttons.red + colorScheme: root.colorScheme + enabled: true + } + } + } +} \ No newline at end of file diff --git a/interface/resources/qml/hifi/PermissionPopupBackground.qml b/interface/resources/qml/hifi/PermissionPopupBackground.qml new file mode 100644 index 0000000000..25db8bb74b --- /dev/null +++ b/interface/resources/qml/hifi/PermissionPopupBackground.qml @@ -0,0 +1,34 @@ +import QtQuick 2.5 +import controlsUit 1.0 +import stylesUit 1.0 +import "../windows" +import "../." + +Rectangle { + id: permissionPopupBackground + anchors.fill: parent + color: QT.rgba(0, 0, 0, 0.7); + HifiConstants { id: hifi } + + PermissionPopup { + id: permissionPopupItem + visible: false + Component.onCompleted: { + console.log("\n\n TESTING!! \n\n") + } + } + + onFeaturePermissionRequested: { + permissionPopupItem.onLeftButtonClicked = function() { + console.log("TEST FOR PERMISSIONS :: LEFT CLICKED"); + grantFeaturePermission(securityOrigin, feature, true); + .visible = false; + } + permissionPopupItem.onRightButtonClicked = function() { + console.log("TEST FOR PERMISSIONS :: RIGHT CLICKED"); + grantFeaturePermission(securityOrigin, feature, false); + permissionPopupBackground.visible = false; + } + permissionPopupBackground.visible = true; + } +} diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 4cf78c23ee..2d388c4146 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -56,6 +56,12 @@ #include "scripting/RenderScriptingInterface.h" +/* +QSharedPointer getOff() { + return DependencyManager::get(); +} +*/ + extern bool DEV_DECIMATE_TEXTURES; Menu* Menu::getInstance() { @@ -76,45 +82,44 @@ Menu::Menu() { addActionToQMenuAndActionHash(fileMenu, MenuOption::Login); // connect to the appropriate signal of the AccountManager so that we can change the Login/Logout menu item - connect(accountManager.data(), &AccountManager::profileChanged, - dialogsManager.data(), &DialogsManager::toggleLoginDialog); - connect(accountManager.data(), &AccountManager::logoutComplete, - dialogsManager.data(), &DialogsManager::toggleLoginDialog); + connect(accountManager.data(), &AccountManager::profileChanged, dialogsManager.data(), + &DialogsManager::toggleLoginDialog); + connect(accountManager.data(), &AccountManager::logoutComplete, dialogsManager.data(), + &DialogsManager::toggleLoginDialog); } // File > Quit addActionToQMenuAndActionHash(fileMenu, MenuOption::Quit, Qt::CTRL | Qt::Key_Q, qApp, SLOT(quit()), QAction::QuitRole); - // Edit menu ---------------------------------- MenuWrapper* editMenu = addMenu("Edit"); // Edit > Cut auto cutAction = addActionToQMenuAndActionHash(editMenu, "Cut", QKeySequence::Cut); connect(cutAction, &QAction::triggered, [] { - QKeyEvent* keyEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_X, Qt::ControlModifier); - QCoreApplication::postEvent(QCoreApplication::instance(), keyEvent); + QKeyEvent* keyEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_X, Qt::ControlModifier); + QCoreApplication::postEvent(QCoreApplication::instance(), keyEvent); }); // Edit > Copy auto copyAction = addActionToQMenuAndActionHash(editMenu, "Copy", QKeySequence::Copy); connect(copyAction, &QAction::triggered, [] { - QKeyEvent* keyEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_C, Qt::ControlModifier); - QCoreApplication::postEvent(QCoreApplication::instance(), keyEvent); + QKeyEvent* keyEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_C, Qt::ControlModifier); + QCoreApplication::postEvent(QCoreApplication::instance(), keyEvent); }); // Edit > Paste auto pasteAction = addActionToQMenuAndActionHash(editMenu, "Paste", QKeySequence::Paste); connect(pasteAction, &QAction::triggered, [] { - QKeyEvent* keyEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_V, Qt::ControlModifier); - QCoreApplication::postEvent(QCoreApplication::instance(), keyEvent); + QKeyEvent* keyEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_V, Qt::ControlModifier); + QCoreApplication::postEvent(QCoreApplication::instance(), keyEvent); }); // Edit > Delete auto deleteAction = addActionToQMenuAndActionHash(editMenu, "Delete", QKeySequence::Delete); connect(deleteAction, &QAction::triggered, [] { - QKeyEvent* keyEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_Delete, Qt::NoModifier); - QCoreApplication::postEvent(QCoreApplication::instance(), keyEvent); + QKeyEvent* keyEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_Delete, Qt::NoModifier); + QCoreApplication::postEvent(QCoreApplication::instance(), keyEvent); }); editMenu->addSeparator(); @@ -133,8 +138,7 @@ Menu::Menu() { editMenu->addSeparator(); // Edit > Asset Browser - auto assetServerAction = addActionToQMenuAndActionHash(editMenu, MenuOption::AssetServer, - Qt::CTRL | Qt::SHIFT | Qt::Key_A, + auto assetServerAction = addActionToQMenuAndActionHash(editMenu, MenuOption::AssetServer, Qt::CTRL | Qt::SHIFT | Qt::Key_A, qApp, SLOT(showAssetServerWidget())); { auto nodeList = DependencyManager::get(); @@ -145,9 +149,7 @@ Menu::Menu() { // Edit > Avatar Packager #ifndef Q_OS_ANDROID action = addActionToQMenuAndActionHash(editMenu, MenuOption::AvatarPackager); - connect(action, &QAction::triggered, [] { - DependencyManager::get()->open(); - }); + connect(action, &QAction::triggered, [] { DependencyManager::get()->open(); }); #endif // Edit > Reload All Content @@ -162,7 +164,6 @@ Menu::Menu() { QActionGroup* displayModeGroup = new QActionGroup(displayModeMenu); displayModeGroup->setExclusive(true); - // View menu ---------------------------------- MenuWrapper* viewMenu = addMenu("View"); QActionGroup* cameraModeGroup = new QActionGroup(viewMenu); @@ -171,31 +172,29 @@ Menu::Menu() { cameraModeGroup->setExclusive(true); // View > First Person - auto firstPersonAction = cameraModeGroup->addAction(addCheckableActionToQMenuAndActionHash( - viewMenu, MenuOption::FirstPerson, 0, - true, qApp, SLOT(cameraMenuChanged()))); + auto firstPersonAction = cameraModeGroup->addAction( + addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::FirstPerson, 0, true, qApp, SLOT(cameraMenuChanged()))); firstPersonAction->setProperty(EXCLUSION_GROUP_KEY, QVariant::fromValue(cameraModeGroup)); // View > Third Person - auto thirdPersonAction = cameraModeGroup->addAction(addCheckableActionToQMenuAndActionHash( - viewMenu, MenuOption::ThirdPerson, 0, - false, qApp, SLOT(cameraMenuChanged()))); + auto thirdPersonAction = cameraModeGroup->addAction( + addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::ThirdPerson, 0, false, qApp, SLOT(cameraMenuChanged()))); thirdPersonAction->setProperty(EXCLUSION_GROUP_KEY, QVariant::fromValue(cameraModeGroup)); // View > Mirror - auto viewMirrorAction = cameraModeGroup->addAction(addCheckableActionToQMenuAndActionHash( - viewMenu, MenuOption::FullscreenMirror, 0, - false, qApp, SLOT(cameraMenuChanged()))); + auto viewMirrorAction = + cameraModeGroup->addAction(addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::FullscreenMirror, 0, false, + qApp, SLOT(cameraMenuChanged()))); viewMirrorAction->setProperty(EXCLUSION_GROUP_KEY, QVariant::fromValue(cameraModeGroup)); viewMenu->addSeparator(); // View > Center Player In View - addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::CenterPlayerInView, - 0, true, qApp, SLOT(rotationModeChanged())); + addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::CenterPlayerInView, 0, true, qApp, + SLOT(rotationModeChanged())); // View > Enter First Person Mode in HMD addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::FirstPersonHMD, 0, true); @@ -210,21 +209,19 @@ Menu::Menu() { // Navigate > Copy Address auto addressManager = DependencyManager::get(); - addActionToQMenuAndActionHash(navigateMenu, MenuOption::CopyAddress, 0, - addressManager.data(), SLOT(copyAddress())); + addActionToQMenuAndActionHash(navigateMenu, MenuOption::CopyAddress, 0, addressManager.data(), SLOT(copyAddress())); // Navigate > Copy Path - addActionToQMenuAndActionHash(navigateMenu, MenuOption::CopyPath, 0, - addressManager.data(), SLOT(copyPath())); + addActionToQMenuAndActionHash(navigateMenu, MenuOption::CopyPath, 0, addressManager.data(), SLOT(copyPath())); // Navigate > Start-up Location MenuWrapper* startupLocationMenu = navigateMenu->addMenu(MenuOption::StartUpLocation); QActionGroup* startupLocatiopnGroup = new QActionGroup(startupLocationMenu); startupLocatiopnGroup->setExclusive(true); - startupLocatiopnGroup->addAction(addCheckableActionToQMenuAndActionHash(startupLocationMenu, MenuOption::HomeLocation, 0, - false)); - startupLocatiopnGroup->addAction(addCheckableActionToQMenuAndActionHash(startupLocationMenu, MenuOption::LastLocation, 0, - true)); + startupLocatiopnGroup->addAction( + addCheckableActionToQMenuAndActionHash(startupLocationMenu, MenuOption::HomeLocation, 0, false)); + startupLocatiopnGroup->addAction( + addCheckableActionToQMenuAndActionHash(startupLocationMenu, MenuOption::LastLocation, 0, true)); // Settings menu ---------------------------------- MenuWrapper* settingsMenu = addMenu("Settings"); @@ -234,20 +231,20 @@ Menu::Menu() { connect(action, &QAction::triggered, [] { if (!qApp->getLoginDialogPoppedUp()) { qApp->showDialog(QString("hifi/dialogs/GeneralPreferencesDialog.qml"), - QString("hifi/tablet/TabletGeneralPreferences.qml"), "GeneralPreferencesDialog"); + QString("hifi/tablet/TabletGeneralPreferences.qml"), "GeneralPreferencesDialog"); } }); // Settings > Controls... action = addActionToQMenuAndActionHash(settingsMenu, "Controls..."); connect(action, &QAction::triggered, [] { - auto tablet = DependencyManager::get()->getTablet("com.highfidelity.interface.tablet.system"); - auto hmd = DependencyManager::get(); - tablet->pushOntoStack("hifi/tablet/ControllerSettings.qml"); + auto tablet = DependencyManager::get()->getTablet("com.highfidelity.interface.tablet.system"); + auto hmd = DependencyManager::get(); + tablet->pushOntoStack("hifi/tablet/ControllerSettings.qml"); - if (!hmd->getShouldShowTablet()) { - hmd->toggleShouldShowTablet(); - } + if (!hmd->getShouldShowTablet()) { + hmd->toggleShouldShowTablet(); + } }); // Settings > Audio... @@ -275,16 +272,30 @@ Menu::Menu() { } }); + + action = addActionToQMenuAndActionHash(editMenu, "Test Permissions"); + connect(action, &QAction::triggered, [] { + auto logMessage = [=](QQmlContext* context, QObject* newObject) { + qCDebug(interfaceapp) << "Testing permissions setting"; + }; + + qCDebug(interfaceapp) << "\n\nTesting permissions setting\n\n"; + static const QUrl url{ "hifi/Permission.qml" }; + + DependencyManager::get()->show(url, "AssetServer", logMessage); + }); + + // Settings > Security... action = addActionToQMenuAndActionHash(settingsMenu, "Security..."); connect(action, &QAction::triggered, [] { - auto tablet = DependencyManager::get()->getTablet("com.highfidelity.interface.tablet.system"); - auto hmd = DependencyManager::get(); - tablet->pushOntoStack("hifi/dialogs/security/Security.qml"); + auto tablet = DependencyManager::get()->getTablet("com.highfidelity.interface.tablet.system"); + auto hmd = DependencyManager::get(); + tablet->pushOntoStack("hifi/dialogs/security/Security.qml"); - if (!hmd->getShouldShowTablet()) { - hmd->toggleShouldShowTablet(); - } + if (!hmd->getShouldShowTablet()) { + hmd->toggleShouldShowTablet(); + } }); // Settings > Developer Menu @@ -295,28 +306,26 @@ Menu::Menu() { // Developer menu ---------------------------------- MenuWrapper* developerMenu = addMenu("Developer", "Developer"); - + // Developer > Scripting >>> MenuWrapper* scriptingOptionsMenu = developerMenu->addMenu("Scripting"); - + // Developer > Scripting > Console... addActionToQMenuAndActionHash(scriptingOptionsMenu, MenuOption::Console, Qt::CTRL | Qt::ALT | Qt::Key_J, - DependencyManager::get().data(), - SLOT(toggleConsole()), - QAction::NoRole, + DependencyManager::get().data(), SLOT(toggleConsole()), QAction::NoRole, UNSPECIFIED_POSITION); - // Developer > Scripting > API Debugger + // Developer > Scripting > API Debugger action = addActionToQMenuAndActionHash(scriptingOptionsMenu, "API Debugger"); connect(action, &QAction::triggered, [] { QUrl defaultScriptsLoc = PathUtils::defaultScriptsLocation(); defaultScriptsLoc.setPath(defaultScriptsLoc.path() + "developer/utilities/tools/currentAPI.js"); DependencyManager::get()->loadScript(defaultScriptsLoc.toString()); }); - + // Developer > Scripting > Entity Script Server Log - auto essLogAction = addActionToQMenuAndActionHash(scriptingOptionsMenu, MenuOption::EntityScriptServerLog, 0, - qApp, SLOT(toggleEntityScriptServerLogDialog())); + auto essLogAction = addActionToQMenuAndActionHash(scriptingOptionsMenu, MenuOption::EntityScriptServerLog, 0, qApp, + SLOT(toggleEntityScriptServerLogDialog())); { auto nodeList = DependencyManager::get(); QObject::connect(nodeList.data(), &NodeList::canRezChanged, essLogAction, [essLogAction] { @@ -327,56 +336,53 @@ Menu::Menu() { } // Developer > Scripting > Script Log (HMD friendly)... - addActionToQMenuAndActionHash(scriptingOptionsMenu, "Script Log (HMD friendly)...", Qt::NoButton, - qApp, SLOT(showScriptLogs())); + addActionToQMenuAndActionHash(scriptingOptionsMenu, "Script Log (HMD friendly)...", Qt::NoButton, qApp, + SLOT(showScriptLogs())); // Developer > Scripting > Verbose Logging - addCheckableActionToQMenuAndActionHash(scriptingOptionsMenu, MenuOption::VerboseLogging, 0, false, - qApp, SLOT(updateVerboseLogging())); - + addCheckableActionToQMenuAndActionHash(scriptingOptionsMenu, MenuOption::VerboseLogging, 0, false, qApp, + SLOT(updateVerboseLogging())); + // Developer > Scripting > Enable Speech Control API #if defined(Q_OS_MAC) || defined(Q_OS_WIN) auto speechRecognizer = DependencyManager::get(); - QAction* speechRecognizerAction = addCheckableActionToQMenuAndActionHash(scriptingOptionsMenu, MenuOption::ControlWithSpeech, - Qt::CTRL | Qt::SHIFT | Qt::Key_C, - speechRecognizer->getEnabled(), - speechRecognizer.data(), - SLOT(setEnabled(bool)), - UNSPECIFIED_POSITION); + QAction* speechRecognizerAction = + addCheckableActionToQMenuAndActionHash(scriptingOptionsMenu, MenuOption::ControlWithSpeech, + Qt::CTRL | Qt::SHIFT | Qt::Key_C, speechRecognizer->getEnabled(), + speechRecognizer.data(), SLOT(setEnabled(bool)), UNSPECIFIED_POSITION); connect(speechRecognizer.data(), SIGNAL(enabledUpdated(bool)), speechRecognizerAction, SLOT(setChecked(bool))); #endif - + // Developer > UI >>> MenuWrapper* uiOptionsMenu = developerMenu->addMenu("UI"); action = addCheckableActionToQMenuAndActionHash(uiOptionsMenu, MenuOption::DesktopTabletToToolbar, 0, qApp->getDesktopTabletBecomesToolbarSetting()); - + // Developer > UI > Show Overlays addCheckableActionToQMenuAndActionHash(uiOptionsMenu, MenuOption::Overlays, 0, true); - + // Developer > UI > Desktop Tablet Becomes Toolbar - connect(action, &QAction::triggered, [action] { - qApp->setDesktopTabletBecomesToolbarSetting(action->isChecked()); - }); - - // Developer > UI > HMD Tablet Becomes Toolbar + connect(action, &QAction::triggered, [action] { qApp->setDesktopTabletBecomesToolbarSetting(action->isChecked()); }); + + // Developer > UI > HMD Tablet Becomes Toolbar action = addCheckableActionToQMenuAndActionHash(uiOptionsMenu, MenuOption::HMDTabletToToolbar, 0, qApp->getHmdTabletBecomesToolbarSetting()); - connect(action, &QAction::triggered, [action] { - qApp->setHmdTabletBecomesToolbarSetting(action->isChecked()); - }); + connect(action, &QAction::triggered, [action] { qApp->setHmdTabletBecomesToolbarSetting(action->isChecked()); }); // Developer > Render >>> MenuWrapper* renderOptionsMenu = developerMenu->addMenu("Render"); - addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::AntiAliasing, 0, RenderScriptingInterface::getInstance()->getAntialiasingEnabled(), - RenderScriptingInterface::getInstance(), SLOT(setAntialiasingEnabled(bool))); + addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::AntiAliasing, 0, + RenderScriptingInterface::getInstance()->getAntialiasingEnabled(), + RenderScriptingInterface::getInstance(), SLOT(setAntialiasingEnabled(bool))); - addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Shadows, 0, RenderScriptingInterface::getInstance()->getShadowsEnabled(), - RenderScriptingInterface::getInstance(), SLOT(setShadowsEnabled(bool))); + addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Shadows, 0, + RenderScriptingInterface::getInstance()->getShadowsEnabled(), + RenderScriptingInterface::getInstance(), SLOT(setShadowsEnabled(bool))); - addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::AmbientOcclusion, 0, RenderScriptingInterface::getInstance()->getAmbientOcclusionEnabled(), - RenderScriptingInterface::getInstance(), SLOT(setAmbientOcclusionEnabled(bool))); + addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::AmbientOcclusion, 0, + RenderScriptingInterface::getInstance()->getAmbientOcclusionEnabled(), + RenderScriptingInterface::getInstance(), SLOT(setAmbientOcclusionEnabled(bool))); addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::WorldAxes); addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::DefaultSkybox, 0, true); @@ -398,7 +404,8 @@ Menu::Menu() { MenuWrapper* textureMenu = renderOptionsMenu->addMenu(MenuOption::RenderMaxTextureMemory); QActionGroup* textureGroup = new QActionGroup(textureMenu); textureGroup->setExclusive(true); - textureGroup->addAction(addCheckableActionToQMenuAndActionHash(textureMenu, MenuOption::RenderMaxTextureAutomatic, 0, true)); + textureGroup->addAction( + addCheckableActionToQMenuAndActionHash(textureMenu, MenuOption::RenderMaxTextureAutomatic, 0, true)); textureGroup->addAction(addCheckableActionToQMenuAndActionHash(textureMenu, MenuOption::RenderMaxTexture4MB, 0, false)); textureGroup->addAction(addCheckableActionToQMenuAndActionHash(textureMenu, MenuOption::RenderMaxTexture64MB, 0, false)); textureGroup->addAction(addCheckableActionToQMenuAndActionHash(textureMenu, MenuOption::RenderMaxTexture256MB, 0, false)); @@ -411,7 +418,7 @@ Menu::Menu() { connect(textureGroup, &QActionGroup::triggered, [textureGroup] { auto checked = textureGroup->checkedAction(); auto text = checked->text(); - gpu::Context::Size newMaxTextureMemory { 0 }; + gpu::Context::Size newMaxTextureMemory{ 0 }; if (MenuOption::RenderMaxTexture4MB == text) { newMaxTextureMemory = MB_TO_BYTES(4); } else if (MenuOption::RenderMaxTexture64MB == text) { @@ -437,7 +444,8 @@ Menu::Menu() { #ifdef Q_OS_WIN // Developer > Render > Enable Sparse Textures { - auto action = addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::SparseTextureManagement, 0, gpu::Texture::getEnableSparseTextures()); + auto action = addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::SparseTextureManagement, 0, + gpu::Texture::getEnableSparseTextures()); connect(action, &QAction::triggered, [&](bool checked) { qDebug() << "[TEXTURE TRANSFER SUPPORT] --- Enable Dynamic Texture Management menu option:" << checked; gpu::Texture::setEnableSparseTextures(checked); @@ -445,36 +453,34 @@ Menu::Menu() { } #else - qDebug() << "[TEXTURE TRANSFER SUPPORT] Incremental Texture Transfer and Dynamic Texture Management not supported on this platform."; + qDebug() << "[TEXTURE TRANSFER SUPPORT] Incremental Texture Transfer and Dynamic Texture Management not supported on this " + "platform."; #endif - { auto action = addActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::RenderClearKtxCache); - connect(action, &QAction::triggered, []{ + connect(action, &QAction::triggered, [] { Setting::Handle(KTXCache::SETTING_VERSION_NAME, KTXCache::INVALID_VERSION).set(KTXCache::INVALID_VERSION); }); } // Developer > Render > LOD Tools - addActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::LodTools, 0, - qApp, SLOT(loadLODToolsDialog())); + addActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::LodTools, 0, qApp, SLOT(loadLODToolsDialog())); // HACK enable texture decimation { auto action = addCheckableActionToQMenuAndActionHash(renderOptionsMenu, "Decimate Textures"); - connect(action, &QAction::triggered, [&](bool checked) { - DEV_DECIMATE_TEXTURES = checked; - }); + connect(action, &QAction::triggered, [&](bool checked) { DEV_DECIMATE_TEXTURES = checked; }); } addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::ComputeBlendshapes, 0, true, - DependencyManager::get().data(), SLOT(setComputeBlendshapes(bool))); + DependencyManager::get().data(), SLOT(setComputeBlendshapes(bool))); { - auto drawStatusConfig = qApp->getRenderEngine()->getConfiguration()->getConfig("RenderMainView.DrawStatus"); - addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::HighlightTransitions, 0, false, - drawStatusConfig, SLOT(setShowFade(bool))); + auto drawStatusConfig = + qApp->getRenderEngine()->getConfiguration()->getConfig("RenderMainView.DrawStatus"); + addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::HighlightTransitions, 0, false, drawStatusConfig, + SLOT(setShowFade(bool))); } // Developer > Assets >>> @@ -485,9 +491,8 @@ Menu::Menu() { auto& atpMigrator = ATPAssetMigrator::getInstance(); atpMigrator.setDialogParent(this); - addActionToQMenuAndActionHash(assetDeveloperMenu, MenuOption::AssetMigration, - 0, &atpMigrator, - SLOT(loadEntityServerFile())); + addActionToQMenuAndActionHash(assetDeveloperMenu, MenuOption::AssetMigration, 0, &atpMigrator, + SLOT(loadEntityServerFile())); #endif // Developer > Avatar >>> @@ -502,21 +507,21 @@ Menu::Menu() { #ifdef HAVE_DDE defaultNoFaceTracking = false; #endif - QAction* noFaceTracker = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::NoFaceTracking, - 0, defaultNoFaceTracking, - qApp, SLOT(setActiveFaceTracker())); + QAction* noFaceTracker = + addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::NoFaceTracking, 0, defaultNoFaceTracking, qApp, + SLOT(setActiveFaceTracker())); faceTrackerGroup->addAction(noFaceTracker); #ifdef HAVE_DDE - QAction* ddeFaceTracker = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::UseCamera, - 0, true, - qApp, SLOT(setActiveFaceTracker())); + QAction* ddeFaceTracker = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::UseCamera, 0, true, qApp, + SLOT(setActiveFaceTracker())); faceTrackerGroup->addAction(ddeFaceTracker); #endif } #ifdef HAVE_DDE faceTrackingMenu->addSeparator(); - QAction* binaryEyelidControl = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::BinaryEyelidControl, 0, true); + QAction* binaryEyelidControl = + addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::BinaryEyelidControl, 0, true); binaryEyelidControl->setVisible(true); // DDE face tracking is on by default QAction* coupleEyelids = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::CoupleEyelids, 0, true); coupleEyelids->setVisible(true); // DDE face tracking is on by default @@ -525,102 +530,104 @@ Menu::Menu() { QAction* ddeFiltering = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::VelocityFilter, 0, true); ddeFiltering->setVisible(true); // DDE face tracking is on by default QAction* ddeCalibrate = addActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::CalibrateCamera, 0, - DependencyManager::get().data(), SLOT(calibrate())); + DependencyManager::get().data(), SLOT(calibrate())); ddeCalibrate->setVisible(true); // DDE face tracking is on by default faceTrackingMenu->addSeparator(); addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::MuteFaceTracking, - [](bool mute) { FaceTracker::setIsMuted(mute); }, - Qt::CTRL | Qt::SHIFT | Qt::Key_F, FaceTracker::isMuted()); + [](bool mute) { FaceTracker::setIsMuted(mute); }, Qt::CTRL | Qt::SHIFT | Qt::Key_F, + FaceTracker::isMuted()); addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::AutoMuteAudio, 0, false); #endif #ifdef HAVE_IVIEWHMD // Developer > Avatar > Eye Tracking MenuWrapper* eyeTrackingMenu = avatarDebugMenu->addMenu("Eye Tracking"); - addCheckableActionToQMenuAndActionHash(eyeTrackingMenu, MenuOption::SMIEyeTracking, 0, false, - qApp, SLOT(setActiveEyeTracker())); + addCheckableActionToQMenuAndActionHash(eyeTrackingMenu, MenuOption::SMIEyeTracking, 0, false, qApp, + SLOT(setActiveEyeTracker())); { MenuWrapper* calibrateEyeTrackingMenu = eyeTrackingMenu->addMenu("Calibrate"); - addActionToQMenuAndActionHash(calibrateEyeTrackingMenu, MenuOption::OnePointCalibration, 0, - qApp, SLOT(calibrateEyeTracker1Point())); - addActionToQMenuAndActionHash(calibrateEyeTrackingMenu, MenuOption::ThreePointCalibration, 0, - qApp, SLOT(calibrateEyeTracker3Points())); - addActionToQMenuAndActionHash(calibrateEyeTrackingMenu, MenuOption::FivePointCalibration, 0, - qApp, SLOT(calibrateEyeTracker5Points())); + addActionToQMenuAndActionHash(calibrateEyeTrackingMenu, MenuOption::OnePointCalibration, 0, qApp, + SLOT(calibrateEyeTracker1Point())); + addActionToQMenuAndActionHash(calibrateEyeTrackingMenu, MenuOption::ThreePointCalibration, 0, qApp, + SLOT(calibrateEyeTracker3Points())); + addActionToQMenuAndActionHash(calibrateEyeTrackingMenu, MenuOption::FivePointCalibration, 0, qApp, + SLOT(calibrateEyeTracker5Points())); } - addCheckableActionToQMenuAndActionHash(eyeTrackingMenu, MenuOption::SimulateEyeTracking, 0, false, - qApp, SLOT(setActiveEyeTracker())); + addCheckableActionToQMenuAndActionHash(eyeTrackingMenu, MenuOption::SimulateEyeTracking, 0, false, qApp, + SLOT(setActiveEyeTracker())); #endif action = addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AvatarReceiveStats, 0, false); - connect(action, &QAction::triggered, [this]{ Avatar::setShowReceiveStats(isOptionChecked(MenuOption::AvatarReceiveStats)); }); + connect(action, &QAction::triggered, + [this] { Avatar::setShowReceiveStats(isOptionChecked(MenuOption::AvatarReceiveStats)); }); action = addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ShowBoundingCollisionShapes, 0, false); - connect(action, &QAction::triggered, [this]{ Avatar::setShowCollisionShapes(isOptionChecked(MenuOption::ShowBoundingCollisionShapes)); }); + connect(action, &QAction::triggered, + [this] { Avatar::setShowCollisionShapes(isOptionChecked(MenuOption::ShowBoundingCollisionShapes)); }); action = addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ShowMyLookAtVectors, 0, false); - connect(action, &QAction::triggered, [this]{ Avatar::setShowMyLookAtVectors(isOptionChecked(MenuOption::ShowMyLookAtVectors)); }); + connect(action, &QAction::triggered, + [this] { Avatar::setShowMyLookAtVectors(isOptionChecked(MenuOption::ShowMyLookAtVectors)); }); action = addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ShowOtherLookAtVectors, 0, false); - connect(action, &QAction::triggered, [this]{ Avatar::setShowOtherLookAtVectors(isOptionChecked(MenuOption::ShowOtherLookAtVectors)); }); + connect(action, &QAction::triggered, + [this] { Avatar::setShowOtherLookAtVectors(isOptionChecked(MenuOption::ShowOtherLookAtVectors)); }); auto avatarManager = DependencyManager::get(); auto avatar = avatarManager->getMyAvatar(); action = addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::EnableLookAtSnapping, 0, true); - connect(action, &QAction::triggered, [this, avatar]{ - avatar->setProperty("lookAtSnappingEnabled", isOptionChecked(MenuOption::EnableLookAtSnapping)); - }); + connect(action, &QAction::triggered, [this, avatar] { + avatar->setProperty("lookAtSnappingEnabled", isOptionChecked(MenuOption::EnableLookAtSnapping)); + }); addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::FixGaze, 0, false); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ToggleHipsFollowing, 0, false, - avatar.get(), SLOT(setToggleHips(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AnimDebugDrawBaseOfSupport, 0, false, - avatar.get(), SLOT(setEnableDebugDrawBaseOfSupport(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AnimDebugDrawDefaultPose, 0, false, - avatar.get(), SLOT(setEnableDebugDrawDefaultPose(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AnimDebugDrawAnimPose, 0, false, - avatar.get(), SLOT(setEnableDebugDrawAnimPose(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AnimDebugDrawPosition, 0, false, - avatar.get(), SLOT(setEnableDebugDrawPosition(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ToggleHipsFollowing, 0, false, avatar.get(), + SLOT(setToggleHips(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AnimDebugDrawBaseOfSupport, 0, false, avatar.get(), + SLOT(setEnableDebugDrawBaseOfSupport(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AnimDebugDrawDefaultPose, 0, false, avatar.get(), + SLOT(setEnableDebugDrawDefaultPose(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AnimDebugDrawAnimPose, 0, false, avatar.get(), + SLOT(setEnableDebugDrawAnimPose(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AnimDebugDrawPosition, 0, false, avatar.get(), + SLOT(setEnableDebugDrawPosition(bool))); addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AnimDebugDrawOtherSkeletons, 0, false, - avatarManager.data(), SLOT(setEnableDebugDrawOtherSkeletons(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::MeshVisible, 0, true, - avatar.get(), SLOT(setEnableMeshVisible(bool))); + avatarManager.data(), SLOT(setEnableDebugDrawOtherSkeletons(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::MeshVisible, 0, true, avatar.get(), + SLOT(setEnableMeshVisible(bool))); addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::DisableEyelidAdjustment, 0, false); addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::TurnWithHead, 0, false); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::EnableInverseKinematics, 0, true, - avatar.get(), SLOT(setEnableInverseKinematics(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderSensorToWorldMatrix, 0, false, - avatar.get(), SLOT(setEnableDebugDrawSensorToWorldMatrix(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderIKTargets, 0, false, - avatar.get(), SLOT(setEnableDebugDrawIKTargets(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderIKConstraints, 0, false, - avatar.get(), SLOT(setEnableDebugDrawIKConstraints(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderIKChains, 0, false, - avatar.get(), SLOT(setEnableDebugDrawIKChains(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderDetailedCollision, 0, false, - avatar.get(), SLOT(setEnableDebugDrawDetailedCollision(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::EnableInverseKinematics, 0, true, avatar.get(), + SLOT(setEnableInverseKinematics(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderSensorToWorldMatrix, 0, false, avatar.get(), + SLOT(setEnableDebugDrawSensorToWorldMatrix(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderIKTargets, 0, false, avatar.get(), + SLOT(setEnableDebugDrawIKTargets(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderIKConstraints, 0, false, avatar.get(), + SLOT(setEnableDebugDrawIKConstraints(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderIKChains, 0, false, avatar.get(), + SLOT(setEnableDebugDrawIKChains(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderDetailedCollision, 0, false, avatar.get(), + SLOT(setEnableDebugDrawDetailedCollision(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ActionMotorControl, 0, true, - avatar.get(), SLOT(updateMotionBehaviorFromMenu()), - UNSPECIFIED_POSITION, "Developer"); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ActionMotorControl, 0, true, avatar.get(), + SLOT(updateMotionBehaviorFromMenu()), UNSPECIFIED_POSITION, "Developer"); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ScriptedMotorControl, 0, true, - avatar.get(), SLOT(updateMotionBehaviorFromMenu()), - UNSPECIFIED_POSITION, "Developer"); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ScriptedMotorControl, 0, true, avatar.get(), + SLOT(updateMotionBehaviorFromMenu()), UNSPECIFIED_POSITION, "Developer"); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ShowTrackedObjects, 0, false, qApp, SLOT(setShowTrackedObjects(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ShowTrackedObjects, 0, false, qApp, + SLOT(setShowTrackedObjects(bool))); addActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::PackageModel, 0, qApp, SLOT(packageModel())); // Developer > Hands >>> MenuWrapper* handOptionsMenu = developerMenu->addMenu("Hands"); - addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::DisplayHandTargets, 0, false, - avatar.get(), SLOT(setEnableDebugDrawHandControllers(bool))); + addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::DisplayHandTargets, 0, false, avatar.get(), + SLOT(setEnableDebugDrawHandControllers(bool))); // Developer > Entities >>> MenuWrapper* entitiesOptionsMenu = developerMenu->addMenu("Entities"); - addActionToQMenuAndActionHash(entitiesOptionsMenu, MenuOption::OctreeStats, 0, - qApp, SLOT(loadEntityStatisticsDialog())); + addActionToQMenuAndActionHash(entitiesOptionsMenu, MenuOption::OctreeStats, 0, qApp, SLOT(loadEntityStatisticsDialog())); addCheckableActionToQMenuAndActionHash(entitiesOptionsMenu, MenuOption::ShowRealtimeEntityStats); @@ -629,35 +636,30 @@ Menu::Menu() { action = addActionToQMenuAndActionHash(networkMenu, MenuOption::Networking); connect(action, &QAction::triggered, [] { qApp->showDialog(QString("hifi/dialogs/NetworkingPreferencesDialog.qml"), - QString("hifi/tablet/TabletNetworkingPreferences.qml"), "NetworkingPreferencesDialog"); + QString("hifi/tablet/TabletNetworkingPreferences.qml"), "NetworkingPreferencesDialog"); }); addActionToQMenuAndActionHash(networkMenu, MenuOption::ReloadContent, 0, qApp, SLOT(reloadResourceCaches())); - addActionToQMenuAndActionHash(networkMenu, MenuOption::ClearDiskCache, 0, - DependencyManager::get().data(), SLOT(clearCache())); - addCheckableActionToQMenuAndActionHash(networkMenu, - MenuOption::DisableActivityLogger, - 0, - false, - &UserActivityLogger::getInstance(), - SLOT(disable(bool))); - addActionToQMenuAndActionHash(networkMenu, MenuOption::ShowDSConnectTable, 0, - qApp, SLOT(loadDomainConnectionDialog())); + addActionToQMenuAndActionHash(networkMenu, MenuOption::ClearDiskCache, 0, DependencyManager::get().data(), + SLOT(clearCache())); + addCheckableActionToQMenuAndActionHash(networkMenu, MenuOption::DisableActivityLogger, 0, false, + &UserActivityLogger::getInstance(), SLOT(disable(bool))); + addActionToQMenuAndActionHash(networkMenu, MenuOption::ShowDSConnectTable, 0, qApp, SLOT(loadDomainConnectionDialog())); - #if (PR_BUILD || DEV_BUILD) - addCheckableActionToQMenuAndActionHash(networkMenu, MenuOption::SendWrongProtocolVersion, 0, false, - qApp, SLOT(sendWrongProtocolVersionsSignature(bool))); +#if (PR_BUILD || DEV_BUILD) + addCheckableActionToQMenuAndActionHash(networkMenu, MenuOption::SendWrongProtocolVersion, 0, false, qApp, + SLOT(sendWrongProtocolVersionsSignature(bool))); { auto nodeList = DependencyManager::get(); - addCheckableActionToQMenuAndActionHash(networkMenu, MenuOption::SendWrongDSConnectVersion, 0, false, - nodeList.data(), SLOT(toggleSendNewerDSConnectVersion(bool))); + addCheckableActionToQMenuAndActionHash(networkMenu, MenuOption::SendWrongDSConnectVersion, 0, false, nodeList.data(), + SLOT(toggleSendNewerDSConnectVersion(bool))); } - #endif - +#endif // Developer >> Tests >>> MenuWrapper* testMenu = developerMenu->addMenu("Tests"); - addActionToQMenuAndActionHash(testMenu, MenuOption::RunClientScriptTests, 0, dialogsManager.data(), SLOT(showTestingResults())); + addActionToQMenuAndActionHash(testMenu, MenuOption::RunClientScriptTests, 0, dialogsManager.data(), + SLOT(showTestingResults())); // Developer > Timing >>> MenuWrapper* timingMenu = developerMenu->addMenu("Timing"); @@ -678,7 +680,6 @@ Menu::Menu() { addCheckableActionToQMenuAndActionHash(timingMenu, MenuOption::LogExtraTimings); addCheckableActionToQMenuAndActionHash(timingMenu, MenuOption::SuppressShortTimings); - // Developer > Audio >>> MenuWrapper* audioDebugMenu = developerMenu->addMenu("Audio"); @@ -691,12 +692,12 @@ Menu::Menu() { action = addActionToQMenuAndActionHash(audioDebugMenu, "Buffers..."); connect(action, &QAction::triggered, [] { - qApp->showDialog(QString("hifi/dialogs/AudioBuffers.qml"), - QString("hifi/tablet/TabletAudioBuffers.qml"), "AudioBuffersDialog"); + qApp->showDialog(QString("hifi/dialogs/AudioBuffers.qml"), QString("hifi/tablet/TabletAudioBuffers.qml"), + "AudioBuffersDialog"); }); - addActionToQMenuAndActionHash(audioDebugMenu, MenuOption::MuteEnvironment, 0, - DependencyManager::get().data(), SLOT(sendMuteEnvironmentPacket())); + addActionToQMenuAndActionHash(audioDebugMenu, MenuOption::MuteEnvironment, 0, DependencyManager::get().data(), + SLOT(sendMuteEnvironmentPacket())); action = addActionToQMenuAndActionHash(audioDebugMenu, MenuOption::AudioScope); connect(action, &QAction::triggered, [] { @@ -708,25 +709,31 @@ Menu::Menu() { // Developer > Physics >>> MenuWrapper* physicsOptionsMenu = developerMenu->addMenu("Physics"); { - auto drawStatusConfig = qApp->getRenderEngine()->getConfiguration()->getConfig("RenderMainView.DrawStatus"); - addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowOwned, - 0, false, drawStatusConfig, SLOT(setShowNetwork(bool))); + auto drawStatusConfig = + qApp->getRenderEngine()->getConfiguration()->getConfig("RenderMainView.DrawStatus"); + addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowOwned, 0, false, drawStatusConfig, + SLOT(setShowNetwork(bool))); } - addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletWireframe, 0, false, qApp, SLOT(setShowBulletWireframe(bool))); - addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletAABBs, 0, false, qApp, SLOT(setShowBulletAABBs(bool))); - addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletContactPoints, 0, false, qApp, SLOT(setShowBulletContactPoints(bool))); - addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletConstraints, 0, false, qApp, SLOT(setShowBulletConstraints(bool))); - addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletConstraintLimits, 0, false, qApp, SLOT(setShowBulletConstraintLimits(bool))); + addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletWireframe, 0, false, qApp, + SLOT(setShowBulletWireframe(bool))); + addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletAABBs, 0, false, qApp, + SLOT(setShowBulletAABBs(bool))); + addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletContactPoints, 0, false, qApp, + SLOT(setShowBulletContactPoints(bool))); + addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletConstraints, 0, false, qApp, + SLOT(setShowBulletConstraints(bool))); + addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletConstraintLimits, 0, false, qApp, + SLOT(setShowBulletConstraintLimits(bool))); // Developer > Picking >>> MenuWrapper* pickingOptionsMenu = developerMenu->addMenu("Picking"); addCheckableActionToQMenuAndActionHash(pickingOptionsMenu, MenuOption::ForceCoarsePicking, 0, false, - DependencyManager::get().data(), SLOT(setForceCoarsePicking(bool))); + DependencyManager::get().data(), SLOT(setForceCoarsePicking(bool))); // Developer > Crash >>> MenuWrapper* crashMenu = developerMenu->addMenu("Crash"); - + // Developer > Crash > Display Crash Options addCheckableActionToQMenuAndActionHash(crashMenu, MenuOption::DisplayCrashOptions, 0, true); @@ -770,10 +777,10 @@ Menu::Menu() { addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::AnimStats); // Developer > Log - addActionToQMenuAndActionHash(developerMenu, MenuOption::Log, Qt::CTRL | Qt::SHIFT | Qt::Key_L, - qApp, SLOT(toggleLogDialog())); + addActionToQMenuAndActionHash(developerMenu, MenuOption::Log, Qt::CTRL | Qt::SHIFT | Qt::Key_L, qApp, + SLOT(toggleLogDialog())); -#if 0 /// -------------- REMOVED FOR NOW -------------- +#if 0 /// -------------- REMOVED FOR NOW -------------- addDisabledActionAndSeparator(navigateMenu, "History"); QAction* backAction = addActionToQMenuAndActionHash(navigateMenu, MenuOption::Back, 0, addressManager.data(), SLOT(goBack())); QAction* forwardAction = addActionToQMenuAndActionHash(navigateMenu, MenuOption::Forward, 0, addressManager.data(), SLOT(goForward())); @@ -800,33 +807,27 @@ Menu::Menu() { #endif // Help/Application menu ---------------------------------- - MenuWrapper * helpMenu = addMenu("Help"); + MenuWrapper* helpMenu = addMenu("Help"); // Help > About High Fidelity action = addActionToQMenuAndActionHash(helpMenu, "About High Fidelity"); connect(action, &QAction::triggered, [] { - qApp->showDialog(QString("hifi/dialogs/AboutDialog.qml"), - QString("hifi/dialogs/TabletAboutDialog.qml"), "AboutDialog"); + qApp->showDialog(QString("hifi/dialogs/AboutDialog.qml"), QString("hifi/dialogs/TabletAboutDialog.qml"), "AboutDialog"); }); helpMenu->addSeparator(); // Help > HiFi Docs action = addActionToQMenuAndActionHash(helpMenu, "Online Documentation"); - connect(action, &QAction::triggered, qApp, [] { - QDesktopServices::openUrl(QUrl("https://docs.highfidelity.com/")); - }); + connect(action, &QAction::triggered, qApp, [] { QDesktopServices::openUrl(QUrl("https://docs.highfidelity.com/")); }); // Help > HiFi Forum action = addActionToQMenuAndActionHash(helpMenu, "Online Forums"); - connect(action, &QAction::triggered, qApp, [] { - QDesktopServices::openUrl(QUrl("https://forums.highfidelity.com/")); - }); + connect(action, &QAction::triggered, qApp, [] { QDesktopServices::openUrl(QUrl("https://forums.highfidelity.com/")); }); // Help > Scripting Reference action = addActionToQMenuAndActionHash(helpMenu, "Online Script Reference"); - connect(action, &QAction::triggered, qApp, [] { - QDesktopServices::openUrl(QUrl("https://docs.highfidelity.com/api-reference")); - }); + connect(action, &QAction::triggered, qApp, + [] { QDesktopServices::openUrl(QUrl("https://docs.highfidelity.com/api-reference")); }); addActionToQMenuAndActionHash(helpMenu, "Controls Reference", 0, qApp, SLOT(showHelp())); @@ -834,15 +835,12 @@ Menu::Menu() { // Help > Release Notes action = addActionToQMenuAndActionHash(helpMenu, "Release Notes"); - connect(action, &QAction::triggered, qApp, [] { - QDesktopServices::openUrl(QUrl("http://steamcommunity.com/games/390540/announcements/")); - }); + connect(action, &QAction::triggered, qApp, + [] { QDesktopServices::openUrl(QUrl("http://steamcommunity.com/games/390540/announcements/")); }); // Help > Report a Bug! action = addActionToQMenuAndActionHash(helpMenu, "Report a Bug!"); - connect(action, &QAction::triggered, qApp, [] { - QDesktopServices::openUrl(QUrl("mailto:support@highfidelity.com")); - }); + connect(action, &QAction::triggered, qApp, [] { QDesktopServices::openUrl(QUrl("mailto:support@highfidelity.com")); }); } void Menu::addMenuItem(const MenuItemProperties& properties) { @@ -872,10 +870,10 @@ void Menu::addMenuItem(const MenuItemProperties& properties) { if (properties.isSeparator) { addDisabledActionAndSeparator(menuObj, properties.menuItemName, requestedPosition, properties.grouping); } else if (properties.isCheckable) { - menuItemAction = addCheckableActionToQMenuAndActionHash(menuObj, properties.menuItemName, - properties.shortcutKeySequence, properties.isChecked, - MenuScriptingInterface::getInstance(), SLOT(menuItemTriggered()), - requestedPosition, properties.grouping); + menuItemAction = + addCheckableActionToQMenuAndActionHash(menuObj, properties.menuItemName, properties.shortcutKeySequence, + properties.isChecked, MenuScriptingInterface::getInstance(), + SLOT(menuItemTriggered()), requestedPosition, properties.grouping); } else { menuItemAction = addActionToQMenuAndActionHash(menuObj, properties.menuItemName, properties.shortcutKeySequence, MenuScriptingInterface::getInstance(), SLOT(menuItemTriggered()), diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 70687786a9..772f82cdbe 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -26,204 +26,204 @@ public: }; namespace MenuOption { - const QString AddRemoveFriends = "Add/Remove Friends..."; - const QString AddressBar = "Show Address Bar"; - const QString Animations = "Animations..."; - const QString AnimDebugDrawAnimPose = "Debug Draw Animation"; - const QString AnimDebugDrawBaseOfSupport = "Debug Draw Base of Support"; - const QString AnimDebugDrawDefaultPose = "Debug Draw Default Pose"; - const QString AnimDebugDrawPosition= "Debug Draw Position"; - const QString AnimDebugDrawOtherSkeletons = "Debug Draw Other Skeletons"; - const QString AskToResetSettings = "Ask To Reset Settings on Start"; - const QString AssetMigration = "ATP Asset Migration"; - const QString AssetServer = "Asset Browser"; - const QString AudioScope = "Show Scope"; - const QString AudioScopeFiftyFrames = "Fifty"; - const QString AudioScopeFiveFrames = "Five"; - const QString AudioScopeFrames = "Display Frames"; - const QString AudioScopePause = "Pause Scope"; - const QString AudioScopeTwentyFrames = "Twenty"; - const QString AudioStatsShowInjectedStreams = "Audio Stats Show Injected Streams"; - const QString AutoMuteAudio = "Auto Mute Microphone"; - const QString AvatarReceiveStats = "Show Receive Stats"; - const QString AvatarBookmarks = "Avatar Bookmarks"; - const QString AvatarPackager = "Avatar Packager"; - const QString Back = "Back"; - const QString BinaryEyelidControl = "Binary Eyelid Control"; - const QString BookmarkAvatar = "Bookmark Avatar"; - const QString BookmarkAvatarEntities = "Bookmark Avatar Entities"; - const QString BookmarkLocation = "Bookmark Location"; - const QString CalibrateCamera = "Calibrate Camera"; - const QString CenterPlayerInView = "Center Player In View"; - const QString Chat = "Chat..."; - const QString ClearDiskCache = "Clear Disk Cache"; - const QString Collisions = "Collisions"; - const QString Connexion = "Activate 3D Connexion Devices"; - const QString Console = "Console..."; - const QString ControlWithSpeech = "Enable Speech Control API"; - const QString CopyAddress = "Copy Address to Clipboard"; - const QString CopyPath = "Copy Path to Clipboard"; - const QString CoupleEyelids = "Couple Eyelids"; - const QString CrashPureVirtualFunction = "Pure Virtual Function Call"; - const QString CrashPureVirtualFunctionThreaded = "Pure Virtual Function Call (threaded)"; - const QString CrashDoubleFree = "Double Free"; - const QString CrashDoubleFreeThreaded = "Double Free (threaded)"; - const QString CrashNullDereference = "Null Dereference"; - const QString CrashNullDereferenceThreaded = "Null Dereference (threaded)"; - const QString CrashAbort = "Abort"; - const QString CrashAbortThreaded = "Abort (threaded)"; - const QString CrashOutOfBoundsVectorAccess = "Out of Bounds Vector Access"; - const QString CrashOutOfBoundsVectorAccessThreaded = "Out of Bounds Vector Access (threaded)"; - const QString CrashNewFault = "New Fault"; - const QString CrashNewFaultThreaded = "New Fault (threaded)"; - const QString CreateEntitiesGrabbable = "Create Entities As Grabbable (except Zones, Particles, and Lights)"; - const QString DeadlockInterface = "Deadlock Interface"; - const QString UnresponsiveInterface = "Unresponsive Interface"; - const QString DecreaseAvatarSize = "Decrease Avatar Size"; - const QString DefaultSkybox = "Default Skybox"; - const QString DeleteAvatarBookmark = "Delete Avatar Bookmark..."; - const QString DeleteAvatarEntitiesBookmark = "Delete Avatar Entities Bookmark"; - const QString DeleteBookmark = "Delete Bookmark..."; - const QString DisableActivityLogger = "Disable Activity Logger"; - const QString DisableEyelidAdjustment = "Disable Eyelid Adjustment"; - const QString DisableLightEntities = "Disable Light Entities"; - const QString DisplayCrashOptions = "Display Crash Options"; - const QString DisplayHandTargets = "Show Hand Targets"; - const QString DisplayModelBounds = "Display Model Bounds"; - const QString DisplayModelTriangles = "Display Model Triangles"; - const QString DisplayModelElementChildProxies = "Display Model Element Children"; - const QString DisplayModelElementProxy = "Display Model Element Bounds"; - const QString DisplayDebugTimingDetails = "Display Timing Details"; - const QString LocationBookmarks = "Bookmarks"; - const QString DontDoPrecisionPicking = "Don't Do Precision Picking"; - const QString DontRenderEntitiesAsScene = "Don't Render Entities as Scene"; - const QString EchoLocalAudio = "Echo Local Audio"; - const QString EchoServerAudio = "Echo Server Audio"; - const QString EnableFlying = "Enable Flying"; - const QString EnableAvatarCollisions = "Enable Avatar Collisions"; - const QString EnableInverseKinematics = "Enable Inverse Kinematics"; - const QString EntityScriptServerLog = "Entity Script Server Log"; - const QString ExpandMyAvatarSimulateTiming = "Expand /myAvatar/simulation"; - const QString ExpandMyAvatarTiming = "Expand /myAvatar"; - const QString ExpandOtherAvatarTiming = "Expand /otherAvatar"; - const QString ExpandPaintGLTiming = "Expand /paintGL"; - const QString ExpandSimulationTiming = "Expand /simulation"; - const QString ExpandPhysicsTiming = "Expand /physics"; - const QString ExpandUpdateTiming = "Expand /update"; - const QString FirstPerson = "First Person"; - const QString FirstPersonHMD = "Enter First Person Mode in HMD"; - const QString FivePointCalibration = "5 Point Calibration"; - const QString FixGaze = "Fix Gaze (no saccade)"; - const QString Forward = "Forward"; - const QString FrameTimer = "Show Timer"; - const QString FullscreenMirror = "Mirror"; - const QString Help = "Help..."; - const QString HomeLocation = "Home "; - const QString IncreaseAvatarSize = "Increase Avatar Size"; - const QString ActionMotorControl = "Enable Default Motor Control"; - const QString LastLocation = "Last Location"; - const QString LoadScript = "Open and Run Script File..."; - const QString LoadScriptURL = "Open and Run Script from URL..."; - const QString LodTools = "LOD Tools"; - const QString Login = "Login/Sign Up"; - const QString Log = "Log"; - const QString LogExtraTimings = "Log Extra Timing Details"; - const QString LowVelocityFilter = "Low Velocity Filter"; - const QString MeshVisible = "Draw Mesh"; - const QString MuteEnvironment = "Mute Environment"; - const QString MuteFaceTracking = "Mute Face Tracking"; - const QString NamesAboveHeads = "Names Above Heads"; - const QString Networking = "Networking..."; - const QString NoFaceTracking = "None"; - const QString OctreeStats = "Entity Statistics"; - const QString OnePointCalibration = "1 Point Calibration"; - const QString OnlyDisplayTopTen = "Only Display Top Ten"; - const QString OpenVrThreadedSubmit = "OpenVR Threaded Submit"; - const QString OutputMenu = "Display"; - const QString Overlays = "Show Overlays"; - const QString PackageModel = "Package Avatar as .fst..."; - const QString Pair = "Pair"; - const QString PhysicsShowOwned = "Highlight Simulation Ownership"; - const QString VerboseLogging = "Verbose Logging"; - const QString PhysicsShowBulletWireframe = "Show Bullet Collision"; - const QString PhysicsShowBulletAABBs = "Show Bullet Bounding Boxes"; - const QString PhysicsShowBulletContactPoints = "Show Bullet Contact Points"; - const QString PhysicsShowBulletConstraints = "Show Bullet Constraints"; - const QString PhysicsShowBulletConstraintLimits = "Show Bullet Constraint Limits"; - const QString PipelineWarnings = "Log Render Pipeline Warnings"; - const QString Preferences = "General..."; - const QString Quit = "Quit"; - const QString ReloadAllScripts = "Reload All Scripts"; - const QString ReloadContent = "Reload Content (Clears all caches)"; - const QString RenderClearKtxCache = "Clear KTX Cache (requires restart)"; - const QString RenderMaxTextureMemory = "Maximum Texture Memory"; - const QString RenderMaxTextureAutomatic = "Automatic Texture Memory"; - const QString RenderMaxTexture4MB = "4 MB"; - const QString RenderMaxTexture64MB = "64 MB"; - const QString RenderMaxTexture256MB = "256 MB"; - const QString RenderMaxTexture512MB = "512 MB"; - const QString RenderMaxTexture1024MB = "1024 MB"; - const QString RenderMaxTexture2048MB = "2048 MB"; - const QString RenderMaxTexture3072MB = "3072 MB"; - const QString RenderMaxTexture4096MB = "4096 MB"; - const QString RenderMaxTexture6144MB = "6144 MB"; - const QString RenderMaxTexture8192MB = "8192 MB"; - const QString RenderSensorToWorldMatrix = "Show SensorToWorld Matrix"; - const QString RenderIKTargets = "Show IK Targets"; - const QString RenderIKConstraints = "Show IK Constraints"; - const QString RenderIKChains = "Show IK Chains"; - const QString RenderDetailedCollision = "Show Detailed Collision"; - const QString ResetAvatarSize = "Reset Avatar Size"; - const QString ResetSensors = "Reset Sensors"; - const QString RunningScripts = "Running Scripts..."; - const QString RunClientScriptTests = "Run Client Script Tests"; - const QString RunTimingTests = "Run Timing Tests"; - const QString ScriptedMotorControl = "Enable Scripted Motor Control"; - const QString ShowTrackedObjects = "Show Tracked Objects"; - const QString SendWrongDSConnectVersion = "Send wrong DS connect version"; - const QString SendWrongProtocolVersion = "Send wrong protocol version"; - const QString SetHomeLocation = "Set Home Location"; - const QString ShowBordersEntityNodes = "Show Entity Nodes"; - const QString ShowBoundingCollisionShapes = "Show Bounding Collision Shapes"; - const QString ShowDSConnectTable = "Show Domain Connection Timing"; - const QString ShowMyLookAtVectors = "Show My Eye Vectors"; - const QString ShowOtherLookAtVectors = "Show Other Eye Vectors"; - const QString EnableLookAtSnapping = "Enable LookAt Snapping"; - const QString ShowRealtimeEntityStats = "Show Realtime Entity Stats"; - const QString SimulateEyeTracking = "Simulate"; - const QString SMIEyeTracking = "SMI Eye Tracking"; - const QString SparseTextureManagement = "Enable Sparse Texture Management"; - const QString StartUpLocation = "Start-Up Location"; - const QString Stats = "Show Statistics"; - const QString AnimStats = "Show Animation Stats"; - const QString StopAllScripts = "Stop All Scripts"; - const QString SuppressShortTimings = "Suppress Timings Less than 10ms"; - const QString ThirdPerson = "Third Person"; - const QString ThreePointCalibration = "3 Point Calibration"; - const QString ThrottleFPSIfNotFocus = "Throttle FPS If Not Focus"; // FIXME - this value duplicated in Basic2DWindowOpenGLDisplayPlugin.cpp - const QString ToggleHipsFollowing = "Toggle Hips Following"; - const QString ToolWindow = "Tool Window"; - const QString TransmitterDrive = "Transmitter Drive"; - const QString TurnWithHead = "Turn using Head"; - const QString UseAudioForMouth = "Use Audio for Mouth"; - const QString UseCamera = "Use Camera"; - const QString VelocityFilter = "Velocity Filter"; - const QString VisibleToEveryone = "Everyone"; - const QString VisibleToFriends = "Friends"; - const QString VisibleToNoOne = "No one"; - const QString WorldAxes = "World Axes"; - const QString DesktopTabletToToolbar = "Desktop Tablet Becomes Toolbar"; - const QString HMDTabletToToolbar = "HMD Tablet Becomes Toolbar"; - const QString Shadows = "Shadows"; - const QString AntiAliasing = "Temporal Antialiasing (FXAA if disabled)"; - const QString AmbientOcclusion = "Ambient Occlusion"; - const QString NotificationSounds = "play_notification_sounds"; - const QString NotificationSoundsSnapshot = "play_notification_sounds_snapshot"; - const QString NotificationSoundsTablet = "play_notification_sounds_tablet"; - const QString ForceCoarsePicking = "Force Coarse Picking"; - const QString ComputeBlendshapes = "Compute Blendshapes"; - const QString HighlightTransitions = "Highlight Transitions"; -} - -#endif // hifi_Menu_h +const QString AddRemoveFriends = "Add/Remove Friends..."; +const QString AddressBar = "Show Address Bar"; +const QString Animations = "Animations..."; +const QString AnimDebugDrawAnimPose = "Debug Draw Animation"; +const QString AnimDebugDrawBaseOfSupport = "Debug Draw Base of Support"; +const QString AnimDebugDrawDefaultPose = "Debug Draw Default Pose"; +const QString AnimDebugDrawPosition = "Debug Draw Position"; +const QString AnimDebugDrawOtherSkeletons = "Debug Draw Other Skeletons"; +const QString AskToResetSettings = "Ask To Reset Settings on Start"; +const QString AssetMigration = "ATP Asset Migration"; +const QString AssetServer = "Asset Browser"; +const QString AudioScope = "Show Scope"; +const QString AudioScopeFiftyFrames = "Fifty"; +const QString AudioScopeFiveFrames = "Five"; +const QString AudioScopeFrames = "Display Frames"; +const QString AudioScopePause = "Pause Scope"; +const QString AudioScopeTwentyFrames = "Twenty"; +const QString AudioStatsShowInjectedStreams = "Audio Stats Show Injected Streams"; +const QString AutoMuteAudio = "Auto Mute Microphone"; +const QString AvatarReceiveStats = "Show Receive Stats"; +const QString AvatarBookmarks = "Avatar Bookmarks"; +const QString AvatarPackager = "Avatar Packager"; +const QString Back = "Back"; +const QString BinaryEyelidControl = "Binary Eyelid Control"; +const QString BookmarkAvatar = "Bookmark Avatar"; +const QString BookmarkAvatarEntities = "Bookmark Avatar Entities"; +const QString BookmarkLocation = "Bookmark Location"; +const QString CalibrateCamera = "Calibrate Camera"; +const QString CenterPlayerInView = "Center Player In View"; +const QString Chat = "Chat..."; +const QString ClearDiskCache = "Clear Disk Cache"; +const QString Collisions = "Collisions"; +const QString Connexion = "Activate 3D Connexion Devices"; +const QString Console = "Console..."; +const QString ControlWithSpeech = "Enable Speech Control API"; +const QString CopyAddress = "Copy Address to Clipboard"; +const QString CopyPath = "Copy Path to Clipboard"; +const QString CoupleEyelids = "Couple Eyelids"; +const QString CrashPureVirtualFunction = "Pure Virtual Function Call"; +const QString CrashPureVirtualFunctionThreaded = "Pure Virtual Function Call (threaded)"; +const QString CrashDoubleFree = "Double Free"; +const QString CrashDoubleFreeThreaded = "Double Free (threaded)"; +const QString CrashNullDereference = "Null Dereference"; +const QString CrashNullDereferenceThreaded = "Null Dereference (threaded)"; +const QString CrashAbort = "Abort"; +const QString CrashAbortThreaded = "Abort (threaded)"; +const QString CrashOutOfBoundsVectorAccess = "Out of Bounds Vector Access"; +const QString CrashOutOfBoundsVectorAccessThreaded = "Out of Bounds Vector Access (threaded)"; +const QString CrashNewFault = "New Fault"; +const QString CrashNewFaultThreaded = "New Fault (threaded)"; +const QString CreateEntitiesGrabbable = "Create Entities As Grabbable (except Zones, Particles, and Lights)"; +const QString DeadlockInterface = "Deadlock Interface"; +const QString UnresponsiveInterface = "Unresponsive Interface"; +const QString DecreaseAvatarSize = "Decrease Avatar Size"; +const QString DefaultSkybox = "Default Skybox"; +const QString DeleteAvatarBookmark = "Delete Avatar Bookmark..."; +const QString DeleteAvatarEntitiesBookmark = "Delete Avatar Entities Bookmark"; +const QString DeleteBookmark = "Delete Bookmark..."; +const QString DisableActivityLogger = "Disable Activity Logger"; +const QString DisableEyelidAdjustment = "Disable Eyelid Adjustment"; +const QString DisableLightEntities = "Disable Light Entities"; +const QString DisplayCrashOptions = "Display Crash Options"; +const QString DisplayHandTargets = "Show Hand Targets"; +const QString DisplayModelBounds = "Display Model Bounds"; +const QString DisplayModelTriangles = "Display Model Triangles"; +const QString DisplayModelElementChildProxies = "Display Model Element Children"; +const QString DisplayModelElementProxy = "Display Model Element Bounds"; +const QString DisplayDebugTimingDetails = "Display Timing Details"; +const QString LocationBookmarks = "Bookmarks"; +const QString DontDoPrecisionPicking = "Don't Do Precision Picking"; +const QString DontRenderEntitiesAsScene = "Don't Render Entities as Scene"; +const QString EchoLocalAudio = "Echo Local Audio"; +const QString EchoServerAudio = "Echo Server Audio"; +const QString EnableFlying = "Enable Flying"; +const QString EnableAvatarCollisions = "Enable Avatar Collisions"; +const QString EnableInverseKinematics = "Enable Inverse Kinematics"; +const QString EntityScriptServerLog = "Entity Script Server Log"; +const QString ExpandMyAvatarSimulateTiming = "Expand /myAvatar/simulation"; +const QString ExpandMyAvatarTiming = "Expand /myAvatar"; +const QString ExpandOtherAvatarTiming = "Expand /otherAvatar"; +const QString ExpandPaintGLTiming = "Expand /paintGL"; +const QString ExpandSimulationTiming = "Expand /simulation"; +const QString ExpandPhysicsTiming = "Expand /physics"; +const QString ExpandUpdateTiming = "Expand /update"; +const QString FirstPerson = "First Person"; +const QString FirstPersonHMD = "Enter First Person Mode in HMD"; +const QString FivePointCalibration = "5 Point Calibration"; +const QString FixGaze = "Fix Gaze (no saccade)"; +const QString Forward = "Forward"; +const QString FrameTimer = "Show Timer"; +const QString FullscreenMirror = "Mirror"; +const QString Help = "Help..."; +const QString HomeLocation = "Home "; +const QString IncreaseAvatarSize = "Increase Avatar Size"; +const QString ActionMotorControl = "Enable Default Motor Control"; +const QString LastLocation = "Last Location"; +const QString LoadScript = "Open and Run Script File..."; +const QString LoadScriptURL = "Open and Run Script from URL..."; +const QString LodTools = "LOD Tools"; +const QString Login = "Login/Sign Up"; +const QString Log = "Log"; +const QString LogExtraTimings = "Log Extra Timing Details"; +const QString LowVelocityFilter = "Low Velocity Filter"; +const QString MeshVisible = "Draw Mesh"; +const QString MuteEnvironment = "Mute Environment"; +const QString MuteFaceTracking = "Mute Face Tracking"; +const QString NamesAboveHeads = "Names Above Heads"; +const QString Networking = "Networking..."; +const QString NoFaceTracking = "None"; +const QString OctreeStats = "Entity Statistics"; +const QString OnePointCalibration = "1 Point Calibration"; +const QString OnlyDisplayTopTen = "Only Display Top Ten"; +const QString OpenVrThreadedSubmit = "OpenVR Threaded Submit"; +const QString OutputMenu = "Display"; +const QString Overlays = "Show Overlays"; +const QString PackageModel = "Package Avatar as .fst..."; +const QString Pair = "Pair"; +const QString PhysicsShowOwned = "Highlight Simulation Ownership"; +const QString VerboseLogging = "Verbose Logging"; +const QString PhysicsShowBulletWireframe = "Show Bullet Collision"; +const QString PhysicsShowBulletAABBs = "Show Bullet Bounding Boxes"; +const QString PhysicsShowBulletContactPoints = "Show Bullet Contact Points"; +const QString PhysicsShowBulletConstraints = "Show Bullet Constraints"; +const QString PhysicsShowBulletConstraintLimits = "Show Bullet Constraint Limits"; +const QString PipelineWarnings = "Log Render Pipeline Warnings"; +const QString Preferences = "General..."; +const QString Quit = "Quit"; +const QString ReloadAllScripts = "Reload All Scripts"; +const QString ReloadContent = "Reload Content (Clears all caches)"; +const QString RenderClearKtxCache = "Clear KTX Cache (requires restart)"; +const QString RenderMaxTextureMemory = "Maximum Texture Memory"; +const QString RenderMaxTextureAutomatic = "Automatic Texture Memory"; +const QString RenderMaxTexture4MB = "4 MB"; +const QString RenderMaxTexture64MB = "64 MB"; +const QString RenderMaxTexture256MB = "256 MB"; +const QString RenderMaxTexture512MB = "512 MB"; +const QString RenderMaxTexture1024MB = "1024 MB"; +const QString RenderMaxTexture2048MB = "2048 MB"; +const QString RenderMaxTexture3072MB = "3072 MB"; +const QString RenderMaxTexture4096MB = "4096 MB"; +const QString RenderMaxTexture6144MB = "6144 MB"; +const QString RenderMaxTexture8192MB = "8192 MB"; +const QString RenderSensorToWorldMatrix = "Show SensorToWorld Matrix"; +const QString RenderIKTargets = "Show IK Targets"; +const QString RenderIKConstraints = "Show IK Constraints"; +const QString RenderIKChains = "Show IK Chains"; +const QString RenderDetailedCollision = "Show Detailed Collision"; +const QString ResetAvatarSize = "Reset Avatar Size"; +const QString ResetSensors = "Reset Sensors"; +const QString RunningScripts = "Running Scripts..."; +const QString RunClientScriptTests = "Run Client Script Tests"; +const QString RunTimingTests = "Run Timing Tests"; +const QString ScriptedMotorControl = "Enable Scripted Motor Control"; +const QString ShowTrackedObjects = "Show Tracked Objects"; +const QString SendWrongDSConnectVersion = "Send wrong DS connect version"; +const QString SendWrongProtocolVersion = "Send wrong protocol version"; +const QString SetHomeLocation = "Set Home Location"; +const QString ShowBordersEntityNodes = "Show Entity Nodes"; +const QString ShowBoundingCollisionShapes = "Show Bounding Collision Shapes"; +const QString ShowDSConnectTable = "Show Domain Connection Timing"; +const QString ShowMyLookAtVectors = "Show My Eye Vectors"; +const QString ShowOtherLookAtVectors = "Show Other Eye Vectors"; +const QString EnableLookAtSnapping = "Enable LookAt Snapping"; +const QString ShowRealtimeEntityStats = "Show Realtime Entity Stats"; +const QString SimulateEyeTracking = "Simulate"; +const QString SMIEyeTracking = "SMI Eye Tracking"; +const QString SparseTextureManagement = "Enable Sparse Texture Management"; +const QString StartUpLocation = "Start-Up Location"; +const QString Stats = "Show Statistics"; +const QString AnimStats = "Show Animation Stats"; +const QString StopAllScripts = "Stop All Scripts"; +const QString SuppressShortTimings = "Suppress Timings Less than 10ms"; +const QString ThirdPerson = "Third Person"; +const QString ThreePointCalibration = "3 Point Calibration"; +const QString ThrottleFPSIfNotFocus = + "Throttle FPS If Not Focus"; // FIXME - this value duplicated in Basic2DWindowOpenGLDisplayPlugin.cpp +const QString ToggleHipsFollowing = "Toggle Hips Following"; +const QString ToolWindow = "Tool Window"; +const QString TransmitterDrive = "Transmitter Drive"; +const QString TurnWithHead = "Turn using Head"; +const QString UseAudioForMouth = "Use Audio for Mouth"; +const QString UseCamera = "Use Camera"; +const QString VelocityFilter = "Velocity Filter"; +const QString VisibleToEveryone = "Everyone"; +const QString VisibleToFriends = "Friends"; +const QString VisibleToNoOne = "No one"; +const QString WorldAxes = "World Axes"; +const QString DesktopTabletToToolbar = "Desktop Tablet Becomes Toolbar"; +const QString HMDTabletToToolbar = "HMD Tablet Becomes Toolbar"; +const QString Shadows = "Shadows"; +const QString AntiAliasing = "Temporal Antialiasing (FXAA if disabled)"; +const QString AmbientOcclusion = "Ambient Occlusion"; +const QString NotificationSounds = "play_notification_sounds"; +const QString NotificationSoundsSnapshot = "play_notification_sounds_snapshot"; +const QString NotificationSoundsTablet = "play_notification_sounds_tablet"; +const QString ForceCoarsePicking = "Force Coarse Picking"; +const QString ComputeBlendshapes = "Compute Blendshapes"; +const QString HighlightTransitions = "Highlight Transitions"; +} // namespace MenuOption +#endif // hifi_Menu_h diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js index 50c626b594..ac4bf03655 100644 --- a/scripts/simplifiedUI/ui/simplifiedUI.js +++ b/scripts/simplifiedUI/ui/simplifiedUI.js @@ -222,6 +222,36 @@ function onEmoteAppBarClosed() { emoteAppBarWindow = false; } +var PERMISSION_QML_PATH = Script.resourcesPath() + "qml/hifi/Permission.qml"; +var PERMISSION_WINDOW_TITLE = "Permissions"; +var PERMISSION_WINDOW_PRESENTATION_MODE = Desktop.PresentationMode.NATIVE; +var PERMISSION_WINDOW_WIDTH_PX = 600; +var PERMISSION_WINDOW_HEIGHT_PX = 200; +var PERMISSION_WINDOW_FLAGS = + 0x00000001 | // Qt::Window + 0x00000800 | // Qt::FramelessWindowHint + 0x40000000 | // Qt::NoDropShadowWindowHint + 0x00200000; // Qt::WindowDoesNotAcceptFocus +var PERMISSION_WINDOW_LEFT_MARGIN = 600; +var PERMISSION_WINDOW_BOTTOM_MARGIN = 200; +var permissionWindow = false; +function showPermissionsWindow() { + permissionWindow = Desktop.createWindow(PERMISSION_QML_PATH, { + title: PERMISSION_WINDOW_TITLE, + presentationMode: PERMISSION_WINDOW_PRESENTATION_MODE, + size: { + x: PERMISSION_WINDOW_WIDTH_PX, + y: PERMISSION_WINDOW_HEIGHT_PX + }, + position: { + x: Window.x + PERMISSION_WINDOW_LEFT_MARGIN, + y: Window.y + Window.innerHeight - PERMISSION_WINDOW_BOTTOM_MARGIN + }, + overrideFlags: PERMISSION_WINDOW_FLAGS + }); + // emoteAppBarWindow.fromQml.connect(onMessageFromEmoteAppBar); + // emoteAppBarWindow.closed.connect(onEmoteAppBarClosed); +} var EMOTE_APP_BAR_QML_PATH = Script.resourcesPath() + "qml/hifi/simplifiedUI/emoteApp/bar/EmoteAppBar.qml"; var EMOTE_APP_BAR_WINDOW_TITLE = "Emote"; From 43268c0f6578a1afd3c26e9f3f27d323c821c587 Mon Sep 17 00:00:00 2001 From: milad Date: Mon, 22 Jul 2019 16:20:54 -0700 Subject: [PATCH 02/17] Working QML window --- .../qml/controls/+webengine/FlickableWebViewCore.qml | 4 ++-- interface/resources/qml/hifi/PermissionPopup.qml | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml b/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml index 8b792bf68d..f20117c3bd 100644 --- a/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml +++ b/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml @@ -5,7 +5,7 @@ import QtWebChannel 1.0 import QtQuick.Controls 2.2 import stylesUit 1.0 as StylesUIt -import "../hifi/PermissionPopup.qml" as PermissionPopup +import "../hifi" as Controls Item { id: flick @@ -141,7 +141,7 @@ Item { }); } - PermissionPopup { + Controls.PermissionPopup { id: permissionPopup } diff --git a/interface/resources/qml/hifi/PermissionPopup.qml b/interface/resources/qml/hifi/PermissionPopup.qml index 2b110051ad..3d1e5b992b 100644 --- a/interface/resources/qml/hifi/PermissionPopup.qml +++ b/interface/resources/qml/hifi/PermissionPopup.qml @@ -9,7 +9,6 @@ Item { width: 600 height: 200 z:100 - HifiConstants { id: hifi } // anchors.top: buttons.bottom Rectangle { @@ -21,7 +20,7 @@ Item { Row { id: webAccessHeaderContainer height: root.height * 0.30 - RalewayLight { + HifiStyles.RalewayLight { id: webAccessHeaderText text: "WEB CAMERA ACCESS REQUEST" width: mainContainer.width @@ -37,7 +36,7 @@ Item { id: webAccessInfoContainer anchors.top: webAccessHeaderContainer.bottom anchors.topMargin: 10 - RalewayLight { + HifiStyles.RalewayLight { width: mainContainer.width id: webAccessInfoText horizontalAlignment: Text.AlignHCenter @@ -57,7 +56,7 @@ Item { anchors.horizontalCenter: webAccessInfoContainer.horizontalCenter anchors.verticalCenter: webAccessInfoContainer.verticalCenter property real space: 5 - Button { + HifiControls.Button { anchors.left: permissionsButtonRow.left id: leftButton anchors.leftMargin: permissionsButtonRow.space @@ -68,7 +67,7 @@ Item { enabled: true width: 155 } - Button { + HifiControls.Button { id: rightButton anchors.left: leftButton.right anchors.leftMargin: permissionsButtonRow.space From fb7a66b110a47948af9afd647622bf6a9a49d912 Mon Sep 17 00:00:00 2001 From: milad Date: Mon, 22 Jul 2019 20:48:18 -0700 Subject: [PATCH 03/17] working version with just flickable --- .../+webengine/FlickableWebViewCore.qml | 24 ++++++++++--- .../resources/qml/hifi/PermissionPopup.qml | 21 ++++++++--- .../qml/hifi/PermissionPopupBackground.qml | 36 +++++++++++-------- scripts/simplifiedUI/ui/simplifiedUI.js | 30 ---------------- 4 files changed, 56 insertions(+), 55 deletions(-) diff --git a/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml b/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml index f20117c3bd..aad2864e74 100644 --- a/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml +++ b/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml @@ -141,14 +141,17 @@ Item { }); } - Controls.PermissionPopup { - id: permissionPopup - } - onFeaturePermissionRequested: { + console.log('feature'); + console.log(JSON.stringify(feature, null, 4)); + + if (feature === 0) return; console.log("Requesting permissions:") permissionPopup.visible = true; - // grantFeaturePermission(securityOrigin, feature, false); + console.log('security origin'); + console.log(JSON.stringify(securityOrigin, null, 4)); + permissionPopup.permissionsOptions.securityOrigin = securityOrigin; + permissionPopup.permissionsOptions.feature = feature; } //disable popup @@ -193,4 +196,15 @@ Item { webViewCore.focus = false; } } + + Controls.PermissionPopupBackground { + id: permissionPopup + onSendPermission: { + console.log("security origin we are allowing", securityOrigin); + console.log("feature we are allowing", securityOrigin); + console.log("shouldGivePermission:", shouldGivePermission); + webViewCore.grantFeaturePermission(securityOrigin, feature, shouldGivePermission) + } + } + } diff --git a/interface/resources/qml/hifi/PermissionPopup.qml b/interface/resources/qml/hifi/PermissionPopup.qml index 3d1e5b992b..75572efc42 100644 --- a/interface/resources/qml/hifi/PermissionPopup.qml +++ b/interface/resources/qml/hifi/PermissionPopup.qml @@ -8,7 +8,10 @@ Item { id: root width: 600 height: 200 + anchors.horizontalCenter: parent.horizontalCenter + anchors.verticalCenter: parent.verticalCenter z:100 + signal permissionButtonPressed(real buttonNumber) // anchors.top: buttons.bottom Rectangle { @@ -20,7 +23,7 @@ Item { Row { id: webAccessHeaderContainer height: root.height * 0.30 - HifiStyles.RalewayLight { + HifiStyles.RalewayBold { id: webAccessHeaderText text: "WEB CAMERA ACCESS REQUEST" width: mainContainer.width @@ -41,7 +44,7 @@ Item { id: webAccessInfoText horizontalAlignment: Text.AlignHCenter text: "This domain is requesting access to your web camera and microphone" - size: 17 + size: 15 color: hifi.colors.black } } @@ -49,7 +52,7 @@ Item { Rectangle { id: permissionsButtonRow color: "#AAAAAA" - anchors.topMargin: 10 + anchors.topMargin: 35 height: 50 width: leftButton.width + rightButton.width + (this.space * 3) anchors.top: webAccessInfoContainer.bottom @@ -63,9 +66,13 @@ Item { text: "Yes allow access" color: hifi.buttons.blue - colorScheme: root.colorScheme + // colorScheme: root.colorScheme enabled: true width: 155 + onClicked: { + console.log("\n\n JUST CLICKED BUTTON 0, GOING TO SEND SIGNAL!") + root.permissionButtonPressed(0) + } } HifiControls.Button { id: rightButton @@ -73,8 +80,12 @@ Item { anchors.leftMargin: permissionsButtonRow.space text: "Don't Allow" color: hifi.buttons.red - colorScheme: root.colorScheme + // colorScheme: root.colorScheme enabled: true + onClicked: { + console.log("\n\n JUST CLICKED BUTTON 1, GOING TO SEND SIGNAL!") + root.permissionButtonPressed(1) + } } } } diff --git a/interface/resources/qml/hifi/PermissionPopupBackground.qml b/interface/resources/qml/hifi/PermissionPopupBackground.qml index 25db8bb74b..252067b076 100644 --- a/interface/resources/qml/hifi/PermissionPopupBackground.qml +++ b/interface/resources/qml/hifi/PermissionPopupBackground.qml @@ -7,28 +7,34 @@ import "../." Rectangle { id: permissionPopupBackground anchors.fill: parent - color: QT.rgba(0, 0, 0, 0.7); + color: Qt.rgba(0, 0, 0, 0.5); HifiConstants { id: hifi } + visible: true + property variant permissionsOptions: {'securityOrigin':'none','feature':'none'} + signal sendPermission(string securityOrigin, string feature, bool shouldGivePermission) + + Component.onCompleted: { + console.log("loaded component"); + // console.log("\n\n TESTING!! \n\n") + } PermissionPopup { id: permissionPopupItem - visible: false Component.onCompleted: { - console.log("\n\n TESTING!! \n\n") + console.log("test"); + // console.log("\n\n TESTING!! \n\n") } - } - - onFeaturePermissionRequested: { - permissionPopupItem.onLeftButtonClicked = function() { - console.log("TEST FOR PERMISSIONS :: LEFT CLICKED"); - grantFeaturePermission(securityOrigin, feature, true); - .visible = false; - } - permissionPopupItem.onRightButtonClicked = function() { - console.log("TEST FOR PERMISSIONS :: RIGHT CLICKED"); - grantFeaturePermission(securityOrigin, feature, false); + onPermissionButtonPressed: { + console.log("JUST MADE IT TO ON PERMISSIONS PRESSEED!"); + console.log(buttonNumber); + if (buttonNumber === 0) { + permissionPopupBackground.sendPermission(permissionsOptions.securityOrigin, permissionsOptions.feature, true) + } else { + permissionPopupBackground.sendPermission(permissionsOptions.securityOrigin, permissionsOptions.feature, false) + } permissionPopupBackground.visible = false; + permissionsOptions.securityOrigin = "none"; + permissionsOptions.feature = "none"; } - permissionPopupBackground.visible = true; } } diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js index ac4bf03655..50c626b594 100644 --- a/scripts/simplifiedUI/ui/simplifiedUI.js +++ b/scripts/simplifiedUI/ui/simplifiedUI.js @@ -222,36 +222,6 @@ function onEmoteAppBarClosed() { emoteAppBarWindow = false; } -var PERMISSION_QML_PATH = Script.resourcesPath() + "qml/hifi/Permission.qml"; -var PERMISSION_WINDOW_TITLE = "Permissions"; -var PERMISSION_WINDOW_PRESENTATION_MODE = Desktop.PresentationMode.NATIVE; -var PERMISSION_WINDOW_WIDTH_PX = 600; -var PERMISSION_WINDOW_HEIGHT_PX = 200; -var PERMISSION_WINDOW_FLAGS = - 0x00000001 | // Qt::Window - 0x00000800 | // Qt::FramelessWindowHint - 0x40000000 | // Qt::NoDropShadowWindowHint - 0x00200000; // Qt::WindowDoesNotAcceptFocus -var PERMISSION_WINDOW_LEFT_MARGIN = 600; -var PERMISSION_WINDOW_BOTTOM_MARGIN = 200; -var permissionWindow = false; -function showPermissionsWindow() { - permissionWindow = Desktop.createWindow(PERMISSION_QML_PATH, { - title: PERMISSION_WINDOW_TITLE, - presentationMode: PERMISSION_WINDOW_PRESENTATION_MODE, - size: { - x: PERMISSION_WINDOW_WIDTH_PX, - y: PERMISSION_WINDOW_HEIGHT_PX - }, - position: { - x: Window.x + PERMISSION_WINDOW_LEFT_MARGIN, - y: Window.y + Window.innerHeight - PERMISSION_WINDOW_BOTTOM_MARGIN - }, - overrideFlags: PERMISSION_WINDOW_FLAGS - }); - // emoteAppBarWindow.fromQml.connect(onMessageFromEmoteAppBar); - // emoteAppBarWindow.closed.connect(onEmoteAppBarClosed); -} var EMOTE_APP_BAR_QML_PATH = Script.resourcesPath() + "qml/hifi/simplifiedUI/emoteApp/bar/EmoteAppBar.qml"; var EMOTE_APP_BAR_WINDOW_TITLE = "Emote"; From cd5df63f51e64729fe68d7037912ea8d95d2e298 Mon Sep 17 00:00:00 2001 From: milad Date: Tue, 23 Jul 2019 20:22:50 -0700 Subject: [PATCH 04/17] working version for all qml web files --- .../qml/+webengine/TabletBrowser.qml | 18 ++++++++-- .../+webengine/FlickableWebViewCore.qml | 33 ++++++++++--------- .../controlsUit/+webengine/BaseWebView.qml | 20 +++++++++-- .../{hifi => controlsUit}/PermissionPopup.qml | 24 ++++++++++++-- .../PermissionPopupBackground.qml | 17 +++++----- interface/resources/qml/controlsUit/qmldir | 2 ++ .../scripting/DesktopScriptingInterface.cpp | 2 +- 7 files changed, 85 insertions(+), 31 deletions(-) rename interface/resources/qml/{hifi => controlsUit}/PermissionPopup.qml (69%) rename interface/resources/qml/{hifi => controlsUit}/PermissionPopupBackground.qml (62%) diff --git a/interface/resources/qml/+webengine/TabletBrowser.qml b/interface/resources/qml/+webengine/TabletBrowser.qml index 3bb2c17ba6..b5d0b16337 100644 --- a/interface/resources/qml/+webengine/TabletBrowser.qml +++ b/interface/resources/qml/+webengine/TabletBrowser.qml @@ -14,7 +14,6 @@ Item { HifiStyles.HifiConstants { id: hifistyles } height: 600 - property variant permissionsBar: {'securityOrigin':'none','feature':'none'} property alias url: webview.url property bool canGoBack: webview.canGoBack @@ -30,6 +29,10 @@ Item { webview.profile = profile; } + onUrlChanged: { + permissionPopupBackground.visible = false; + } + WebEngineView { id: webview objectName: "webEngineView" @@ -84,7 +87,11 @@ Item { } onFeaturePermissionRequested: { - grantFeaturePermission(securityOrigin, feature, false); + permissionPopupBackground.permissionsOptions.securityOrigin = securityOrigin; + permissionPopupBackground.permissionsOptions.feature = feature; + + permissionPopupBackground.visible = true; + // grantFeaturePermission(securityOrigin, feature, false); } onLoadingChanged: { @@ -122,4 +129,11 @@ Item { break; } } + + HifiControls.PermissionPopupBackground { + id: permissionPopupBackground + onSendPermission: { + webview.grantFeaturePermission(securityOrigin, feature, shouldGivePermission) + } + } } diff --git a/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml b/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml index aad2864e74..88461f882e 100644 --- a/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml +++ b/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml @@ -5,7 +5,7 @@ import QtWebChannel 1.0 import QtQuick.Controls 2.2 import stylesUit 1.0 as StylesUIt -import "../hifi" as Controls +import controlsUit 1.0 as ControlsUit Item { id: flick @@ -29,6 +29,10 @@ Item { property bool blurOnCtrlShift: true + onUrlChanged: { + permissionPopupBackground.visible = false; + } + StylesUIt.HifiConstants { id: hifi } @@ -68,6 +72,12 @@ Item { } function onLoadingChanged(loadRequest) { + console.log("WebEngineView.LoadStartedStatus", WebEngineView.LoadStartedStatus); + console.log("WebEngineView.LoadSucceededStatus", WebEngineView.LoadSucceededStatus); + console.log("WebEngineView.LoadFailedStatus", WebEngineView.LoadFailedStatus); + + console.log("status:" + loadRequest.status); + if (WebEngineView.LoadStartedStatus === loadRequest.status) { // Required to support clicking on "hifi://" links @@ -142,16 +152,10 @@ Item { } onFeaturePermissionRequested: { - console.log('feature'); - console.log(JSON.stringify(feature, null, 4)); + permissionPopupBackground.permissionsOptions.securityOrigin = securityOrigin; + permissionPopupBackground.permissionsOptions.feature = feature; - if (feature === 0) return; - console.log("Requesting permissions:") - permissionPopup.visible = true; - console.log('security origin'); - console.log(JSON.stringify(securityOrigin, null, 4)); - permissionPopup.permissionsOptions.securityOrigin = securityOrigin; - permissionPopup.permissionsOptions.feature = feature; + permissionPopupBackground.visible = true; } //disable popup @@ -197,13 +201,10 @@ Item { } } - Controls.PermissionPopupBackground { - id: permissionPopup + ControlsUit.PermissionPopupBackground { + id: permissionPopupBackground onSendPermission: { - console.log("security origin we are allowing", securityOrigin); - console.log("feature we are allowing", securityOrigin); - console.log("shouldGivePermission:", shouldGivePermission); - webViewCore.grantFeaturePermission(securityOrigin, feature, shouldGivePermission) + webViewCore.grantFeaturePermission(securityOrigin, feature, shouldGivePermission); } } diff --git a/interface/resources/qml/controlsUit/+webengine/BaseWebView.qml b/interface/resources/qml/controlsUit/+webengine/BaseWebView.qml index faf80b2b11..677775e774 100644 --- a/interface/resources/qml/controlsUit/+webengine/BaseWebView.qml +++ b/interface/resources/qml/controlsUit/+webengine/BaseWebView.qml @@ -10,10 +10,11 @@ import QtQuick 2.7 import QtWebEngine 1.5 +import controlsUit 1.0 as ControlsUit WebEngineView { id: root - + Component.onCompleted: { console.log("Connecting JS messaging to Hifi Logging") // Ensure the JS from the web-engine makes it to our logging @@ -22,6 +23,10 @@ WebEngineView { }); } + onUrlChanged: { + permissionPopupBackground.visible = false; + } + onLoadingChanged: { // Required to support clicking on "hifi://" links if (WebEngineView.LoadStartedStatus == loadRequest.status) { @@ -37,6 +42,17 @@ WebEngineView { WebSpinner { } onFeaturePermissionRequested: { - grantFeaturePermission(securityOrigin, feature, false); + permissionPopupBackground.permissionsOptions.securityOrigin = securityOrigin; + permissionPopupBackground.permissionsOptions.feature = feature; + + permissionPopupBackground.visible = true; + } + + ControlsUit.PermissionPopupBackground { + z: 100 + id: permissionPopupBackground + onSendPermission: { + root.grantFeaturePermission(securityOrigin, feature, shouldGivePermission); + } } } diff --git a/interface/resources/qml/hifi/PermissionPopup.qml b/interface/resources/qml/controlsUit/PermissionPopup.qml similarity index 69% rename from interface/resources/qml/hifi/PermissionPopup.qml rename to interface/resources/qml/controlsUit/PermissionPopup.qml index 75572efc42..9fadd91ffd 100644 --- a/interface/resources/qml/hifi/PermissionPopup.qml +++ b/interface/resources/qml/controlsUit/PermissionPopup.qml @@ -1,4 +1,5 @@ import QtQuick 2.5 +import QtWebEngine 1.5 import controlsUit 1.0 as HifiControls import stylesUit 1.0 as HifiStyles import "../windows" as Windows @@ -11,7 +12,26 @@ Item { anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter z:100 + property var permissionLanguage: { + "test": "test" + } + property int currentRequestedPermission signal permissionButtonPressed(real buttonNumber) + + Component.onCompleted: { + console.log("loaded component"); + // console.log("\n\n TESTING!! \n\n") + console.log("WebEngineView.MediaAudioCapture", WebEngineView.MediaAudioCapture) + // root.permissionLanguage["test"] = "test" + root.permissionLanguage[WebEngineView.MediaAudioCapture] = "access an audio input device"; + root.permissionLanguage[WebEngineView.MediaVideoCapture] = "access a video device, like your webcam"; + root.permissionLanguage[WebEngineView.MediaAudioVideoCapture] = "access an audio input device and video device"; + root.permissionLanguage[WebEngineView.Geolocation] = "access your location"; + root.permissionLanguage[WebEngineView.DesktopVideoCapture] = "capture video from your desktop"; + root.permissionLanguage[WebEngineView.DesktopAudioVideoCapture] = "capture audio and video from your desktop"; + console.log(JSON.stringify(root.permissionLanguage)) + + } // anchors.top: buttons.bottom Rectangle { @@ -25,7 +45,7 @@ Item { height: root.height * 0.30 HifiStyles.RalewayBold { id: webAccessHeaderText - text: "WEB CAMERA ACCESS REQUEST" + text: "REQUEST FOR DEVICE ACCESS" width: mainContainer.width horizontalAlignment: Text.AlignHCenter anchors.bottom: parent.bottom @@ -43,7 +63,7 @@ Item { width: mainContainer.width id: webAccessInfoText horizontalAlignment: Text.AlignHCenter - text: "This domain is requesting access to your web camera and microphone" + text: "This website is attempting to " + root.permissionLanguage[root.currentRequestedPermission] + "." size: 15 color: hifi.colors.black } diff --git a/interface/resources/qml/hifi/PermissionPopupBackground.qml b/interface/resources/qml/controlsUit/PermissionPopupBackground.qml similarity index 62% rename from interface/resources/qml/hifi/PermissionPopupBackground.qml rename to interface/resources/qml/controlsUit/PermissionPopupBackground.qml index 252067b076..a6d300beb1 100644 --- a/interface/resources/qml/hifi/PermissionPopupBackground.qml +++ b/interface/resources/qml/controlsUit/PermissionPopupBackground.qml @@ -5,13 +5,13 @@ import "../windows" import "../." Rectangle { - id: permissionPopupBackground + id: root anchors.fill: parent color: Qt.rgba(0, 0, 0, 0.5); HifiConstants { id: hifi } - visible: true - property variant permissionsOptions: {'securityOrigin':'none','feature':'none'} - signal sendPermission(string securityOrigin, string feature, bool shouldGivePermission) + visible: false + property variant permissionsOptions: {'securityOrigin':'none','feature': -1} + signal sendPermission(string securityOrigin, int feature, bool shouldGivePermission) Component.onCompleted: { console.log("loaded component"); @@ -21,6 +21,7 @@ Rectangle { PermissionPopup { id: permissionPopupItem Component.onCompleted: { + permissionPopupItem.currentRequestedPermission = permissionsOptions.feature; console.log("test"); // console.log("\n\n TESTING!! \n\n") } @@ -28,13 +29,13 @@ Rectangle { console.log("JUST MADE IT TO ON PERMISSIONS PRESSEED!"); console.log(buttonNumber); if (buttonNumber === 0) { - permissionPopupBackground.sendPermission(permissionsOptions.securityOrigin, permissionsOptions.feature, true) + root.sendPermission(permissionsOptions.securityOrigin, permissionsOptions.feature, true) } else { - permissionPopupBackground.sendPermission(permissionsOptions.securityOrigin, permissionsOptions.feature, false) + root.sendPermission(permissionsOptions.securityOrigin, permissionsOptions.feature, false) } - permissionPopupBackground.visible = false; + root.visible = false; permissionsOptions.securityOrigin = "none"; - permissionsOptions.feature = "none"; + permissionsOptions.feature = -1; } } } diff --git a/interface/resources/qml/controlsUit/qmldir b/interface/resources/qml/controlsUit/qmldir index e1665df40e..f8bf4cf76d 100644 --- a/interface/resources/qml/controlsUit/qmldir +++ b/interface/resources/qml/controlsUit/qmldir @@ -15,6 +15,8 @@ Key 1.0 Key.qml Keyboard 1.0 Keyboard.qml Label 1.0 Label.qml QueuedButton 1.0 QueuedButton.qml +PermissionPopup 1.0 PermissionPopup.qml +PermissionPopupBackground 1.0 PermissionPopupBackground.qml RadioButton 1.0 RadioButton.qml ScrollBar 1.0 ScrollBar.qml Separator 1.0 Separator.qml diff --git a/interface/src/scripting/DesktopScriptingInterface.cpp b/interface/src/scripting/DesktopScriptingInterface.cpp index a1c8e4fc6c..9a5759f086 100644 --- a/interface/src/scripting/DesktopScriptingInterface.cpp +++ b/interface/src/scripting/DesktopScriptingInterface.cpp @@ -140,6 +140,6 @@ InteractiveWindowPointer DesktopScriptingInterface::createWindowOnThread(const Q return nullptr; } InteractiveWindowPointer window = new InteractiveWindow(sourceUrl, properties); - window->moveToThread(targetThread); + // window->moveToThread(targetThread); return window; } From b0bc4639becaab2ef44659bb7759f49583475570 Mon Sep 17 00:00:00 2001 From: milad Date: Tue, 23 Jul 2019 20:26:01 -0700 Subject: [PATCH 05/17] removed temp folder --- browserUI/warning.qml | 67 ------------------------------------------- 1 file changed, 67 deletions(-) delete mode 100644 browserUI/warning.qml diff --git a/browserUI/warning.qml b/browserUI/warning.qml deleted file mode 100644 index 515f69fb5b..0000000000 --- a/browserUI/warning.qml +++ /dev/null @@ -1,67 +0,0 @@ - Rectangle { - id:permissionsContainer - visible:false - color: "#000000" - width: parent.width - anchors.top: buttons.bottom - height:40 - z:100 - gradient: Gradient { - GradientStop { position: 0.0; color: "black" } - GradientStop { position: 1.0; color: "grey" } - } - - RalewayLight { - id: permissionsInfo - anchors.right:permissionsRow.left - anchors.rightMargin: 32 - anchors.topMargin:8 - anchors.top:parent.top - text: "This site wants to use your microphone/camera" - size: 18 - color: hifi.colors.white - } - - Row { - id: permissionsRow - spacing: 4 - anchors.top:parent.top - anchors.topMargin: 8 - anchors.right: parent.right - visible: true - z:101 - - Button { - id:allow - text: "Allow" - color: hifi.buttons.blue - colorScheme: root.colorScheme - width: 120 - enabled: true - onClicked: root.allowPermissions(); - z:101 - } - - Button { - id:block - text: "Block" - color: hifi.buttons.red - colorScheme: root.colorScheme - width: 120 - enabled: true - onClicked: root.hidePermissionsBar(); - z:101 - } - } - } - - function hidePermissionsBar(){ - permissionsContainer.visible=false; - } - - function allowPermissions(){ - webview.grantFeaturePermission(permissionsBar.securityOrigin, permissionsBar.feature, true); - hidePermissionsBar(); - } - - \ No newline at end of file From 2b4dd327ec8949479a360b7954967d3e9444e0b4 Mon Sep 17 00:00:00 2001 From: milad Date: Tue, 23 Jul 2019 20:27:29 -0700 Subject: [PATCH 06/17] removed log statements --- .../qml/controls/+webengine/FlickableWebViewCore.qml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml b/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml index 88461f882e..e1bb0b9372 100644 --- a/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml +++ b/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml @@ -72,12 +72,6 @@ Item { } function onLoadingChanged(loadRequest) { - console.log("WebEngineView.LoadStartedStatus", WebEngineView.LoadStartedStatus); - console.log("WebEngineView.LoadSucceededStatus", WebEngineView.LoadSucceededStatus); - console.log("WebEngineView.LoadFailedStatus", WebEngineView.LoadFailedStatus); - - console.log("status:" + loadRequest.status); - if (WebEngineView.LoadStartedStatus === loadRequest.status) { // Required to support clicking on "hifi://" links From 189809dc2ce6308c642d79df54b959e7a5efa3ee Mon Sep 17 00:00:00 2001 From: milad Date: Wed, 24 Jul 2019 11:33:32 -0700 Subject: [PATCH 07/17] Fixed undefined error when displaying from the dictionary --- .../+webengine/FlickableWebViewCore.qml | 4 +-- .../qml/controlsUit/PermissionPopup.qml | 32 +++++++------------ .../controlsUit/PermissionPopupBackground.qml | 29 +++++++---------- 3 files changed, 24 insertions(+), 41 deletions(-) diff --git a/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml b/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml index e1bb0b9372..f8343db807 100644 --- a/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml +++ b/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml @@ -146,8 +146,8 @@ Item { } onFeaturePermissionRequested: { - permissionPopupBackground.permissionsOptions.securityOrigin = securityOrigin; - permissionPopupBackground.permissionsOptions.feature = feature; + permissionPopupBackground.securityOrigin = securityOrigin; + permissionPopupBackground.feature = feature; permissionPopupBackground.visible = true; } diff --git a/interface/resources/qml/controlsUit/PermissionPopup.qml b/interface/resources/qml/controlsUit/PermissionPopup.qml index 9fadd91ffd..f1f8b50a6e 100644 --- a/interface/resources/qml/controlsUit/PermissionPopup.qml +++ b/interface/resources/qml/controlsUit/PermissionPopup.qml @@ -9,31 +9,25 @@ Item { id: root width: 600 height: 200 + z:100 anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter - z:100 - property var permissionLanguage: { - "test": "test" - } - property int currentRequestedPermission + readonly property var permissionLanguage: ({ + [WebEngineView.MediaAudioCapture]: "access an audio input device", + [WebEngineView.MediaVideoCapture]: "access a video device, like your webcam", + [WebEngineView.MediaAudioVideoCapture]: "access an audio input device and video device", + [WebEngineView.Geolocation]: "access your location", + [WebEngineView.DesktopVideoCapture]: "capture video from your desktop", + [WebEngineView.DesktopAudioVideoCapture]: "capture audio and video from your desktop" + }) + property string currentRequestedPermission signal permissionButtonPressed(real buttonNumber) Component.onCompleted: { - console.log("loaded component"); - // console.log("\n\n TESTING!! \n\n") - console.log("WebEngineView.MediaAudioCapture", WebEngineView.MediaAudioCapture) - // root.permissionLanguage["test"] = "test" - root.permissionLanguage[WebEngineView.MediaAudioCapture] = "access an audio input device"; - root.permissionLanguage[WebEngineView.MediaVideoCapture] = "access a video device, like your webcam"; - root.permissionLanguage[WebEngineView.MediaAudioVideoCapture] = "access an audio input device and video device"; - root.permissionLanguage[WebEngineView.Geolocation] = "access your location"; - root.permissionLanguage[WebEngineView.DesktopVideoCapture] = "capture video from your desktop"; - root.permissionLanguage[WebEngineView.DesktopAudioVideoCapture] = "capture audio and video from your desktop"; console.log(JSON.stringify(root.permissionLanguage)) - + console.log("\n\n\n\n\n current permission:" + root.currentRequestedPermission); } - // anchors.top: buttons.bottom Rectangle { id: mainContainer width: root.width @@ -86,11 +80,9 @@ Item { text: "Yes allow access" color: hifi.buttons.blue - // colorScheme: root.colorScheme enabled: true width: 155 onClicked: { - console.log("\n\n JUST CLICKED BUTTON 0, GOING TO SEND SIGNAL!") root.permissionButtonPressed(0) } } @@ -100,10 +92,8 @@ Item { anchors.leftMargin: permissionsButtonRow.space text: "Don't Allow" color: hifi.buttons.red - // colorScheme: root.colorScheme enabled: true onClicked: { - console.log("\n\n JUST CLICKED BUTTON 1, GOING TO SEND SIGNAL!") root.permissionButtonPressed(1) } } diff --git a/interface/resources/qml/controlsUit/PermissionPopupBackground.qml b/interface/resources/qml/controlsUit/PermissionPopupBackground.qml index a6d300beb1..74170d2e33 100644 --- a/interface/resources/qml/controlsUit/PermissionPopupBackground.qml +++ b/interface/resources/qml/controlsUit/PermissionPopupBackground.qml @@ -8,34 +8,27 @@ Rectangle { id: root anchors.fill: parent color: Qt.rgba(0, 0, 0, 0.5); - HifiConstants { id: hifi } visible: false - property variant permissionsOptions: {'securityOrigin':'none','feature': -1} - signal sendPermission(string securityOrigin, int feature, bool shouldGivePermission) - - Component.onCompleted: { - console.log("loaded component"); - // console.log("\n\n TESTING!! \n\n") + property var permissionsOptions: ({'securityOrigin':'none','feature': 'none'}) + property string securityOrigin: 'none' + property string feature: 'none' + signal sendPermission(string securityOrigin, string feature, bool shouldGivePermission) + + onFeatureChanged: { + permissionPopupItem.currentRequestedPermission = feature; } PermissionPopup { id: permissionPopupItem - Component.onCompleted: { - permissionPopupItem.currentRequestedPermission = permissionsOptions.feature; - console.log("test"); - // console.log("\n\n TESTING!! \n\n") - } onPermissionButtonPressed: { - console.log("JUST MADE IT TO ON PERMISSIONS PRESSEED!"); - console.log(buttonNumber); if (buttonNumber === 0) { - root.sendPermission(permissionsOptions.securityOrigin, permissionsOptions.feature, true) + root.sendPermission(securityOrigin, feature, true) } else { - root.sendPermission(permissionsOptions.securityOrigin, permissionsOptions.feature, false) + root.sendPermission(securityOrigin, feature, false) } root.visible = false; - permissionsOptions.securityOrigin = "none"; - permissionsOptions.feature = -1; + securityOrigin = 'none'; + feature = 'none'; } } } From 9f0fc8bd06979dc0692e1bcebb224895fbc8b924 Mon Sep 17 00:00:00 2001 From: milad Date: Wed, 24 Jul 2019 11:39:50 -0700 Subject: [PATCH 08/17] removed logs and prototype code --- .../qml/+webengine/TabletBrowser.qml | 1 - .../qml/controlsUit/PermissionPopup.qml | 5 - .../controlsUit/PermissionPopupBackground.qml | 1 - interface/src/Menu.cpp | 454 +++++++++--------- interface/src/Menu.h | 400 +++++++-------- .../scripting/DesktopScriptingInterface.cpp | 2 +- 6 files changed, 429 insertions(+), 434 deletions(-) diff --git a/interface/resources/qml/+webengine/TabletBrowser.qml b/interface/resources/qml/+webengine/TabletBrowser.qml index b5d0b16337..0e378857cb 100644 --- a/interface/resources/qml/+webengine/TabletBrowser.qml +++ b/interface/resources/qml/+webengine/TabletBrowser.qml @@ -91,7 +91,6 @@ Item { permissionPopupBackground.permissionsOptions.feature = feature; permissionPopupBackground.visible = true; - // grantFeaturePermission(securityOrigin, feature, false); } onLoadingChanged: { diff --git a/interface/resources/qml/controlsUit/PermissionPopup.qml b/interface/resources/qml/controlsUit/PermissionPopup.qml index f1f8b50a6e..08ed696a0f 100644 --- a/interface/resources/qml/controlsUit/PermissionPopup.qml +++ b/interface/resources/qml/controlsUit/PermissionPopup.qml @@ -23,11 +23,6 @@ Item { property string currentRequestedPermission signal permissionButtonPressed(real buttonNumber) - Component.onCompleted: { - console.log(JSON.stringify(root.permissionLanguage)) - console.log("\n\n\n\n\n current permission:" + root.currentRequestedPermission); - } - Rectangle { id: mainContainer width: root.width diff --git a/interface/resources/qml/controlsUit/PermissionPopupBackground.qml b/interface/resources/qml/controlsUit/PermissionPopupBackground.qml index 74170d2e33..9cb0e9fb95 100644 --- a/interface/resources/qml/controlsUit/PermissionPopupBackground.qml +++ b/interface/resources/qml/controlsUit/PermissionPopupBackground.qml @@ -9,7 +9,6 @@ Rectangle { anchors.fill: parent color: Qt.rgba(0, 0, 0, 0.5); visible: false - property var permissionsOptions: ({'securityOrigin':'none','feature': 'none'}) property string securityOrigin: 'none' property string feature: 'none' signal sendPermission(string securityOrigin, string feature, bool shouldGivePermission) diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 2d388c4146..4cf78c23ee 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -56,12 +56,6 @@ #include "scripting/RenderScriptingInterface.h" -/* -QSharedPointer getOff() { - return DependencyManager::get(); -} -*/ - extern bool DEV_DECIMATE_TEXTURES; Menu* Menu::getInstance() { @@ -82,44 +76,45 @@ Menu::Menu() { addActionToQMenuAndActionHash(fileMenu, MenuOption::Login); // connect to the appropriate signal of the AccountManager so that we can change the Login/Logout menu item - connect(accountManager.data(), &AccountManager::profileChanged, dialogsManager.data(), - &DialogsManager::toggleLoginDialog); - connect(accountManager.data(), &AccountManager::logoutComplete, dialogsManager.data(), - &DialogsManager::toggleLoginDialog); + connect(accountManager.data(), &AccountManager::profileChanged, + dialogsManager.data(), &DialogsManager::toggleLoginDialog); + connect(accountManager.data(), &AccountManager::logoutComplete, + dialogsManager.data(), &DialogsManager::toggleLoginDialog); } // File > Quit addActionToQMenuAndActionHash(fileMenu, MenuOption::Quit, Qt::CTRL | Qt::Key_Q, qApp, SLOT(quit()), QAction::QuitRole); + // Edit menu ---------------------------------- MenuWrapper* editMenu = addMenu("Edit"); // Edit > Cut auto cutAction = addActionToQMenuAndActionHash(editMenu, "Cut", QKeySequence::Cut); connect(cutAction, &QAction::triggered, [] { - QKeyEvent* keyEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_X, Qt::ControlModifier); - QCoreApplication::postEvent(QCoreApplication::instance(), keyEvent); + QKeyEvent* keyEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_X, Qt::ControlModifier); + QCoreApplication::postEvent(QCoreApplication::instance(), keyEvent); }); // Edit > Copy auto copyAction = addActionToQMenuAndActionHash(editMenu, "Copy", QKeySequence::Copy); connect(copyAction, &QAction::triggered, [] { - QKeyEvent* keyEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_C, Qt::ControlModifier); - QCoreApplication::postEvent(QCoreApplication::instance(), keyEvent); + QKeyEvent* keyEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_C, Qt::ControlModifier); + QCoreApplication::postEvent(QCoreApplication::instance(), keyEvent); }); // Edit > Paste auto pasteAction = addActionToQMenuAndActionHash(editMenu, "Paste", QKeySequence::Paste); connect(pasteAction, &QAction::triggered, [] { - QKeyEvent* keyEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_V, Qt::ControlModifier); - QCoreApplication::postEvent(QCoreApplication::instance(), keyEvent); + QKeyEvent* keyEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_V, Qt::ControlModifier); + QCoreApplication::postEvent(QCoreApplication::instance(), keyEvent); }); // Edit > Delete auto deleteAction = addActionToQMenuAndActionHash(editMenu, "Delete", QKeySequence::Delete); connect(deleteAction, &QAction::triggered, [] { - QKeyEvent* keyEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_Delete, Qt::NoModifier); - QCoreApplication::postEvent(QCoreApplication::instance(), keyEvent); + QKeyEvent* keyEvent = new QKeyEvent(QEvent::KeyPress, Qt::Key_Delete, Qt::NoModifier); + QCoreApplication::postEvent(QCoreApplication::instance(), keyEvent); }); editMenu->addSeparator(); @@ -138,7 +133,8 @@ Menu::Menu() { editMenu->addSeparator(); // Edit > Asset Browser - auto assetServerAction = addActionToQMenuAndActionHash(editMenu, MenuOption::AssetServer, Qt::CTRL | Qt::SHIFT | Qt::Key_A, + auto assetServerAction = addActionToQMenuAndActionHash(editMenu, MenuOption::AssetServer, + Qt::CTRL | Qt::SHIFT | Qt::Key_A, qApp, SLOT(showAssetServerWidget())); { auto nodeList = DependencyManager::get(); @@ -149,7 +145,9 @@ Menu::Menu() { // Edit > Avatar Packager #ifndef Q_OS_ANDROID action = addActionToQMenuAndActionHash(editMenu, MenuOption::AvatarPackager); - connect(action, &QAction::triggered, [] { DependencyManager::get()->open(); }); + connect(action, &QAction::triggered, [] { + DependencyManager::get()->open(); + }); #endif // Edit > Reload All Content @@ -164,6 +162,7 @@ Menu::Menu() { QActionGroup* displayModeGroup = new QActionGroup(displayModeMenu); displayModeGroup->setExclusive(true); + // View menu ---------------------------------- MenuWrapper* viewMenu = addMenu("View"); QActionGroup* cameraModeGroup = new QActionGroup(viewMenu); @@ -172,29 +171,31 @@ Menu::Menu() { cameraModeGroup->setExclusive(true); // View > First Person - auto firstPersonAction = cameraModeGroup->addAction( - addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::FirstPerson, 0, true, qApp, SLOT(cameraMenuChanged()))); + auto firstPersonAction = cameraModeGroup->addAction(addCheckableActionToQMenuAndActionHash( + viewMenu, MenuOption::FirstPerson, 0, + true, qApp, SLOT(cameraMenuChanged()))); firstPersonAction->setProperty(EXCLUSION_GROUP_KEY, QVariant::fromValue(cameraModeGroup)); // View > Third Person - auto thirdPersonAction = cameraModeGroup->addAction( - addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::ThirdPerson, 0, false, qApp, SLOT(cameraMenuChanged()))); + auto thirdPersonAction = cameraModeGroup->addAction(addCheckableActionToQMenuAndActionHash( + viewMenu, MenuOption::ThirdPerson, 0, + false, qApp, SLOT(cameraMenuChanged()))); thirdPersonAction->setProperty(EXCLUSION_GROUP_KEY, QVariant::fromValue(cameraModeGroup)); // View > Mirror - auto viewMirrorAction = - cameraModeGroup->addAction(addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::FullscreenMirror, 0, false, - qApp, SLOT(cameraMenuChanged()))); + auto viewMirrorAction = cameraModeGroup->addAction(addCheckableActionToQMenuAndActionHash( + viewMenu, MenuOption::FullscreenMirror, 0, + false, qApp, SLOT(cameraMenuChanged()))); viewMirrorAction->setProperty(EXCLUSION_GROUP_KEY, QVariant::fromValue(cameraModeGroup)); viewMenu->addSeparator(); // View > Center Player In View - addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::CenterPlayerInView, 0, true, qApp, - SLOT(rotationModeChanged())); + addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::CenterPlayerInView, + 0, true, qApp, SLOT(rotationModeChanged())); // View > Enter First Person Mode in HMD addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::FirstPersonHMD, 0, true); @@ -209,19 +210,21 @@ Menu::Menu() { // Navigate > Copy Address auto addressManager = DependencyManager::get(); - addActionToQMenuAndActionHash(navigateMenu, MenuOption::CopyAddress, 0, addressManager.data(), SLOT(copyAddress())); + addActionToQMenuAndActionHash(navigateMenu, MenuOption::CopyAddress, 0, + addressManager.data(), SLOT(copyAddress())); // Navigate > Copy Path - addActionToQMenuAndActionHash(navigateMenu, MenuOption::CopyPath, 0, addressManager.data(), SLOT(copyPath())); + addActionToQMenuAndActionHash(navigateMenu, MenuOption::CopyPath, 0, + addressManager.data(), SLOT(copyPath())); // Navigate > Start-up Location MenuWrapper* startupLocationMenu = navigateMenu->addMenu(MenuOption::StartUpLocation); QActionGroup* startupLocatiopnGroup = new QActionGroup(startupLocationMenu); startupLocatiopnGroup->setExclusive(true); - startupLocatiopnGroup->addAction( - addCheckableActionToQMenuAndActionHash(startupLocationMenu, MenuOption::HomeLocation, 0, false)); - startupLocatiopnGroup->addAction( - addCheckableActionToQMenuAndActionHash(startupLocationMenu, MenuOption::LastLocation, 0, true)); + startupLocatiopnGroup->addAction(addCheckableActionToQMenuAndActionHash(startupLocationMenu, MenuOption::HomeLocation, 0, + false)); + startupLocatiopnGroup->addAction(addCheckableActionToQMenuAndActionHash(startupLocationMenu, MenuOption::LastLocation, 0, + true)); // Settings menu ---------------------------------- MenuWrapper* settingsMenu = addMenu("Settings"); @@ -231,20 +234,20 @@ Menu::Menu() { connect(action, &QAction::triggered, [] { if (!qApp->getLoginDialogPoppedUp()) { qApp->showDialog(QString("hifi/dialogs/GeneralPreferencesDialog.qml"), - QString("hifi/tablet/TabletGeneralPreferences.qml"), "GeneralPreferencesDialog"); + QString("hifi/tablet/TabletGeneralPreferences.qml"), "GeneralPreferencesDialog"); } }); // Settings > Controls... action = addActionToQMenuAndActionHash(settingsMenu, "Controls..."); connect(action, &QAction::triggered, [] { - auto tablet = DependencyManager::get()->getTablet("com.highfidelity.interface.tablet.system"); - auto hmd = DependencyManager::get(); - tablet->pushOntoStack("hifi/tablet/ControllerSettings.qml"); + auto tablet = DependencyManager::get()->getTablet("com.highfidelity.interface.tablet.system"); + auto hmd = DependencyManager::get(); + tablet->pushOntoStack("hifi/tablet/ControllerSettings.qml"); - if (!hmd->getShouldShowTablet()) { - hmd->toggleShouldShowTablet(); - } + if (!hmd->getShouldShowTablet()) { + hmd->toggleShouldShowTablet(); + } }); // Settings > Audio... @@ -272,30 +275,16 @@ Menu::Menu() { } }); - - action = addActionToQMenuAndActionHash(editMenu, "Test Permissions"); - connect(action, &QAction::triggered, [] { - auto logMessage = [=](QQmlContext* context, QObject* newObject) { - qCDebug(interfaceapp) << "Testing permissions setting"; - }; - - qCDebug(interfaceapp) << "\n\nTesting permissions setting\n\n"; - static const QUrl url{ "hifi/Permission.qml" }; - - DependencyManager::get()->show(url, "AssetServer", logMessage); - }); - - // Settings > Security... action = addActionToQMenuAndActionHash(settingsMenu, "Security..."); connect(action, &QAction::triggered, [] { - auto tablet = DependencyManager::get()->getTablet("com.highfidelity.interface.tablet.system"); - auto hmd = DependencyManager::get(); - tablet->pushOntoStack("hifi/dialogs/security/Security.qml"); + auto tablet = DependencyManager::get()->getTablet("com.highfidelity.interface.tablet.system"); + auto hmd = DependencyManager::get(); + tablet->pushOntoStack("hifi/dialogs/security/Security.qml"); - if (!hmd->getShouldShowTablet()) { - hmd->toggleShouldShowTablet(); - } + if (!hmd->getShouldShowTablet()) { + hmd->toggleShouldShowTablet(); + } }); // Settings > Developer Menu @@ -306,26 +295,28 @@ Menu::Menu() { // Developer menu ---------------------------------- MenuWrapper* developerMenu = addMenu("Developer", "Developer"); - + // Developer > Scripting >>> MenuWrapper* scriptingOptionsMenu = developerMenu->addMenu("Scripting"); - + // Developer > Scripting > Console... addActionToQMenuAndActionHash(scriptingOptionsMenu, MenuOption::Console, Qt::CTRL | Qt::ALT | Qt::Key_J, - DependencyManager::get().data(), SLOT(toggleConsole()), QAction::NoRole, + DependencyManager::get().data(), + SLOT(toggleConsole()), + QAction::NoRole, UNSPECIFIED_POSITION); - // Developer > Scripting > API Debugger + // Developer > Scripting > API Debugger action = addActionToQMenuAndActionHash(scriptingOptionsMenu, "API Debugger"); connect(action, &QAction::triggered, [] { QUrl defaultScriptsLoc = PathUtils::defaultScriptsLocation(); defaultScriptsLoc.setPath(defaultScriptsLoc.path() + "developer/utilities/tools/currentAPI.js"); DependencyManager::get()->loadScript(defaultScriptsLoc.toString()); }); - + // Developer > Scripting > Entity Script Server Log - auto essLogAction = addActionToQMenuAndActionHash(scriptingOptionsMenu, MenuOption::EntityScriptServerLog, 0, qApp, - SLOT(toggleEntityScriptServerLogDialog())); + auto essLogAction = addActionToQMenuAndActionHash(scriptingOptionsMenu, MenuOption::EntityScriptServerLog, 0, + qApp, SLOT(toggleEntityScriptServerLogDialog())); { auto nodeList = DependencyManager::get(); QObject::connect(nodeList.data(), &NodeList::canRezChanged, essLogAction, [essLogAction] { @@ -336,53 +327,56 @@ Menu::Menu() { } // Developer > Scripting > Script Log (HMD friendly)... - addActionToQMenuAndActionHash(scriptingOptionsMenu, "Script Log (HMD friendly)...", Qt::NoButton, qApp, - SLOT(showScriptLogs())); + addActionToQMenuAndActionHash(scriptingOptionsMenu, "Script Log (HMD friendly)...", Qt::NoButton, + qApp, SLOT(showScriptLogs())); // Developer > Scripting > Verbose Logging - addCheckableActionToQMenuAndActionHash(scriptingOptionsMenu, MenuOption::VerboseLogging, 0, false, qApp, - SLOT(updateVerboseLogging())); - + addCheckableActionToQMenuAndActionHash(scriptingOptionsMenu, MenuOption::VerboseLogging, 0, false, + qApp, SLOT(updateVerboseLogging())); + // Developer > Scripting > Enable Speech Control API #if defined(Q_OS_MAC) || defined(Q_OS_WIN) auto speechRecognizer = DependencyManager::get(); - QAction* speechRecognizerAction = - addCheckableActionToQMenuAndActionHash(scriptingOptionsMenu, MenuOption::ControlWithSpeech, - Qt::CTRL | Qt::SHIFT | Qt::Key_C, speechRecognizer->getEnabled(), - speechRecognizer.data(), SLOT(setEnabled(bool)), UNSPECIFIED_POSITION); + QAction* speechRecognizerAction = addCheckableActionToQMenuAndActionHash(scriptingOptionsMenu, MenuOption::ControlWithSpeech, + Qt::CTRL | Qt::SHIFT | Qt::Key_C, + speechRecognizer->getEnabled(), + speechRecognizer.data(), + SLOT(setEnabled(bool)), + UNSPECIFIED_POSITION); connect(speechRecognizer.data(), SIGNAL(enabledUpdated(bool)), speechRecognizerAction, SLOT(setChecked(bool))); #endif - + // Developer > UI >>> MenuWrapper* uiOptionsMenu = developerMenu->addMenu("UI"); action = addCheckableActionToQMenuAndActionHash(uiOptionsMenu, MenuOption::DesktopTabletToToolbar, 0, qApp->getDesktopTabletBecomesToolbarSetting()); - + // Developer > UI > Show Overlays addCheckableActionToQMenuAndActionHash(uiOptionsMenu, MenuOption::Overlays, 0, true); - + // Developer > UI > Desktop Tablet Becomes Toolbar - connect(action, &QAction::triggered, [action] { qApp->setDesktopTabletBecomesToolbarSetting(action->isChecked()); }); - - // Developer > UI > HMD Tablet Becomes Toolbar + connect(action, &QAction::triggered, [action] { + qApp->setDesktopTabletBecomesToolbarSetting(action->isChecked()); + }); + + // Developer > UI > HMD Tablet Becomes Toolbar action = addCheckableActionToQMenuAndActionHash(uiOptionsMenu, MenuOption::HMDTabletToToolbar, 0, qApp->getHmdTabletBecomesToolbarSetting()); - connect(action, &QAction::triggered, [action] { qApp->setHmdTabletBecomesToolbarSetting(action->isChecked()); }); + connect(action, &QAction::triggered, [action] { + qApp->setHmdTabletBecomesToolbarSetting(action->isChecked()); + }); // Developer > Render >>> MenuWrapper* renderOptionsMenu = developerMenu->addMenu("Render"); - addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::AntiAliasing, 0, - RenderScriptingInterface::getInstance()->getAntialiasingEnabled(), - RenderScriptingInterface::getInstance(), SLOT(setAntialiasingEnabled(bool))); + addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::AntiAliasing, 0, RenderScriptingInterface::getInstance()->getAntialiasingEnabled(), + RenderScriptingInterface::getInstance(), SLOT(setAntialiasingEnabled(bool))); - addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Shadows, 0, - RenderScriptingInterface::getInstance()->getShadowsEnabled(), - RenderScriptingInterface::getInstance(), SLOT(setShadowsEnabled(bool))); + addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::Shadows, 0, RenderScriptingInterface::getInstance()->getShadowsEnabled(), + RenderScriptingInterface::getInstance(), SLOT(setShadowsEnabled(bool))); - addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::AmbientOcclusion, 0, - RenderScriptingInterface::getInstance()->getAmbientOcclusionEnabled(), - RenderScriptingInterface::getInstance(), SLOT(setAmbientOcclusionEnabled(bool))); + addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::AmbientOcclusion, 0, RenderScriptingInterface::getInstance()->getAmbientOcclusionEnabled(), + RenderScriptingInterface::getInstance(), SLOT(setAmbientOcclusionEnabled(bool))); addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::WorldAxes); addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::DefaultSkybox, 0, true); @@ -404,8 +398,7 @@ Menu::Menu() { MenuWrapper* textureMenu = renderOptionsMenu->addMenu(MenuOption::RenderMaxTextureMemory); QActionGroup* textureGroup = new QActionGroup(textureMenu); textureGroup->setExclusive(true); - textureGroup->addAction( - addCheckableActionToQMenuAndActionHash(textureMenu, MenuOption::RenderMaxTextureAutomatic, 0, true)); + textureGroup->addAction(addCheckableActionToQMenuAndActionHash(textureMenu, MenuOption::RenderMaxTextureAutomatic, 0, true)); textureGroup->addAction(addCheckableActionToQMenuAndActionHash(textureMenu, MenuOption::RenderMaxTexture4MB, 0, false)); textureGroup->addAction(addCheckableActionToQMenuAndActionHash(textureMenu, MenuOption::RenderMaxTexture64MB, 0, false)); textureGroup->addAction(addCheckableActionToQMenuAndActionHash(textureMenu, MenuOption::RenderMaxTexture256MB, 0, false)); @@ -418,7 +411,7 @@ Menu::Menu() { connect(textureGroup, &QActionGroup::triggered, [textureGroup] { auto checked = textureGroup->checkedAction(); auto text = checked->text(); - gpu::Context::Size newMaxTextureMemory{ 0 }; + gpu::Context::Size newMaxTextureMemory { 0 }; if (MenuOption::RenderMaxTexture4MB == text) { newMaxTextureMemory = MB_TO_BYTES(4); } else if (MenuOption::RenderMaxTexture64MB == text) { @@ -444,8 +437,7 @@ Menu::Menu() { #ifdef Q_OS_WIN // Developer > Render > Enable Sparse Textures { - auto action = addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::SparseTextureManagement, 0, - gpu::Texture::getEnableSparseTextures()); + auto action = addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::SparseTextureManagement, 0, gpu::Texture::getEnableSparseTextures()); connect(action, &QAction::triggered, [&](bool checked) { qDebug() << "[TEXTURE TRANSFER SUPPORT] --- Enable Dynamic Texture Management menu option:" << checked; gpu::Texture::setEnableSparseTextures(checked); @@ -453,34 +445,36 @@ Menu::Menu() { } #else - qDebug() << "[TEXTURE TRANSFER SUPPORT] Incremental Texture Transfer and Dynamic Texture Management not supported on this " - "platform."; + qDebug() << "[TEXTURE TRANSFER SUPPORT] Incremental Texture Transfer and Dynamic Texture Management not supported on this platform."; #endif + { auto action = addActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::RenderClearKtxCache); - connect(action, &QAction::triggered, [] { + connect(action, &QAction::triggered, []{ Setting::Handle(KTXCache::SETTING_VERSION_NAME, KTXCache::INVALID_VERSION).set(KTXCache::INVALID_VERSION); }); } // Developer > Render > LOD Tools - addActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::LodTools, 0, qApp, SLOT(loadLODToolsDialog())); + addActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::LodTools, 0, + qApp, SLOT(loadLODToolsDialog())); // HACK enable texture decimation { auto action = addCheckableActionToQMenuAndActionHash(renderOptionsMenu, "Decimate Textures"); - connect(action, &QAction::triggered, [&](bool checked) { DEV_DECIMATE_TEXTURES = checked; }); + connect(action, &QAction::triggered, [&](bool checked) { + DEV_DECIMATE_TEXTURES = checked; + }); } addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::ComputeBlendshapes, 0, true, - DependencyManager::get().data(), SLOT(setComputeBlendshapes(bool))); + DependencyManager::get().data(), SLOT(setComputeBlendshapes(bool))); { - auto drawStatusConfig = - qApp->getRenderEngine()->getConfiguration()->getConfig("RenderMainView.DrawStatus"); - addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::HighlightTransitions, 0, false, drawStatusConfig, - SLOT(setShowFade(bool))); + auto drawStatusConfig = qApp->getRenderEngine()->getConfiguration()->getConfig("RenderMainView.DrawStatus"); + addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::HighlightTransitions, 0, false, + drawStatusConfig, SLOT(setShowFade(bool))); } // Developer > Assets >>> @@ -491,8 +485,9 @@ Menu::Menu() { auto& atpMigrator = ATPAssetMigrator::getInstance(); atpMigrator.setDialogParent(this); - addActionToQMenuAndActionHash(assetDeveloperMenu, MenuOption::AssetMigration, 0, &atpMigrator, - SLOT(loadEntityServerFile())); + addActionToQMenuAndActionHash(assetDeveloperMenu, MenuOption::AssetMigration, + 0, &atpMigrator, + SLOT(loadEntityServerFile())); #endif // Developer > Avatar >>> @@ -507,21 +502,21 @@ Menu::Menu() { #ifdef HAVE_DDE defaultNoFaceTracking = false; #endif - QAction* noFaceTracker = - addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::NoFaceTracking, 0, defaultNoFaceTracking, qApp, - SLOT(setActiveFaceTracker())); + QAction* noFaceTracker = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::NoFaceTracking, + 0, defaultNoFaceTracking, + qApp, SLOT(setActiveFaceTracker())); faceTrackerGroup->addAction(noFaceTracker); #ifdef HAVE_DDE - QAction* ddeFaceTracker = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::UseCamera, 0, true, qApp, - SLOT(setActiveFaceTracker())); + QAction* ddeFaceTracker = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::UseCamera, + 0, true, + qApp, SLOT(setActiveFaceTracker())); faceTrackerGroup->addAction(ddeFaceTracker); #endif } #ifdef HAVE_DDE faceTrackingMenu->addSeparator(); - QAction* binaryEyelidControl = - addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::BinaryEyelidControl, 0, true); + QAction* binaryEyelidControl = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::BinaryEyelidControl, 0, true); binaryEyelidControl->setVisible(true); // DDE face tracking is on by default QAction* coupleEyelids = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::CoupleEyelids, 0, true); coupleEyelids->setVisible(true); // DDE face tracking is on by default @@ -530,104 +525,102 @@ Menu::Menu() { QAction* ddeFiltering = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::VelocityFilter, 0, true); ddeFiltering->setVisible(true); // DDE face tracking is on by default QAction* ddeCalibrate = addActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::CalibrateCamera, 0, - DependencyManager::get().data(), SLOT(calibrate())); + DependencyManager::get().data(), SLOT(calibrate())); ddeCalibrate->setVisible(true); // DDE face tracking is on by default faceTrackingMenu->addSeparator(); addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::MuteFaceTracking, - [](bool mute) { FaceTracker::setIsMuted(mute); }, Qt::CTRL | Qt::SHIFT | Qt::Key_F, - FaceTracker::isMuted()); + [](bool mute) { FaceTracker::setIsMuted(mute); }, + Qt::CTRL | Qt::SHIFT | Qt::Key_F, FaceTracker::isMuted()); addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::AutoMuteAudio, 0, false); #endif #ifdef HAVE_IVIEWHMD // Developer > Avatar > Eye Tracking MenuWrapper* eyeTrackingMenu = avatarDebugMenu->addMenu("Eye Tracking"); - addCheckableActionToQMenuAndActionHash(eyeTrackingMenu, MenuOption::SMIEyeTracking, 0, false, qApp, - SLOT(setActiveEyeTracker())); + addCheckableActionToQMenuAndActionHash(eyeTrackingMenu, MenuOption::SMIEyeTracking, 0, false, + qApp, SLOT(setActiveEyeTracker())); { MenuWrapper* calibrateEyeTrackingMenu = eyeTrackingMenu->addMenu("Calibrate"); - addActionToQMenuAndActionHash(calibrateEyeTrackingMenu, MenuOption::OnePointCalibration, 0, qApp, - SLOT(calibrateEyeTracker1Point())); - addActionToQMenuAndActionHash(calibrateEyeTrackingMenu, MenuOption::ThreePointCalibration, 0, qApp, - SLOT(calibrateEyeTracker3Points())); - addActionToQMenuAndActionHash(calibrateEyeTrackingMenu, MenuOption::FivePointCalibration, 0, qApp, - SLOT(calibrateEyeTracker5Points())); + addActionToQMenuAndActionHash(calibrateEyeTrackingMenu, MenuOption::OnePointCalibration, 0, + qApp, SLOT(calibrateEyeTracker1Point())); + addActionToQMenuAndActionHash(calibrateEyeTrackingMenu, MenuOption::ThreePointCalibration, 0, + qApp, SLOT(calibrateEyeTracker3Points())); + addActionToQMenuAndActionHash(calibrateEyeTrackingMenu, MenuOption::FivePointCalibration, 0, + qApp, SLOT(calibrateEyeTracker5Points())); } - addCheckableActionToQMenuAndActionHash(eyeTrackingMenu, MenuOption::SimulateEyeTracking, 0, false, qApp, - SLOT(setActiveEyeTracker())); + addCheckableActionToQMenuAndActionHash(eyeTrackingMenu, MenuOption::SimulateEyeTracking, 0, false, + qApp, SLOT(setActiveEyeTracker())); #endif action = addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AvatarReceiveStats, 0, false); - connect(action, &QAction::triggered, - [this] { Avatar::setShowReceiveStats(isOptionChecked(MenuOption::AvatarReceiveStats)); }); + connect(action, &QAction::triggered, [this]{ Avatar::setShowReceiveStats(isOptionChecked(MenuOption::AvatarReceiveStats)); }); action = addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ShowBoundingCollisionShapes, 0, false); - connect(action, &QAction::triggered, - [this] { Avatar::setShowCollisionShapes(isOptionChecked(MenuOption::ShowBoundingCollisionShapes)); }); + connect(action, &QAction::triggered, [this]{ Avatar::setShowCollisionShapes(isOptionChecked(MenuOption::ShowBoundingCollisionShapes)); }); action = addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ShowMyLookAtVectors, 0, false); - connect(action, &QAction::triggered, - [this] { Avatar::setShowMyLookAtVectors(isOptionChecked(MenuOption::ShowMyLookAtVectors)); }); + connect(action, &QAction::triggered, [this]{ Avatar::setShowMyLookAtVectors(isOptionChecked(MenuOption::ShowMyLookAtVectors)); }); action = addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ShowOtherLookAtVectors, 0, false); - connect(action, &QAction::triggered, - [this] { Avatar::setShowOtherLookAtVectors(isOptionChecked(MenuOption::ShowOtherLookAtVectors)); }); + connect(action, &QAction::triggered, [this]{ Avatar::setShowOtherLookAtVectors(isOptionChecked(MenuOption::ShowOtherLookAtVectors)); }); auto avatarManager = DependencyManager::get(); auto avatar = avatarManager->getMyAvatar(); action = addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::EnableLookAtSnapping, 0, true); - connect(action, &QAction::triggered, [this, avatar] { - avatar->setProperty("lookAtSnappingEnabled", isOptionChecked(MenuOption::EnableLookAtSnapping)); - }); + connect(action, &QAction::triggered, [this, avatar]{ + avatar->setProperty("lookAtSnappingEnabled", isOptionChecked(MenuOption::EnableLookAtSnapping)); + }); addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::FixGaze, 0, false); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ToggleHipsFollowing, 0, false, avatar.get(), - SLOT(setToggleHips(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AnimDebugDrawBaseOfSupport, 0, false, avatar.get(), - SLOT(setEnableDebugDrawBaseOfSupport(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AnimDebugDrawDefaultPose, 0, false, avatar.get(), - SLOT(setEnableDebugDrawDefaultPose(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AnimDebugDrawAnimPose, 0, false, avatar.get(), - SLOT(setEnableDebugDrawAnimPose(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AnimDebugDrawPosition, 0, false, avatar.get(), - SLOT(setEnableDebugDrawPosition(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ToggleHipsFollowing, 0, false, + avatar.get(), SLOT(setToggleHips(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AnimDebugDrawBaseOfSupport, 0, false, + avatar.get(), SLOT(setEnableDebugDrawBaseOfSupport(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AnimDebugDrawDefaultPose, 0, false, + avatar.get(), SLOT(setEnableDebugDrawDefaultPose(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AnimDebugDrawAnimPose, 0, false, + avatar.get(), SLOT(setEnableDebugDrawAnimPose(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AnimDebugDrawPosition, 0, false, + avatar.get(), SLOT(setEnableDebugDrawPosition(bool))); addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::AnimDebugDrawOtherSkeletons, 0, false, - avatarManager.data(), SLOT(setEnableDebugDrawOtherSkeletons(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::MeshVisible, 0, true, avatar.get(), - SLOT(setEnableMeshVisible(bool))); + avatarManager.data(), SLOT(setEnableDebugDrawOtherSkeletons(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::MeshVisible, 0, true, + avatar.get(), SLOT(setEnableMeshVisible(bool))); addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::DisableEyelidAdjustment, 0, false); addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::TurnWithHead, 0, false); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::EnableInverseKinematics, 0, true, avatar.get(), - SLOT(setEnableInverseKinematics(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderSensorToWorldMatrix, 0, false, avatar.get(), - SLOT(setEnableDebugDrawSensorToWorldMatrix(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderIKTargets, 0, false, avatar.get(), - SLOT(setEnableDebugDrawIKTargets(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderIKConstraints, 0, false, avatar.get(), - SLOT(setEnableDebugDrawIKConstraints(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderIKChains, 0, false, avatar.get(), - SLOT(setEnableDebugDrawIKChains(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderDetailedCollision, 0, false, avatar.get(), - SLOT(setEnableDebugDrawDetailedCollision(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::EnableInverseKinematics, 0, true, + avatar.get(), SLOT(setEnableInverseKinematics(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderSensorToWorldMatrix, 0, false, + avatar.get(), SLOT(setEnableDebugDrawSensorToWorldMatrix(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderIKTargets, 0, false, + avatar.get(), SLOT(setEnableDebugDrawIKTargets(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderIKConstraints, 0, false, + avatar.get(), SLOT(setEnableDebugDrawIKConstraints(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderIKChains, 0, false, + avatar.get(), SLOT(setEnableDebugDrawIKChains(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderDetailedCollision, 0, false, + avatar.get(), SLOT(setEnableDebugDrawDetailedCollision(bool))); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ActionMotorControl, 0, true, avatar.get(), - SLOT(updateMotionBehaviorFromMenu()), UNSPECIFIED_POSITION, "Developer"); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ActionMotorControl, 0, true, + avatar.get(), SLOT(updateMotionBehaviorFromMenu()), + UNSPECIFIED_POSITION, "Developer"); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ScriptedMotorControl, 0, true, avatar.get(), - SLOT(updateMotionBehaviorFromMenu()), UNSPECIFIED_POSITION, "Developer"); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ScriptedMotorControl, 0, true, + avatar.get(), SLOT(updateMotionBehaviorFromMenu()), + UNSPECIFIED_POSITION, "Developer"); - addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ShowTrackedObjects, 0, false, qApp, - SLOT(setShowTrackedObjects(bool))); + addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::ShowTrackedObjects, 0, false, qApp, SLOT(setShowTrackedObjects(bool))); addActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::PackageModel, 0, qApp, SLOT(packageModel())); // Developer > Hands >>> MenuWrapper* handOptionsMenu = developerMenu->addMenu("Hands"); - addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::DisplayHandTargets, 0, false, avatar.get(), - SLOT(setEnableDebugDrawHandControllers(bool))); + addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::DisplayHandTargets, 0, false, + avatar.get(), SLOT(setEnableDebugDrawHandControllers(bool))); // Developer > Entities >>> MenuWrapper* entitiesOptionsMenu = developerMenu->addMenu("Entities"); - addActionToQMenuAndActionHash(entitiesOptionsMenu, MenuOption::OctreeStats, 0, qApp, SLOT(loadEntityStatisticsDialog())); + addActionToQMenuAndActionHash(entitiesOptionsMenu, MenuOption::OctreeStats, 0, + qApp, SLOT(loadEntityStatisticsDialog())); addCheckableActionToQMenuAndActionHash(entitiesOptionsMenu, MenuOption::ShowRealtimeEntityStats); @@ -636,30 +629,35 @@ Menu::Menu() { action = addActionToQMenuAndActionHash(networkMenu, MenuOption::Networking); connect(action, &QAction::triggered, [] { qApp->showDialog(QString("hifi/dialogs/NetworkingPreferencesDialog.qml"), - QString("hifi/tablet/TabletNetworkingPreferences.qml"), "NetworkingPreferencesDialog"); + QString("hifi/tablet/TabletNetworkingPreferences.qml"), "NetworkingPreferencesDialog"); }); addActionToQMenuAndActionHash(networkMenu, MenuOption::ReloadContent, 0, qApp, SLOT(reloadResourceCaches())); - addActionToQMenuAndActionHash(networkMenu, MenuOption::ClearDiskCache, 0, DependencyManager::get().data(), - SLOT(clearCache())); - addCheckableActionToQMenuAndActionHash(networkMenu, MenuOption::DisableActivityLogger, 0, false, - &UserActivityLogger::getInstance(), SLOT(disable(bool))); - addActionToQMenuAndActionHash(networkMenu, MenuOption::ShowDSConnectTable, 0, qApp, SLOT(loadDomainConnectionDialog())); + addActionToQMenuAndActionHash(networkMenu, MenuOption::ClearDiskCache, 0, + DependencyManager::get().data(), SLOT(clearCache())); + addCheckableActionToQMenuAndActionHash(networkMenu, + MenuOption::DisableActivityLogger, + 0, + false, + &UserActivityLogger::getInstance(), + SLOT(disable(bool))); + addActionToQMenuAndActionHash(networkMenu, MenuOption::ShowDSConnectTable, 0, + qApp, SLOT(loadDomainConnectionDialog())); -#if (PR_BUILD || DEV_BUILD) - addCheckableActionToQMenuAndActionHash(networkMenu, MenuOption::SendWrongProtocolVersion, 0, false, qApp, - SLOT(sendWrongProtocolVersionsSignature(bool))); + #if (PR_BUILD || DEV_BUILD) + addCheckableActionToQMenuAndActionHash(networkMenu, MenuOption::SendWrongProtocolVersion, 0, false, + qApp, SLOT(sendWrongProtocolVersionsSignature(bool))); { auto nodeList = DependencyManager::get(); - addCheckableActionToQMenuAndActionHash(networkMenu, MenuOption::SendWrongDSConnectVersion, 0, false, nodeList.data(), - SLOT(toggleSendNewerDSConnectVersion(bool))); + addCheckableActionToQMenuAndActionHash(networkMenu, MenuOption::SendWrongDSConnectVersion, 0, false, + nodeList.data(), SLOT(toggleSendNewerDSConnectVersion(bool))); } -#endif + #endif + // Developer >> Tests >>> MenuWrapper* testMenu = developerMenu->addMenu("Tests"); - addActionToQMenuAndActionHash(testMenu, MenuOption::RunClientScriptTests, 0, dialogsManager.data(), - SLOT(showTestingResults())); + addActionToQMenuAndActionHash(testMenu, MenuOption::RunClientScriptTests, 0, dialogsManager.data(), SLOT(showTestingResults())); // Developer > Timing >>> MenuWrapper* timingMenu = developerMenu->addMenu("Timing"); @@ -680,6 +678,7 @@ Menu::Menu() { addCheckableActionToQMenuAndActionHash(timingMenu, MenuOption::LogExtraTimings); addCheckableActionToQMenuAndActionHash(timingMenu, MenuOption::SuppressShortTimings); + // Developer > Audio >>> MenuWrapper* audioDebugMenu = developerMenu->addMenu("Audio"); @@ -692,12 +691,12 @@ Menu::Menu() { action = addActionToQMenuAndActionHash(audioDebugMenu, "Buffers..."); connect(action, &QAction::triggered, [] { - qApp->showDialog(QString("hifi/dialogs/AudioBuffers.qml"), QString("hifi/tablet/TabletAudioBuffers.qml"), - "AudioBuffersDialog"); + qApp->showDialog(QString("hifi/dialogs/AudioBuffers.qml"), + QString("hifi/tablet/TabletAudioBuffers.qml"), "AudioBuffersDialog"); }); - addActionToQMenuAndActionHash(audioDebugMenu, MenuOption::MuteEnvironment, 0, DependencyManager::get().data(), - SLOT(sendMuteEnvironmentPacket())); + addActionToQMenuAndActionHash(audioDebugMenu, MenuOption::MuteEnvironment, 0, + DependencyManager::get().data(), SLOT(sendMuteEnvironmentPacket())); action = addActionToQMenuAndActionHash(audioDebugMenu, MenuOption::AudioScope); connect(action, &QAction::triggered, [] { @@ -709,31 +708,25 @@ Menu::Menu() { // Developer > Physics >>> MenuWrapper* physicsOptionsMenu = developerMenu->addMenu("Physics"); { - auto drawStatusConfig = - qApp->getRenderEngine()->getConfiguration()->getConfig("RenderMainView.DrawStatus"); - addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowOwned, 0, false, drawStatusConfig, - SLOT(setShowNetwork(bool))); + auto drawStatusConfig = qApp->getRenderEngine()->getConfiguration()->getConfig("RenderMainView.DrawStatus"); + addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowOwned, + 0, false, drawStatusConfig, SLOT(setShowNetwork(bool))); } - addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletWireframe, 0, false, qApp, - SLOT(setShowBulletWireframe(bool))); - addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletAABBs, 0, false, qApp, - SLOT(setShowBulletAABBs(bool))); - addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletContactPoints, 0, false, qApp, - SLOT(setShowBulletContactPoints(bool))); - addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletConstraints, 0, false, qApp, - SLOT(setShowBulletConstraints(bool))); - addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletConstraintLimits, 0, false, qApp, - SLOT(setShowBulletConstraintLimits(bool))); + addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletWireframe, 0, false, qApp, SLOT(setShowBulletWireframe(bool))); + addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletAABBs, 0, false, qApp, SLOT(setShowBulletAABBs(bool))); + addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletContactPoints, 0, false, qApp, SLOT(setShowBulletContactPoints(bool))); + addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletConstraints, 0, false, qApp, SLOT(setShowBulletConstraints(bool))); + addCheckableActionToQMenuAndActionHash(physicsOptionsMenu, MenuOption::PhysicsShowBulletConstraintLimits, 0, false, qApp, SLOT(setShowBulletConstraintLimits(bool))); // Developer > Picking >>> MenuWrapper* pickingOptionsMenu = developerMenu->addMenu("Picking"); addCheckableActionToQMenuAndActionHash(pickingOptionsMenu, MenuOption::ForceCoarsePicking, 0, false, - DependencyManager::get().data(), SLOT(setForceCoarsePicking(bool))); + DependencyManager::get().data(), SLOT(setForceCoarsePicking(bool))); // Developer > Crash >>> MenuWrapper* crashMenu = developerMenu->addMenu("Crash"); - + // Developer > Crash > Display Crash Options addCheckableActionToQMenuAndActionHash(crashMenu, MenuOption::DisplayCrashOptions, 0, true); @@ -777,10 +770,10 @@ Menu::Menu() { addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::AnimStats); // Developer > Log - addActionToQMenuAndActionHash(developerMenu, MenuOption::Log, Qt::CTRL | Qt::SHIFT | Qt::Key_L, qApp, - SLOT(toggleLogDialog())); + addActionToQMenuAndActionHash(developerMenu, MenuOption::Log, Qt::CTRL | Qt::SHIFT | Qt::Key_L, + qApp, SLOT(toggleLogDialog())); -#if 0 /// -------------- REMOVED FOR NOW -------------- +#if 0 /// -------------- REMOVED FOR NOW -------------- addDisabledActionAndSeparator(navigateMenu, "History"); QAction* backAction = addActionToQMenuAndActionHash(navigateMenu, MenuOption::Back, 0, addressManager.data(), SLOT(goBack())); QAction* forwardAction = addActionToQMenuAndActionHash(navigateMenu, MenuOption::Forward, 0, addressManager.data(), SLOT(goForward())); @@ -807,27 +800,33 @@ Menu::Menu() { #endif // Help/Application menu ---------------------------------- - MenuWrapper* helpMenu = addMenu("Help"); + MenuWrapper * helpMenu = addMenu("Help"); // Help > About High Fidelity action = addActionToQMenuAndActionHash(helpMenu, "About High Fidelity"); connect(action, &QAction::triggered, [] { - qApp->showDialog(QString("hifi/dialogs/AboutDialog.qml"), QString("hifi/dialogs/TabletAboutDialog.qml"), "AboutDialog"); + qApp->showDialog(QString("hifi/dialogs/AboutDialog.qml"), + QString("hifi/dialogs/TabletAboutDialog.qml"), "AboutDialog"); }); helpMenu->addSeparator(); // Help > HiFi Docs action = addActionToQMenuAndActionHash(helpMenu, "Online Documentation"); - connect(action, &QAction::triggered, qApp, [] { QDesktopServices::openUrl(QUrl("https://docs.highfidelity.com/")); }); + connect(action, &QAction::triggered, qApp, [] { + QDesktopServices::openUrl(QUrl("https://docs.highfidelity.com/")); + }); // Help > HiFi Forum action = addActionToQMenuAndActionHash(helpMenu, "Online Forums"); - connect(action, &QAction::triggered, qApp, [] { QDesktopServices::openUrl(QUrl("https://forums.highfidelity.com/")); }); + connect(action, &QAction::triggered, qApp, [] { + QDesktopServices::openUrl(QUrl("https://forums.highfidelity.com/")); + }); // Help > Scripting Reference action = addActionToQMenuAndActionHash(helpMenu, "Online Script Reference"); - connect(action, &QAction::triggered, qApp, - [] { QDesktopServices::openUrl(QUrl("https://docs.highfidelity.com/api-reference")); }); + connect(action, &QAction::triggered, qApp, [] { + QDesktopServices::openUrl(QUrl("https://docs.highfidelity.com/api-reference")); + }); addActionToQMenuAndActionHash(helpMenu, "Controls Reference", 0, qApp, SLOT(showHelp())); @@ -835,12 +834,15 @@ Menu::Menu() { // Help > Release Notes action = addActionToQMenuAndActionHash(helpMenu, "Release Notes"); - connect(action, &QAction::triggered, qApp, - [] { QDesktopServices::openUrl(QUrl("http://steamcommunity.com/games/390540/announcements/")); }); + connect(action, &QAction::triggered, qApp, [] { + QDesktopServices::openUrl(QUrl("http://steamcommunity.com/games/390540/announcements/")); + }); // Help > Report a Bug! action = addActionToQMenuAndActionHash(helpMenu, "Report a Bug!"); - connect(action, &QAction::triggered, qApp, [] { QDesktopServices::openUrl(QUrl("mailto:support@highfidelity.com")); }); + connect(action, &QAction::triggered, qApp, [] { + QDesktopServices::openUrl(QUrl("mailto:support@highfidelity.com")); + }); } void Menu::addMenuItem(const MenuItemProperties& properties) { @@ -870,10 +872,10 @@ void Menu::addMenuItem(const MenuItemProperties& properties) { if (properties.isSeparator) { addDisabledActionAndSeparator(menuObj, properties.menuItemName, requestedPosition, properties.grouping); } else if (properties.isCheckable) { - menuItemAction = - addCheckableActionToQMenuAndActionHash(menuObj, properties.menuItemName, properties.shortcutKeySequence, - properties.isChecked, MenuScriptingInterface::getInstance(), - SLOT(menuItemTriggered()), requestedPosition, properties.grouping); + menuItemAction = addCheckableActionToQMenuAndActionHash(menuObj, properties.menuItemName, + properties.shortcutKeySequence, properties.isChecked, + MenuScriptingInterface::getInstance(), SLOT(menuItemTriggered()), + requestedPosition, properties.grouping); } else { menuItemAction = addActionToQMenuAndActionHash(menuObj, properties.menuItemName, properties.shortcutKeySequence, MenuScriptingInterface::getInstance(), SLOT(menuItemTriggered()), diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 772f82cdbe..70687786a9 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -26,204 +26,204 @@ public: }; namespace MenuOption { -const QString AddRemoveFriends = "Add/Remove Friends..."; -const QString AddressBar = "Show Address Bar"; -const QString Animations = "Animations..."; -const QString AnimDebugDrawAnimPose = "Debug Draw Animation"; -const QString AnimDebugDrawBaseOfSupport = "Debug Draw Base of Support"; -const QString AnimDebugDrawDefaultPose = "Debug Draw Default Pose"; -const QString AnimDebugDrawPosition = "Debug Draw Position"; -const QString AnimDebugDrawOtherSkeletons = "Debug Draw Other Skeletons"; -const QString AskToResetSettings = "Ask To Reset Settings on Start"; -const QString AssetMigration = "ATP Asset Migration"; -const QString AssetServer = "Asset Browser"; -const QString AudioScope = "Show Scope"; -const QString AudioScopeFiftyFrames = "Fifty"; -const QString AudioScopeFiveFrames = "Five"; -const QString AudioScopeFrames = "Display Frames"; -const QString AudioScopePause = "Pause Scope"; -const QString AudioScopeTwentyFrames = "Twenty"; -const QString AudioStatsShowInjectedStreams = "Audio Stats Show Injected Streams"; -const QString AutoMuteAudio = "Auto Mute Microphone"; -const QString AvatarReceiveStats = "Show Receive Stats"; -const QString AvatarBookmarks = "Avatar Bookmarks"; -const QString AvatarPackager = "Avatar Packager"; -const QString Back = "Back"; -const QString BinaryEyelidControl = "Binary Eyelid Control"; -const QString BookmarkAvatar = "Bookmark Avatar"; -const QString BookmarkAvatarEntities = "Bookmark Avatar Entities"; -const QString BookmarkLocation = "Bookmark Location"; -const QString CalibrateCamera = "Calibrate Camera"; -const QString CenterPlayerInView = "Center Player In View"; -const QString Chat = "Chat..."; -const QString ClearDiskCache = "Clear Disk Cache"; -const QString Collisions = "Collisions"; -const QString Connexion = "Activate 3D Connexion Devices"; -const QString Console = "Console..."; -const QString ControlWithSpeech = "Enable Speech Control API"; -const QString CopyAddress = "Copy Address to Clipboard"; -const QString CopyPath = "Copy Path to Clipboard"; -const QString CoupleEyelids = "Couple Eyelids"; -const QString CrashPureVirtualFunction = "Pure Virtual Function Call"; -const QString CrashPureVirtualFunctionThreaded = "Pure Virtual Function Call (threaded)"; -const QString CrashDoubleFree = "Double Free"; -const QString CrashDoubleFreeThreaded = "Double Free (threaded)"; -const QString CrashNullDereference = "Null Dereference"; -const QString CrashNullDereferenceThreaded = "Null Dereference (threaded)"; -const QString CrashAbort = "Abort"; -const QString CrashAbortThreaded = "Abort (threaded)"; -const QString CrashOutOfBoundsVectorAccess = "Out of Bounds Vector Access"; -const QString CrashOutOfBoundsVectorAccessThreaded = "Out of Bounds Vector Access (threaded)"; -const QString CrashNewFault = "New Fault"; -const QString CrashNewFaultThreaded = "New Fault (threaded)"; -const QString CreateEntitiesGrabbable = "Create Entities As Grabbable (except Zones, Particles, and Lights)"; -const QString DeadlockInterface = "Deadlock Interface"; -const QString UnresponsiveInterface = "Unresponsive Interface"; -const QString DecreaseAvatarSize = "Decrease Avatar Size"; -const QString DefaultSkybox = "Default Skybox"; -const QString DeleteAvatarBookmark = "Delete Avatar Bookmark..."; -const QString DeleteAvatarEntitiesBookmark = "Delete Avatar Entities Bookmark"; -const QString DeleteBookmark = "Delete Bookmark..."; -const QString DisableActivityLogger = "Disable Activity Logger"; -const QString DisableEyelidAdjustment = "Disable Eyelid Adjustment"; -const QString DisableLightEntities = "Disable Light Entities"; -const QString DisplayCrashOptions = "Display Crash Options"; -const QString DisplayHandTargets = "Show Hand Targets"; -const QString DisplayModelBounds = "Display Model Bounds"; -const QString DisplayModelTriangles = "Display Model Triangles"; -const QString DisplayModelElementChildProxies = "Display Model Element Children"; -const QString DisplayModelElementProxy = "Display Model Element Bounds"; -const QString DisplayDebugTimingDetails = "Display Timing Details"; -const QString LocationBookmarks = "Bookmarks"; -const QString DontDoPrecisionPicking = "Don't Do Precision Picking"; -const QString DontRenderEntitiesAsScene = "Don't Render Entities as Scene"; -const QString EchoLocalAudio = "Echo Local Audio"; -const QString EchoServerAudio = "Echo Server Audio"; -const QString EnableFlying = "Enable Flying"; -const QString EnableAvatarCollisions = "Enable Avatar Collisions"; -const QString EnableInverseKinematics = "Enable Inverse Kinematics"; -const QString EntityScriptServerLog = "Entity Script Server Log"; -const QString ExpandMyAvatarSimulateTiming = "Expand /myAvatar/simulation"; -const QString ExpandMyAvatarTiming = "Expand /myAvatar"; -const QString ExpandOtherAvatarTiming = "Expand /otherAvatar"; -const QString ExpandPaintGLTiming = "Expand /paintGL"; -const QString ExpandSimulationTiming = "Expand /simulation"; -const QString ExpandPhysicsTiming = "Expand /physics"; -const QString ExpandUpdateTiming = "Expand /update"; -const QString FirstPerson = "First Person"; -const QString FirstPersonHMD = "Enter First Person Mode in HMD"; -const QString FivePointCalibration = "5 Point Calibration"; -const QString FixGaze = "Fix Gaze (no saccade)"; -const QString Forward = "Forward"; -const QString FrameTimer = "Show Timer"; -const QString FullscreenMirror = "Mirror"; -const QString Help = "Help..."; -const QString HomeLocation = "Home "; -const QString IncreaseAvatarSize = "Increase Avatar Size"; -const QString ActionMotorControl = "Enable Default Motor Control"; -const QString LastLocation = "Last Location"; -const QString LoadScript = "Open and Run Script File..."; -const QString LoadScriptURL = "Open and Run Script from URL..."; -const QString LodTools = "LOD Tools"; -const QString Login = "Login/Sign Up"; -const QString Log = "Log"; -const QString LogExtraTimings = "Log Extra Timing Details"; -const QString LowVelocityFilter = "Low Velocity Filter"; -const QString MeshVisible = "Draw Mesh"; -const QString MuteEnvironment = "Mute Environment"; -const QString MuteFaceTracking = "Mute Face Tracking"; -const QString NamesAboveHeads = "Names Above Heads"; -const QString Networking = "Networking..."; -const QString NoFaceTracking = "None"; -const QString OctreeStats = "Entity Statistics"; -const QString OnePointCalibration = "1 Point Calibration"; -const QString OnlyDisplayTopTen = "Only Display Top Ten"; -const QString OpenVrThreadedSubmit = "OpenVR Threaded Submit"; -const QString OutputMenu = "Display"; -const QString Overlays = "Show Overlays"; -const QString PackageModel = "Package Avatar as .fst..."; -const QString Pair = "Pair"; -const QString PhysicsShowOwned = "Highlight Simulation Ownership"; -const QString VerboseLogging = "Verbose Logging"; -const QString PhysicsShowBulletWireframe = "Show Bullet Collision"; -const QString PhysicsShowBulletAABBs = "Show Bullet Bounding Boxes"; -const QString PhysicsShowBulletContactPoints = "Show Bullet Contact Points"; -const QString PhysicsShowBulletConstraints = "Show Bullet Constraints"; -const QString PhysicsShowBulletConstraintLimits = "Show Bullet Constraint Limits"; -const QString PipelineWarnings = "Log Render Pipeline Warnings"; -const QString Preferences = "General..."; -const QString Quit = "Quit"; -const QString ReloadAllScripts = "Reload All Scripts"; -const QString ReloadContent = "Reload Content (Clears all caches)"; -const QString RenderClearKtxCache = "Clear KTX Cache (requires restart)"; -const QString RenderMaxTextureMemory = "Maximum Texture Memory"; -const QString RenderMaxTextureAutomatic = "Automatic Texture Memory"; -const QString RenderMaxTexture4MB = "4 MB"; -const QString RenderMaxTexture64MB = "64 MB"; -const QString RenderMaxTexture256MB = "256 MB"; -const QString RenderMaxTexture512MB = "512 MB"; -const QString RenderMaxTexture1024MB = "1024 MB"; -const QString RenderMaxTexture2048MB = "2048 MB"; -const QString RenderMaxTexture3072MB = "3072 MB"; -const QString RenderMaxTexture4096MB = "4096 MB"; -const QString RenderMaxTexture6144MB = "6144 MB"; -const QString RenderMaxTexture8192MB = "8192 MB"; -const QString RenderSensorToWorldMatrix = "Show SensorToWorld Matrix"; -const QString RenderIKTargets = "Show IK Targets"; -const QString RenderIKConstraints = "Show IK Constraints"; -const QString RenderIKChains = "Show IK Chains"; -const QString RenderDetailedCollision = "Show Detailed Collision"; -const QString ResetAvatarSize = "Reset Avatar Size"; -const QString ResetSensors = "Reset Sensors"; -const QString RunningScripts = "Running Scripts..."; -const QString RunClientScriptTests = "Run Client Script Tests"; -const QString RunTimingTests = "Run Timing Tests"; -const QString ScriptedMotorControl = "Enable Scripted Motor Control"; -const QString ShowTrackedObjects = "Show Tracked Objects"; -const QString SendWrongDSConnectVersion = "Send wrong DS connect version"; -const QString SendWrongProtocolVersion = "Send wrong protocol version"; -const QString SetHomeLocation = "Set Home Location"; -const QString ShowBordersEntityNodes = "Show Entity Nodes"; -const QString ShowBoundingCollisionShapes = "Show Bounding Collision Shapes"; -const QString ShowDSConnectTable = "Show Domain Connection Timing"; -const QString ShowMyLookAtVectors = "Show My Eye Vectors"; -const QString ShowOtherLookAtVectors = "Show Other Eye Vectors"; -const QString EnableLookAtSnapping = "Enable LookAt Snapping"; -const QString ShowRealtimeEntityStats = "Show Realtime Entity Stats"; -const QString SimulateEyeTracking = "Simulate"; -const QString SMIEyeTracking = "SMI Eye Tracking"; -const QString SparseTextureManagement = "Enable Sparse Texture Management"; -const QString StartUpLocation = "Start-Up Location"; -const QString Stats = "Show Statistics"; -const QString AnimStats = "Show Animation Stats"; -const QString StopAllScripts = "Stop All Scripts"; -const QString SuppressShortTimings = "Suppress Timings Less than 10ms"; -const QString ThirdPerson = "Third Person"; -const QString ThreePointCalibration = "3 Point Calibration"; -const QString ThrottleFPSIfNotFocus = - "Throttle FPS If Not Focus"; // FIXME - this value duplicated in Basic2DWindowOpenGLDisplayPlugin.cpp -const QString ToggleHipsFollowing = "Toggle Hips Following"; -const QString ToolWindow = "Tool Window"; -const QString TransmitterDrive = "Transmitter Drive"; -const QString TurnWithHead = "Turn using Head"; -const QString UseAudioForMouth = "Use Audio for Mouth"; -const QString UseCamera = "Use Camera"; -const QString VelocityFilter = "Velocity Filter"; -const QString VisibleToEveryone = "Everyone"; -const QString VisibleToFriends = "Friends"; -const QString VisibleToNoOne = "No one"; -const QString WorldAxes = "World Axes"; -const QString DesktopTabletToToolbar = "Desktop Tablet Becomes Toolbar"; -const QString HMDTabletToToolbar = "HMD Tablet Becomes Toolbar"; -const QString Shadows = "Shadows"; -const QString AntiAliasing = "Temporal Antialiasing (FXAA if disabled)"; -const QString AmbientOcclusion = "Ambient Occlusion"; -const QString NotificationSounds = "play_notification_sounds"; -const QString NotificationSoundsSnapshot = "play_notification_sounds_snapshot"; -const QString NotificationSoundsTablet = "play_notification_sounds_tablet"; -const QString ForceCoarsePicking = "Force Coarse Picking"; -const QString ComputeBlendshapes = "Compute Blendshapes"; -const QString HighlightTransitions = "Highlight Transitions"; -} // namespace MenuOption + const QString AddRemoveFriends = "Add/Remove Friends..."; + const QString AddressBar = "Show Address Bar"; + const QString Animations = "Animations..."; + const QString AnimDebugDrawAnimPose = "Debug Draw Animation"; + const QString AnimDebugDrawBaseOfSupport = "Debug Draw Base of Support"; + const QString AnimDebugDrawDefaultPose = "Debug Draw Default Pose"; + const QString AnimDebugDrawPosition= "Debug Draw Position"; + const QString AnimDebugDrawOtherSkeletons = "Debug Draw Other Skeletons"; + const QString AskToResetSettings = "Ask To Reset Settings on Start"; + const QString AssetMigration = "ATP Asset Migration"; + const QString AssetServer = "Asset Browser"; + const QString AudioScope = "Show Scope"; + const QString AudioScopeFiftyFrames = "Fifty"; + const QString AudioScopeFiveFrames = "Five"; + const QString AudioScopeFrames = "Display Frames"; + const QString AudioScopePause = "Pause Scope"; + const QString AudioScopeTwentyFrames = "Twenty"; + const QString AudioStatsShowInjectedStreams = "Audio Stats Show Injected Streams"; + const QString AutoMuteAudio = "Auto Mute Microphone"; + const QString AvatarReceiveStats = "Show Receive Stats"; + const QString AvatarBookmarks = "Avatar Bookmarks"; + const QString AvatarPackager = "Avatar Packager"; + const QString Back = "Back"; + const QString BinaryEyelidControl = "Binary Eyelid Control"; + const QString BookmarkAvatar = "Bookmark Avatar"; + const QString BookmarkAvatarEntities = "Bookmark Avatar Entities"; + const QString BookmarkLocation = "Bookmark Location"; + const QString CalibrateCamera = "Calibrate Camera"; + const QString CenterPlayerInView = "Center Player In View"; + const QString Chat = "Chat..."; + const QString ClearDiskCache = "Clear Disk Cache"; + const QString Collisions = "Collisions"; + const QString Connexion = "Activate 3D Connexion Devices"; + const QString Console = "Console..."; + const QString ControlWithSpeech = "Enable Speech Control API"; + const QString CopyAddress = "Copy Address to Clipboard"; + const QString CopyPath = "Copy Path to Clipboard"; + const QString CoupleEyelids = "Couple Eyelids"; + const QString CrashPureVirtualFunction = "Pure Virtual Function Call"; + const QString CrashPureVirtualFunctionThreaded = "Pure Virtual Function Call (threaded)"; + const QString CrashDoubleFree = "Double Free"; + const QString CrashDoubleFreeThreaded = "Double Free (threaded)"; + const QString CrashNullDereference = "Null Dereference"; + const QString CrashNullDereferenceThreaded = "Null Dereference (threaded)"; + const QString CrashAbort = "Abort"; + const QString CrashAbortThreaded = "Abort (threaded)"; + const QString CrashOutOfBoundsVectorAccess = "Out of Bounds Vector Access"; + const QString CrashOutOfBoundsVectorAccessThreaded = "Out of Bounds Vector Access (threaded)"; + const QString CrashNewFault = "New Fault"; + const QString CrashNewFaultThreaded = "New Fault (threaded)"; + const QString CreateEntitiesGrabbable = "Create Entities As Grabbable (except Zones, Particles, and Lights)"; + const QString DeadlockInterface = "Deadlock Interface"; + const QString UnresponsiveInterface = "Unresponsive Interface"; + const QString DecreaseAvatarSize = "Decrease Avatar Size"; + const QString DefaultSkybox = "Default Skybox"; + const QString DeleteAvatarBookmark = "Delete Avatar Bookmark..."; + const QString DeleteAvatarEntitiesBookmark = "Delete Avatar Entities Bookmark"; + const QString DeleteBookmark = "Delete Bookmark..."; + const QString DisableActivityLogger = "Disable Activity Logger"; + const QString DisableEyelidAdjustment = "Disable Eyelid Adjustment"; + const QString DisableLightEntities = "Disable Light Entities"; + const QString DisplayCrashOptions = "Display Crash Options"; + const QString DisplayHandTargets = "Show Hand Targets"; + const QString DisplayModelBounds = "Display Model Bounds"; + const QString DisplayModelTriangles = "Display Model Triangles"; + const QString DisplayModelElementChildProxies = "Display Model Element Children"; + const QString DisplayModelElementProxy = "Display Model Element Bounds"; + const QString DisplayDebugTimingDetails = "Display Timing Details"; + const QString LocationBookmarks = "Bookmarks"; + const QString DontDoPrecisionPicking = "Don't Do Precision Picking"; + const QString DontRenderEntitiesAsScene = "Don't Render Entities as Scene"; + const QString EchoLocalAudio = "Echo Local Audio"; + const QString EchoServerAudio = "Echo Server Audio"; + const QString EnableFlying = "Enable Flying"; + const QString EnableAvatarCollisions = "Enable Avatar Collisions"; + const QString EnableInverseKinematics = "Enable Inverse Kinematics"; + const QString EntityScriptServerLog = "Entity Script Server Log"; + const QString ExpandMyAvatarSimulateTiming = "Expand /myAvatar/simulation"; + const QString ExpandMyAvatarTiming = "Expand /myAvatar"; + const QString ExpandOtherAvatarTiming = "Expand /otherAvatar"; + const QString ExpandPaintGLTiming = "Expand /paintGL"; + const QString ExpandSimulationTiming = "Expand /simulation"; + const QString ExpandPhysicsTiming = "Expand /physics"; + const QString ExpandUpdateTiming = "Expand /update"; + const QString FirstPerson = "First Person"; + const QString FirstPersonHMD = "Enter First Person Mode in HMD"; + const QString FivePointCalibration = "5 Point Calibration"; + const QString FixGaze = "Fix Gaze (no saccade)"; + const QString Forward = "Forward"; + const QString FrameTimer = "Show Timer"; + const QString FullscreenMirror = "Mirror"; + const QString Help = "Help..."; + const QString HomeLocation = "Home "; + const QString IncreaseAvatarSize = "Increase Avatar Size"; + const QString ActionMotorControl = "Enable Default Motor Control"; + const QString LastLocation = "Last Location"; + const QString LoadScript = "Open and Run Script File..."; + const QString LoadScriptURL = "Open and Run Script from URL..."; + const QString LodTools = "LOD Tools"; + const QString Login = "Login/Sign Up"; + const QString Log = "Log"; + const QString LogExtraTimings = "Log Extra Timing Details"; + const QString LowVelocityFilter = "Low Velocity Filter"; + const QString MeshVisible = "Draw Mesh"; + const QString MuteEnvironment = "Mute Environment"; + const QString MuteFaceTracking = "Mute Face Tracking"; + const QString NamesAboveHeads = "Names Above Heads"; + const QString Networking = "Networking..."; + const QString NoFaceTracking = "None"; + const QString OctreeStats = "Entity Statistics"; + const QString OnePointCalibration = "1 Point Calibration"; + const QString OnlyDisplayTopTen = "Only Display Top Ten"; + const QString OpenVrThreadedSubmit = "OpenVR Threaded Submit"; + const QString OutputMenu = "Display"; + const QString Overlays = "Show Overlays"; + const QString PackageModel = "Package Avatar as .fst..."; + const QString Pair = "Pair"; + const QString PhysicsShowOwned = "Highlight Simulation Ownership"; + const QString VerboseLogging = "Verbose Logging"; + const QString PhysicsShowBulletWireframe = "Show Bullet Collision"; + const QString PhysicsShowBulletAABBs = "Show Bullet Bounding Boxes"; + const QString PhysicsShowBulletContactPoints = "Show Bullet Contact Points"; + const QString PhysicsShowBulletConstraints = "Show Bullet Constraints"; + const QString PhysicsShowBulletConstraintLimits = "Show Bullet Constraint Limits"; + const QString PipelineWarnings = "Log Render Pipeline Warnings"; + const QString Preferences = "General..."; + const QString Quit = "Quit"; + const QString ReloadAllScripts = "Reload All Scripts"; + const QString ReloadContent = "Reload Content (Clears all caches)"; + const QString RenderClearKtxCache = "Clear KTX Cache (requires restart)"; + const QString RenderMaxTextureMemory = "Maximum Texture Memory"; + const QString RenderMaxTextureAutomatic = "Automatic Texture Memory"; + const QString RenderMaxTexture4MB = "4 MB"; + const QString RenderMaxTexture64MB = "64 MB"; + const QString RenderMaxTexture256MB = "256 MB"; + const QString RenderMaxTexture512MB = "512 MB"; + const QString RenderMaxTexture1024MB = "1024 MB"; + const QString RenderMaxTexture2048MB = "2048 MB"; + const QString RenderMaxTexture3072MB = "3072 MB"; + const QString RenderMaxTexture4096MB = "4096 MB"; + const QString RenderMaxTexture6144MB = "6144 MB"; + const QString RenderMaxTexture8192MB = "8192 MB"; + const QString RenderSensorToWorldMatrix = "Show SensorToWorld Matrix"; + const QString RenderIKTargets = "Show IK Targets"; + const QString RenderIKConstraints = "Show IK Constraints"; + const QString RenderIKChains = "Show IK Chains"; + const QString RenderDetailedCollision = "Show Detailed Collision"; + const QString ResetAvatarSize = "Reset Avatar Size"; + const QString ResetSensors = "Reset Sensors"; + const QString RunningScripts = "Running Scripts..."; + const QString RunClientScriptTests = "Run Client Script Tests"; + const QString RunTimingTests = "Run Timing Tests"; + const QString ScriptedMotorControl = "Enable Scripted Motor Control"; + const QString ShowTrackedObjects = "Show Tracked Objects"; + const QString SendWrongDSConnectVersion = "Send wrong DS connect version"; + const QString SendWrongProtocolVersion = "Send wrong protocol version"; + const QString SetHomeLocation = "Set Home Location"; + const QString ShowBordersEntityNodes = "Show Entity Nodes"; + const QString ShowBoundingCollisionShapes = "Show Bounding Collision Shapes"; + const QString ShowDSConnectTable = "Show Domain Connection Timing"; + const QString ShowMyLookAtVectors = "Show My Eye Vectors"; + const QString ShowOtherLookAtVectors = "Show Other Eye Vectors"; + const QString EnableLookAtSnapping = "Enable LookAt Snapping"; + const QString ShowRealtimeEntityStats = "Show Realtime Entity Stats"; + const QString SimulateEyeTracking = "Simulate"; + const QString SMIEyeTracking = "SMI Eye Tracking"; + const QString SparseTextureManagement = "Enable Sparse Texture Management"; + const QString StartUpLocation = "Start-Up Location"; + const QString Stats = "Show Statistics"; + const QString AnimStats = "Show Animation Stats"; + const QString StopAllScripts = "Stop All Scripts"; + const QString SuppressShortTimings = "Suppress Timings Less than 10ms"; + const QString ThirdPerson = "Third Person"; + const QString ThreePointCalibration = "3 Point Calibration"; + const QString ThrottleFPSIfNotFocus = "Throttle FPS If Not Focus"; // FIXME - this value duplicated in Basic2DWindowOpenGLDisplayPlugin.cpp + const QString ToggleHipsFollowing = "Toggle Hips Following"; + const QString ToolWindow = "Tool Window"; + const QString TransmitterDrive = "Transmitter Drive"; + const QString TurnWithHead = "Turn using Head"; + const QString UseAudioForMouth = "Use Audio for Mouth"; + const QString UseCamera = "Use Camera"; + const QString VelocityFilter = "Velocity Filter"; + const QString VisibleToEveryone = "Everyone"; + const QString VisibleToFriends = "Friends"; + const QString VisibleToNoOne = "No one"; + const QString WorldAxes = "World Axes"; + const QString DesktopTabletToToolbar = "Desktop Tablet Becomes Toolbar"; + const QString HMDTabletToToolbar = "HMD Tablet Becomes Toolbar"; + const QString Shadows = "Shadows"; + const QString AntiAliasing = "Temporal Antialiasing (FXAA if disabled)"; + const QString AmbientOcclusion = "Ambient Occlusion"; + const QString NotificationSounds = "play_notification_sounds"; + const QString NotificationSoundsSnapshot = "play_notification_sounds_snapshot"; + const QString NotificationSoundsTablet = "play_notification_sounds_tablet"; + const QString ForceCoarsePicking = "Force Coarse Picking"; + const QString ComputeBlendshapes = "Compute Blendshapes"; + const QString HighlightTransitions = "Highlight Transitions"; +} + +#endif // hifi_Menu_h -#endif // hifi_Menu_h diff --git a/interface/src/scripting/DesktopScriptingInterface.cpp b/interface/src/scripting/DesktopScriptingInterface.cpp index 9a5759f086..a1c8e4fc6c 100644 --- a/interface/src/scripting/DesktopScriptingInterface.cpp +++ b/interface/src/scripting/DesktopScriptingInterface.cpp @@ -140,6 +140,6 @@ InteractiveWindowPointer DesktopScriptingInterface::createWindowOnThread(const Q return nullptr; } InteractiveWindowPointer window = new InteractiveWindow(sourceUrl, properties); - // window->moveToThread(targetThread); + window->moveToThread(targetThread); return window; } From 2498bf2fd8fdc2425fdcbb7a1ee16120a932e1b1 Mon Sep 17 00:00:00 2001 From: milad Date: Wed, 24 Jul 2019 17:45:47 -0700 Subject: [PATCH 09/17] Cr changes r1 --- .../qml/+webengine/TabletBrowser.qml | 6 +- .../controlsUit/+webengine/BaseWebView.qml | 7 +- .../qml/controlsUit/PermissionPopup.qml | 129 +++++++++--------- .../controlsUit/PermissionPopupBackground.qml | 14 +- 4 files changed, 80 insertions(+), 76 deletions(-) diff --git a/interface/resources/qml/+webengine/TabletBrowser.qml b/interface/resources/qml/+webengine/TabletBrowser.qml index 0e378857cb..12cb85e8e3 100644 --- a/interface/resources/qml/+webengine/TabletBrowser.qml +++ b/interface/resources/qml/+webengine/TabletBrowser.qml @@ -87,8 +87,8 @@ Item { } onFeaturePermissionRequested: { - permissionPopupBackground.permissionsOptions.securityOrigin = securityOrigin; - permissionPopupBackground.permissionsOptions.feature = feature; + permissionPopupBackground.securityOrigin = securityOrigin; + permissionPopupBackground.feature = feature; permissionPopupBackground.visible = true; } @@ -132,7 +132,7 @@ Item { HifiControls.PermissionPopupBackground { id: permissionPopupBackground onSendPermission: { - webview.grantFeaturePermission(securityOrigin, feature, shouldGivePermission) + webview.grantFeaturePermission(securityOrigin, feature, shouldGivePermission); } } } diff --git a/interface/resources/qml/controlsUit/+webengine/BaseWebView.qml b/interface/resources/qml/controlsUit/+webengine/BaseWebView.qml index 677775e774..70480906d5 100644 --- a/interface/resources/qml/controlsUit/+webengine/BaseWebView.qml +++ b/interface/resources/qml/controlsUit/+webengine/BaseWebView.qml @@ -14,7 +14,6 @@ import controlsUit 1.0 as ControlsUit WebEngineView { id: root - Component.onCompleted: { console.log("Connecting JS messaging to Hifi Logging") // Ensure the JS from the web-engine makes it to our logging @@ -42,15 +41,15 @@ WebEngineView { WebSpinner { } onFeaturePermissionRequested: { - permissionPopupBackground.permissionsOptions.securityOrigin = securityOrigin; - permissionPopupBackground.permissionsOptions.feature = feature; + permissionPopupBackground.securityOrigin = securityOrigin; + permissionPopupBackground.feature = feature; permissionPopupBackground.visible = true; } ControlsUit.PermissionPopupBackground { - z: 100 id: permissionPopupBackground + z: 100 onSendPermission: { root.grantFeaturePermission(securityOrigin, feature, shouldGivePermission); } diff --git a/interface/resources/qml/controlsUit/PermissionPopup.qml b/interface/resources/qml/controlsUit/PermissionPopup.qml index 08ed696a0f..48e4c7b120 100644 --- a/interface/resources/qml/controlsUit/PermissionPopup.qml +++ b/interface/resources/qml/controlsUit/PermissionPopup.qml @@ -2,94 +2,97 @@ import QtQuick 2.5 import QtWebEngine 1.5 import controlsUit 1.0 as HifiControls import stylesUit 1.0 as HifiStyles -import "../windows" as Windows -import "../." -Item { +Rectangle { id: root - width: 600 + width: 600 height: 200 - z:100 - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter + color: hifi.colors.white + + anchors.centerIn: parent readonly property var permissionLanguage: ({ [WebEngineView.MediaAudioCapture]: "access an audio input device", [WebEngineView.MediaVideoCapture]: "access a video device, like your webcam", [WebEngineView.MediaAudioVideoCapture]: "access an audio input device and video device", [WebEngineView.Geolocation]: "access your location", [WebEngineView.DesktopVideoCapture]: "capture video from your desktop", - [WebEngineView.DesktopAudioVideoCapture]: "capture audio and video from your desktop" + [WebEngineView.DesktopAudioVideoCapture]: "capture audio and video from your desktop", + "none": "Undefined permission being requested" }) property string currentRequestedPermission - signal permissionButtonPressed(real buttonNumber) - - Rectangle { - id: mainContainer - width: root.width - height: root.height - color: hifi.colors.white + signal permissionButtonPressed(int buttonNumber) - Row { - id: webAccessHeaderContainer - height: root.height * 0.30 - HifiStyles.RalewayBold { - id: webAccessHeaderText - text: "REQUEST FOR DEVICE ACCESS" - width: mainContainer.width - horizontalAlignment: Text.AlignHCenter - anchors.bottom: parent.bottom - font.bold: true - color: hifi.colors.black - size: 17 - } - } - - Row { - id: webAccessInfoContainer - anchors.top: webAccessHeaderContainer.bottom - anchors.topMargin: 10 - HifiStyles.RalewayLight { - width: mainContainer.width - id: webAccessInfoText - horizontalAlignment: Text.AlignHCenter - text: "This website is attempting to " + root.permissionLanguage[root.currentRequestedPermission] + "." - size: 15 - color: hifi.colors.black - } - } + Row { + id: webAccessHeaderContainer + height: 60 + width: parent.width + HifiStyles.RalewayBold { + id: webAccessHeaderText + text: "REQUEST FOR DEVICE ACCESS" + anchors.centerIn: parent + color: hifi.colors.black + size: 17 + } + } + + Row { + id: webAccessInfoContainer + height: 60 + width: parent.width + anchors.top: webAccessHeaderContainer.bottom + HifiStyles.RalewayLight { + id: webAccessInfoText + wrapMode: Text.WordWrap + width: root.width + horizontalAlignment: Text.AlignHCenter + text: "This website is attempting to " + root.permissionLanguage[root.currentRequestedPermission] + "." + size: 15 + color: hifi.colors.black + } + } + + Row { + id: permissionsButtonsRow + height: 100 + width: parent.width + anchors.top: webAccessInfoContainer.bottom Rectangle { - id: permissionsButtonRow - color: "#AAAAAA" - anchors.topMargin: 35 + id: permissionsButtonsContainer height: 50 - width: leftButton.width + rightButton.width + (this.space * 3) + width: parent.width anchors.top: webAccessInfoContainer.bottom anchors.horizontalCenter: webAccessInfoContainer.horizontalCenter - anchors.verticalCenter: webAccessInfoContainer.verticalCenter - property real space: 5 + property int space: 5 + color: "#998899" + HifiControls.Button { - anchors.left: permissionsButtonRow.left id: leftButton - anchors.leftMargin: permissionsButtonRow.space + + anchors.right: parent.horizontalCenter + anchors.horizontalCenterOffset: -parent.space + + text: "Don't Allow" + color: hifi.buttons.red + enabled: true + height: 25 + onClicked: { + root.permissionButtonPressed(0); + } + } + HifiControls.Button { + id: rightButton + + anchors.left: parent.horizontalCenter + anchors.horizontalCenterOffset: parent.space text: "Yes allow access" color: hifi.buttons.blue enabled: true width: 155 + height: 25 onClicked: { - root.permissionButtonPressed(0) - } - } - HifiControls.Button { - id: rightButton - anchors.left: leftButton.right - anchors.leftMargin: permissionsButtonRow.space - text: "Don't Allow" - color: hifi.buttons.red - enabled: true - onClicked: { - root.permissionButtonPressed(1) + root.permissionButtonPressed(1); } } } diff --git a/interface/resources/qml/controlsUit/PermissionPopupBackground.qml b/interface/resources/qml/controlsUit/PermissionPopupBackground.qml index 9cb0e9fb95..7c8a36dec1 100644 --- a/interface/resources/qml/controlsUit/PermissionPopupBackground.qml +++ b/interface/resources/qml/controlsUit/PermissionPopupBackground.qml @@ -1,8 +1,4 @@ import QtQuick 2.5 -import controlsUit 1.0 -import stylesUit 1.0 -import "../windows" -import "../." Rectangle { id: root @@ -17,13 +13,19 @@ Rectangle { permissionPopupItem.currentRequestedPermission = feature; } + MouseArea { + anchors.fill: parent + hoverEnabled: true + propagateComposedEvents: false + } + PermissionPopup { id: permissionPopupItem onPermissionButtonPressed: { if (buttonNumber === 0) { - root.sendPermission(securityOrigin, feature, true) + root.sendPermission(securityOrigin, feature, false); } else { - root.sendPermission(securityOrigin, feature, false) + root.sendPermission(securityOrigin, feature, true); } root.visible = false; securityOrigin = 'none'; From 993e5db2daa9ba36a3789eb5d092467f6ab36a79 Mon Sep 17 00:00:00 2001 From: milad Date: Wed, 24 Jul 2019 17:55:38 -0700 Subject: [PATCH 10/17] changed rectangle to have anchor.fill --- interface/resources/qml/controlsUit/PermissionPopup.qml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/controlsUit/PermissionPopup.qml b/interface/resources/qml/controlsUit/PermissionPopup.qml index 48e4c7b120..fb3ee065e5 100644 --- a/interface/resources/qml/controlsUit/PermissionPopup.qml +++ b/interface/resources/qml/controlsUit/PermissionPopup.qml @@ -61,10 +61,9 @@ Rectangle { id: permissionsButtonsContainer height: 50 width: parent.width - anchors.top: webAccessInfoContainer.bottom - anchors.horizontalCenter: webAccessInfoContainer.horizontalCenter + anchors.fill: parent + property int space: 5 - color: "#998899" HifiControls.Button { id: leftButton From 4c0d8b6fda217b391bdedadb6299152019e8bee4 Mon Sep 17 00:00:00 2001 From: milad Date: Thu, 25 Jul 2019 12:08:40 -0700 Subject: [PATCH 11/17] improved layout to match the figment more --- .../qml/controlsUit/PermissionPopup.qml | 106 +++++++++--------- 1 file changed, 54 insertions(+), 52 deletions(-) diff --git a/interface/resources/qml/controlsUit/PermissionPopup.qml b/interface/resources/qml/controlsUit/PermissionPopup.qml index fb3ee065e5..549d6f7d6d 100644 --- a/interface/resources/qml/controlsUit/PermissionPopup.qml +++ b/interface/resources/qml/controlsUit/PermissionPopup.qml @@ -1,12 +1,13 @@ import QtQuick 2.5 import QtWebEngine 1.5 +import QtQuick.Layouts 1.3 import controlsUit 1.0 as HifiControls import stylesUit 1.0 as HifiStyles Rectangle { id: root - width: 600 - height: 200 + width: 750 + height: 225 color: hifi.colors.white anchors.centerIn: parent @@ -22,78 +23,79 @@ Rectangle { property string currentRequestedPermission signal permissionButtonPressed(int buttonNumber) - Row { - id: webAccessHeaderContainer - - height: 60 - width: parent.width - HifiStyles.RalewayBold { - id: webAccessHeaderText - text: "REQUEST FOR DEVICE ACCESS" - anchors.centerIn: parent - color: hifi.colors.black - size: 17 - } - } - - Row { - id: webAccessInfoContainer - height: 60 - width: parent.width - anchors.top: webAccessHeaderContainer.bottom - HifiStyles.RalewayLight { - id: webAccessInfoText - wrapMode: Text.WordWrap - width: root.width - horizontalAlignment: Text.AlignHCenter - text: "This website is attempting to " + root.permissionLanguage[root.currentRequestedPermission] + "." - size: 15 - color: hifi.colors.black - } - } - - Row { - id: permissionsButtonsRow - height: 100 - width: parent.width - anchors.top: webAccessInfoContainer.bottom + ColumnLayout { + anchors.fill: parent Rectangle { - id: permissionsButtonsContainer - height: 50 - width: parent.width - anchors.fill: parent + id: webAccessHeaderContainer + height: 75 + anchors.top: parent.top + Layout.preferredWidth: parent.width - property int space: 5 + HifiStyles.RalewayBold { + id: webAccessHeaderText + text: "REQUEST FOR DEVICE ACCESS" + + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom + wrapMode: Text.WordWrap + color: hifi.colors.black + size: 30 + } + } + + Rectangle { + id: webAccessInfoContainer + height: 35 + Layout.preferredWidth: parent.width + + HifiStyles.RalewayLight { + id: webAccessInfoText + text: "This website is attempting to " + root.permissionLanguage[root.currentRequestedPermission] + "." + + anchors.centerIn: parent + wrapMode: Text.WordWrap + size: 20 + color: hifi.colors.black + } + } + + Rectangle { + id: permissionsButtonsRow + height: 115 + Layout.preferredWidth: parent.width + Layout.topMargin: 35 + property int space: 8 + readonly property int _LEFT_BUTTON: 0 + readonly property int _RIGHT_BUTTON: 1 HifiControls.Button { id: leftButton + text: "Don't Allow" anchors.right: parent.horizontalCenter - anchors.horizontalCenterOffset: -parent.space - - text: "Don't Allow" + anchors.rightMargin: parent.space color: hifi.buttons.red enabled: true - height: 25 + height: 38 onClicked: { - root.permissionButtonPressed(0); + root.permissionButtonPressed(parent._LEFT_BUTTON); } } HifiControls.Button { id: rightButton + text: "Yes allow access" anchors.left: parent.horizontalCenter - anchors.horizontalCenterOffset: parent.space - - text: "Yes allow access" + anchors.leftMargin: parent.space color: hifi.buttons.blue enabled: true width: 155 - height: 25 + height: 38 onClicked: { - root.permissionButtonPressed(1); + root.permissionButtonPressed(parent._RIGHT_BUTTON); } } } } + } \ No newline at end of file From 2f4566b63ca8feb137ceb417f2ac5b7bf0fb9139 Mon Sep 17 00:00:00 2001 From: milad Date: Thu, 25 Jul 2019 12:17:38 -0700 Subject: [PATCH 12/17] merged master and fixed height --- interface/resources/qml/controlsUit/PermissionPopup.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/resources/qml/controlsUit/PermissionPopup.qml b/interface/resources/qml/controlsUit/PermissionPopup.qml index 549d6f7d6d..9940232eb1 100644 --- a/interface/resources/qml/controlsUit/PermissionPopup.qml +++ b/interface/resources/qml/controlsUit/PermissionPopup.qml @@ -7,7 +7,7 @@ import stylesUit 1.0 as HifiStyles Rectangle { id: root width: 750 - height: 225 + height: 210 color: hifi.colors.white anchors.centerIn: parent @@ -61,7 +61,7 @@ Rectangle { Rectangle { id: permissionsButtonsRow - height: 115 + height: 100 Layout.preferredWidth: parent.width Layout.topMargin: 35 property int space: 8 From 5083e449b05d06dde46d5bf6656f5972b4f79fd6 Mon Sep 17 00:00:00 2001 From: milad Date: Thu, 25 Jul 2019 13:11:11 -0700 Subject: [PATCH 13/17] cr round 2 --- .../resources/qml/+webengine/TabletBrowser.qml | 4 ++++ .../+webengine/FlickableWebViewCore.qml | 5 +++++ .../qml/controlsUit/+webengine/BaseWebView.qml | 4 ++++ .../qml/controlsUit/PermissionPopup.qml | 17 +++-------------- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/interface/resources/qml/+webengine/TabletBrowser.qml b/interface/resources/qml/+webengine/TabletBrowser.qml index 12cb85e8e3..49b87e51dd 100644 --- a/interface/resources/qml/+webengine/TabletBrowser.qml +++ b/interface/resources/qml/+webengine/TabletBrowser.qml @@ -87,6 +87,10 @@ Item { } onFeaturePermissionRequested: { + if (permissionPopupBackground.visible === true) { + console.log("Browser engine requested a new permission, but user is already being presented with a different permission request. Aborting request for new permission..."); + return; + } permissionPopupBackground.securityOrigin = securityOrigin; permissionPopupBackground.feature = feature; diff --git a/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml b/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml index f8343db807..a36b6791a4 100644 --- a/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml +++ b/interface/resources/qml/controls/+webengine/FlickableWebViewCore.qml @@ -146,6 +146,11 @@ Item { } onFeaturePermissionRequested: { + if (permissionPopupBackground.visible === true) { + console.log("Browser engine requested a new permission, but user is already being presented with a different permission request. Aborting request for new permission..."); + return; + } + permissionPopupBackground.securityOrigin = securityOrigin; permissionPopupBackground.feature = feature; diff --git a/interface/resources/qml/controlsUit/+webengine/BaseWebView.qml b/interface/resources/qml/controlsUit/+webengine/BaseWebView.qml index 70480906d5..3a8dc917a6 100644 --- a/interface/resources/qml/controlsUit/+webengine/BaseWebView.qml +++ b/interface/resources/qml/controlsUit/+webengine/BaseWebView.qml @@ -41,6 +41,10 @@ WebEngineView { WebSpinner { } onFeaturePermissionRequested: { + if (permissionPopupBackground.visible === true) { + console.log("Browser engine requested a new permission, but user is already being presented with a different permission request. Aborting request for new permission..."); + return; + } permissionPopupBackground.securityOrigin = securityOrigin; permissionPopupBackground.feature = feature; diff --git a/interface/resources/qml/controlsUit/PermissionPopup.qml b/interface/resources/qml/controlsUit/PermissionPopup.qml index 9940232eb1..58c0de9b43 100644 --- a/interface/resources/qml/controlsUit/PermissionPopup.qml +++ b/interface/resources/qml/controlsUit/PermissionPopup.qml @@ -26,13 +26,10 @@ Rectangle { ColumnLayout { anchors.fill: parent Rectangle { - id: webAccessHeaderContainer height: 75 - anchors.top: parent.top Layout.preferredWidth: parent.width HifiStyles.RalewayBold { - id: webAccessHeaderText text: "REQUEST FOR DEVICE ACCESS" anchors.horizontalCenter: parent.horizontalCenter @@ -44,12 +41,10 @@ Rectangle { } Rectangle { - id: webAccessInfoContainer height: 35 Layout.preferredWidth: parent.width HifiStyles.RalewayLight { - id: webAccessInfoText text: "This website is attempting to " + root.permissionLanguage[root.currentRequestedPermission] + "." anchors.centerIn: parent @@ -60,39 +55,33 @@ Rectangle { } Rectangle { - id: permissionsButtonsRow height: 100 Layout.preferredWidth: parent.width Layout.topMargin: 35 property int space: 8 - readonly property int _LEFT_BUTTON: 0 - readonly property int _RIGHT_BUTTON: 1 HifiControls.Button { - id: leftButton text: "Don't Allow" anchors.right: parent.horizontalCenter anchors.rightMargin: parent.space + width: 125 color: hifi.buttons.red - enabled: true height: 38 onClicked: { - root.permissionButtonPressed(parent._LEFT_BUTTON); + root.permissionButtonPressed(0); } } HifiControls.Button { - id: rightButton text: "Yes allow access" anchors.left: parent.horizontalCenter anchors.leftMargin: parent.space color: hifi.buttons.blue - enabled: true width: 155 height: 38 onClicked: { - root.permissionButtonPressed(parent._RIGHT_BUTTON); + root.permissionButtonPressed(1); } } } From 20b709b3827ec785bc1f38608118984eb609111c Mon Sep 17 00:00:00 2001 From: MiladNazeri Date: Thu, 25 Jul 2019 12:44:33 -0700 Subject: [PATCH 14/17] Update interface/resources/qml/controlsUit/PermissionPopup.qml Co-Authored-By: Zach Fox --- interface/resources/qml/controlsUit/PermissionPopup.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/resources/qml/controlsUit/PermissionPopup.qml b/interface/resources/qml/controlsUit/PermissionPopup.qml index 58c0de9b43..069388d924 100644 --- a/interface/resources/qml/controlsUit/PermissionPopup.qml +++ b/interface/resources/qml/controlsUit/PermissionPopup.qml @@ -26,7 +26,7 @@ Rectangle { ColumnLayout { anchors.fill: parent Rectangle { - height: 75 + Layout.preferredHeight: 75 Layout.preferredWidth: parent.width HifiStyles.RalewayBold { @@ -87,4 +87,4 @@ Rectangle { } } -} \ No newline at end of file +} From cf23b7a3037fdde9cb78c6dba3e066637e12cb18 Mon Sep 17 00:00:00 2001 From: MiladNazeri Date: Thu, 25 Jul 2019 12:44:44 -0700 Subject: [PATCH 15/17] Update interface/resources/qml/controlsUit/PermissionPopup.qml Co-Authored-By: Zach Fox --- interface/resources/qml/controlsUit/PermissionPopup.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/resources/qml/controlsUit/PermissionPopup.qml b/interface/resources/qml/controlsUit/PermissionPopup.qml index 069388d924..677063ae37 100644 --- a/interface/resources/qml/controlsUit/PermissionPopup.qml +++ b/interface/resources/qml/controlsUit/PermissionPopup.qml @@ -55,7 +55,7 @@ Rectangle { } Rectangle { - height: 100 + Layout.preferredHeight: 100 Layout.preferredWidth: parent.width Layout.topMargin: 35 property int space: 8 From b419be97be28c1af31447a88e27a5e70b6ccd4c8 Mon Sep 17 00:00:00 2001 From: MiladNazeri Date: Thu, 25 Jul 2019 12:44:57 -0700 Subject: [PATCH 16/17] Update interface/resources/qml/controlsUit/PermissionPopup.qml Co-Authored-By: Zach Fox --- interface/resources/qml/controlsUit/PermissionPopup.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/resources/qml/controlsUit/PermissionPopup.qml b/interface/resources/qml/controlsUit/PermissionPopup.qml index 677063ae37..8ca4faebba 100644 --- a/interface/resources/qml/controlsUit/PermissionPopup.qml +++ b/interface/resources/qml/controlsUit/PermissionPopup.qml @@ -48,7 +48,7 @@ Rectangle { text: "This website is attempting to " + root.permissionLanguage[root.currentRequestedPermission] + "." anchors.centerIn: parent - wrapMode: Text.WordWrap + wrapMode: Text.Wrap size: 20 color: hifi.colors.black } From b0723599d827906186a858e72e595abfeeecedcb Mon Sep 17 00:00:00 2001 From: MiladNazeri Date: Thu, 25 Jul 2019 12:45:07 -0700 Subject: [PATCH 17/17] Update interface/resources/qml/controlsUit/PermissionPopup.qml Co-Authored-By: Zach Fox --- interface/resources/qml/controlsUit/PermissionPopup.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/resources/qml/controlsUit/PermissionPopup.qml b/interface/resources/qml/controlsUit/PermissionPopup.qml index 8ca4faebba..f57729f602 100644 --- a/interface/resources/qml/controlsUit/PermissionPopup.qml +++ b/interface/resources/qml/controlsUit/PermissionPopup.qml @@ -41,7 +41,7 @@ Rectangle { } Rectangle { - height: 35 + Layout.preferredHeight: 35 Layout.preferredWidth: parent.width HifiStyles.RalewayLight {