mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 20:31:29 +02:00
clean up unused code and files
This commit is contained in:
parent
6705846518
commit
2fc76d64fd
9 changed files with 1 additions and 431 deletions
|
@ -12,7 +12,6 @@ import QtQuick 2.5
|
||||||
import QtQuick.Controls 1.4
|
import QtQuick.Controls 1.4
|
||||||
|
|
||||||
import "../dialogs"
|
import "../dialogs"
|
||||||
import "../menus"
|
|
||||||
import "../js/Utils.js" as Utils
|
import "../js/Utils.js" as Utils
|
||||||
|
|
||||||
// This is our primary 'desktop' object to which all VR dialogs and windows are childed.
|
// This is our primary 'desktop' object to which all VR dialogs and windows are childed.
|
||||||
|
|
|
@ -1,175 +0,0 @@
|
||||||
//
|
|
||||||
// MessageDialog.qml
|
|
||||||
//
|
|
||||||
// Created by Bradley Austin Davis on 18 Jan 2016
|
|
||||||
// Copyright 2016 High Fidelity, Inc.
|
|
||||||
//
|
|
||||||
// Distributed under the Apache License, Version 2.0.
|
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
||||||
//
|
|
||||||
|
|
||||||
import QtQuick 2.5
|
|
||||||
import QtQuick.Controls 1.4
|
|
||||||
|
|
||||||
import "."
|
|
||||||
|
|
||||||
Item {
|
|
||||||
id: root
|
|
||||||
anchors.fill: parent
|
|
||||||
objectName: "MouseMenuHandlerItem"
|
|
||||||
|
|
||||||
MouseArea {
|
|
||||||
id: menuRoot;
|
|
||||||
objectName: "MouseMenuHandlerMouseArea"
|
|
||||||
anchors.fill: parent
|
|
||||||
enabled: d.topMenu !== null
|
|
||||||
onClicked: {
|
|
||||||
d.clearMenus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QtObject {
|
|
||||||
id: d
|
|
||||||
property var menuStack: []
|
|
||||||
property var topMenu: null;
|
|
||||||
property var modelMaker: Component { ListModel { } }
|
|
||||||
property var menuViewMaker: Component {
|
|
||||||
VrMenuView {
|
|
||||||
id: subMenu
|
|
||||||
onSelected: d.handleSelection(subMenu, currentItem, item)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
property var delay: Timer { // No setTimeout in QML.
|
|
||||||
property var menuItem: null;
|
|
||||||
interval: 0
|
|
||||||
repeat: false
|
|
||||||
running: false
|
|
||||||
function trigger(item) { // Capture item and schedule asynchronous Timer.
|
|
||||||
menuItem = item;
|
|
||||||
start();
|
|
||||||
}
|
|
||||||
onTriggered: {
|
|
||||||
menuItem.trigger(); // Now trigger the item.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function toModel(items) {
|
|
||||||
var result = modelMaker.createObject(desktop);
|
|
||||||
for (var i = 0; i < items.length; ++i) {
|
|
||||||
var item = items[i];
|
|
||||||
if (!item.visible) continue;
|
|
||||||
switch (item.type) {
|
|
||||||
case MenuItemType.Menu:
|
|
||||||
result.append({"name": item.title, "item": item})
|
|
||||||
break;
|
|
||||||
case MenuItemType.Item:
|
|
||||||
result.append({"name": item.text, "item": item})
|
|
||||||
break;
|
|
||||||
case MenuItemType.Separator:
|
|
||||||
result.append({"name": "", "item": item})
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function popMenu() {
|
|
||||||
if (menuStack.length) {
|
|
||||||
menuStack.pop().destroy();
|
|
||||||
}
|
|
||||||
if (menuStack.length) {
|
|
||||||
topMenu = menuStack[menuStack.length - 1];
|
|
||||||
topMenu.focus = true;
|
|
||||||
} else {
|
|
||||||
topMenu = null;
|
|
||||||
offscreenFlags.navigationFocused = false;
|
|
||||||
menuRoot.enabled = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function pushMenu(newMenu) {
|
|
||||||
menuStack.push(newMenu);
|
|
||||||
topMenu = newMenu;
|
|
||||||
topMenu.focus = true;
|
|
||||||
offscreenFlags.navigationFocused = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function clearMenus() {
|
|
||||||
while (menuStack.length) {
|
|
||||||
popMenu()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function clampMenuPosition(menu) {
|
|
||||||
var margins = 0;
|
|
||||||
if (menu.x < margins) {
|
|
||||||
menu.x = margins
|
|
||||||
} else if ((menu.x + menu.width + margins) > root.width) {
|
|
||||||
menu.x = root.width - (menu.width + margins);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (menu.y < 0) {
|
|
||||||
menu.y = margins
|
|
||||||
} else if ((menu.y + menu.height + margins) > root.height) {
|
|
||||||
menu.y = root.height - (menu.height + margins);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function buildMenu(items, targetPosition) {
|
|
||||||
var model = toModel(items);
|
|
||||||
// Menus must be childed to desktop for Z-ordering
|
|
||||||
var newMenu = menuViewMaker.createObject(desktop, { model: model, z: topMenu ? topMenu.z + 1 : desktop.zLevels.menu, isSubMenu: topMenu !== null });
|
|
||||||
if (targetPosition) {
|
|
||||||
newMenu.x = targetPosition.x
|
|
||||||
newMenu.y = targetPosition.y - newMenu.height / 3 * 1
|
|
||||||
}
|
|
||||||
clampMenuPosition(newMenu);
|
|
||||||
pushMenu(newMenu);
|
|
||||||
return newMenu;
|
|
||||||
}
|
|
||||||
|
|
||||||
function handleSelection(parentMenu, selectedItem, item) {
|
|
||||||
while (topMenu && topMenu !== parentMenu) {
|
|
||||||
popMenu();
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (item.type) {
|
|
||||||
case MenuItemType.Menu:
|
|
||||||
var target = Qt.vector2d(topMenu.x, topMenu.y).plus(Qt.vector2d(selectedItem.x + 96, selectedItem.y));
|
|
||||||
buildMenu(item.items, target).objectName = item.title;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MenuItemType.Item:
|
|
||||||
console.log("Triggering " + item.text)
|
|
||||||
// Don't block waiting for modal dialogs and such that the menu might open.
|
|
||||||
delay.trigger(item);
|
|
||||||
clearMenus();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function popup(parent, items, point) {
|
|
||||||
d.clearMenus();
|
|
||||||
menuRoot.enabled = true;
|
|
||||||
d.buildMenu(items, point);
|
|
||||||
}
|
|
||||||
|
|
||||||
function toggle(parent, items, point) {
|
|
||||||
if (d.topMenu) {
|
|
||||||
d.clearMenus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
popup(parent, items, point);
|
|
||||||
}
|
|
||||||
|
|
||||||
function closeLastMenu() {
|
|
||||||
if (d.menuStack.length) {
|
|
||||||
d.popMenu();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,113 +0,0 @@
|
||||||
//
|
|
||||||
// VrMenuItem.qml
|
|
||||||
//
|
|
||||||
// Created by Bradley Austin Davis on 29 Apr 2015
|
|
||||||
// Copyright 2015 High Fidelity, Inc.
|
|
||||||
//
|
|
||||||
// Distributed under the Apache License, Version 2.0.
|
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
||||||
//
|
|
||||||
|
|
||||||
import QtQuick 2.5
|
|
||||||
import QtQuick.Controls 1.4
|
|
||||||
import QtQuick.Controls.Styles 1.4
|
|
||||||
|
|
||||||
import "../controls-uit"
|
|
||||||
import "../styles-uit"
|
|
||||||
|
|
||||||
Item {
|
|
||||||
id: root
|
|
||||||
HifiConstants { id: hifi }
|
|
||||||
property alias text: label.text
|
|
||||||
property var source
|
|
||||||
|
|
||||||
implicitHeight: source.visible ? 2 * label.implicitHeight : 0
|
|
||||||
implicitWidth: 2 * hifi.dimensions.menuPadding.x + check.width + label.width + tail.width
|
|
||||||
visible: source.visible
|
|
||||||
width: parent.width
|
|
||||||
|
|
||||||
CheckBox {
|
|
||||||
id: check
|
|
||||||
// FIXME: Should use radio buttons if source.exclusiveGroup.
|
|
||||||
anchors {
|
|
||||||
left: parent.left
|
|
||||||
leftMargin: hifi.dimensions.menuPadding.x
|
|
||||||
top: label.top
|
|
||||||
topMargin: 0
|
|
||||||
}
|
|
||||||
width: 20
|
|
||||||
visible: source.visible && source.type === 1 && source.checkable
|
|
||||||
checked: setChecked()
|
|
||||||
function setChecked() {
|
|
||||||
if (!source || source.type !== 1 || !source.checkable) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// FIXME this works for native QML menus but I don't think it will
|
|
||||||
// for proxied QML menus
|
|
||||||
return source.checked;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RalewaySemiBold {
|
|
||||||
id: label
|
|
||||||
size: hifi.fontSizes.rootMenu
|
|
||||||
font.capitalization: isSubMenu ? Font.MixedCase : Font.AllUppercase
|
|
||||||
anchors.left: check.right
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
verticalAlignment: Text.AlignVCenter
|
|
||||||
color: source.enabled ? hifi.colors.baseGrayShadow : hifi.colors.baseGrayShadow50
|
|
||||||
enabled: source.visible && (source.type !== 0 ? source.enabled : false)
|
|
||||||
visible: source.visible
|
|
||||||
}
|
|
||||||
|
|
||||||
Item {
|
|
||||||
id: separator
|
|
||||||
anchors {
|
|
||||||
fill: parent
|
|
||||||
leftMargin: hifi.dimensions.menuPadding.x + check.width
|
|
||||||
rightMargin: hifi.dimensions.menuPadding.x + tail.width
|
|
||||||
}
|
|
||||||
visible: source.type === MenuItemType.Separator
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
anchors {
|
|
||||||
left: parent.left
|
|
||||||
right: parent.right
|
|
||||||
verticalCenter: parent.verticalCenter
|
|
||||||
}
|
|
||||||
height: 1
|
|
||||||
color: hifi.colors.lightGray50
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Item {
|
|
||||||
id: tail
|
|
||||||
width: 48 + (shortcut.visible ? shortcut.width : 0)
|
|
||||||
anchors {
|
|
||||||
verticalCenter: parent.verticalCenter
|
|
||||||
right: parent.right
|
|
||||||
rightMargin: hifi.dimensions.menuPadding.x
|
|
||||||
}
|
|
||||||
|
|
||||||
RalewayLight {
|
|
||||||
id: shortcut
|
|
||||||
text: source.shortcut ? source.shortcut : ""
|
|
||||||
size: hifi.fontSizes.shortcutText
|
|
||||||
color: hifi.colors.baseGrayShadow
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
anchors.right: parent.right
|
|
||||||
anchors.rightMargin: 15
|
|
||||||
visible: source.visible && text != ""
|
|
||||||
}
|
|
||||||
|
|
||||||
HiFiGlyphs {
|
|
||||||
text: hifi.glyphs.disclosureExpand
|
|
||||||
color: source.enabled ? hifi.colors.baseGrayShadow : hifi.colors.baseGrayShadow25
|
|
||||||
size: 2 * hifi.fontSizes.rootMenuDisclosure
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
|
||||||
anchors.right: parent.right
|
|
||||||
horizontalAlignment: Text.AlignRight
|
|
||||||
visible: source.visible && (source.type === 2)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,117 +0,0 @@
|
||||||
//
|
|
||||||
// VrMenuView.qml
|
|
||||||
//
|
|
||||||
// Created by Bradley Austin Davis on 18 Jan 2016
|
|
||||||
// Copyright 2016 High Fidelity, Inc.
|
|
||||||
//
|
|
||||||
// Distributed under the Apache License, Version 2.0.
|
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
||||||
//
|
|
||||||
|
|
||||||
import QtQuick 2.5
|
|
||||||
import QtQuick.Controls 1.4
|
|
||||||
import QtQuick.Controls.Styles 1.4
|
|
||||||
|
|
||||||
import "../styles-uit"
|
|
||||||
|
|
||||||
FocusScope {
|
|
||||||
id: root
|
|
||||||
implicitHeight: background.height
|
|
||||||
implicitWidth: background.width
|
|
||||||
|
|
||||||
property alias currentItem: listView.currentItem
|
|
||||||
property alias model: listView.model
|
|
||||||
property bool isSubMenu: false
|
|
||||||
signal selected(var item)
|
|
||||||
|
|
||||||
HifiConstants { id: hifi }
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
id: background
|
|
||||||
anchors.fill: listView
|
|
||||||
radius: hifi.dimensions.borderRadius
|
|
||||||
border.width: hifi.dimensions.borderWidth
|
|
||||||
border.color: hifi.colors.lightGrayText80
|
|
||||||
color: isSubMenu ? hifi.colors.faintGray : hifi.colors.faintGray80
|
|
||||||
}
|
|
||||||
|
|
||||||
ListView {
|
|
||||||
id: listView
|
|
||||||
x: 8; y: 8
|
|
||||||
width: 128
|
|
||||||
height: count * 32
|
|
||||||
topMargin: hifi.dimensions.menuPadding.y
|
|
||||||
onEnabledChanged: recalcSize();
|
|
||||||
onVisibleChanged: recalcSize();
|
|
||||||
onCountChanged: recalcSize();
|
|
||||||
focus: true
|
|
||||||
highlightMoveDuration: 0
|
|
||||||
|
|
||||||
highlight: Rectangle {
|
|
||||||
anchors {
|
|
||||||
left: parent ? parent.left : undefined
|
|
||||||
right: parent ? parent.right : undefined
|
|
||||||
leftMargin: hifi.dimensions.borderWidth
|
|
||||||
rightMargin: hifi.dimensions.borderWidth
|
|
||||||
}
|
|
||||||
color: hifi.colors.white
|
|
||||||
}
|
|
||||||
|
|
||||||
delegate: VrMenuItem {
|
|
||||||
text: name
|
|
||||||
source: item
|
|
||||||
onImplicitHeightChanged: listView.recalcSize()
|
|
||||||
onImplicitWidthChanged: listView.recalcSize()
|
|
||||||
|
|
||||||
MouseArea {
|
|
||||||
anchors.fill: parent
|
|
||||||
hoverEnabled: true
|
|
||||||
onEntered: listView.currentIndex = index
|
|
||||||
onClicked: root.selected(item)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function recalcSize() {
|
|
||||||
if (model.count !== count || !visible) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var originalIndex = currentIndex;
|
|
||||||
var maxWidth = width;
|
|
||||||
var newHeight = 0;
|
|
||||||
for (var i = 0; i < count; ++i) {
|
|
||||||
currentIndex = i;
|
|
||||||
if (!currentItem) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (currentItem && currentItem.implicitWidth > maxWidth) {
|
|
||||||
maxWidth = currentItem.implicitWidth
|
|
||||||
}
|
|
||||||
if (currentItem.visible) {
|
|
||||||
newHeight += currentItem.implicitHeight
|
|
||||||
}
|
|
||||||
}
|
|
||||||
newHeight += 2 * hifi.dimensions.menuPadding.y; // White space at top and bottom.
|
|
||||||
if (maxWidth > width) {
|
|
||||||
width = maxWidth;
|
|
||||||
}
|
|
||||||
if (newHeight > height) {
|
|
||||||
height = newHeight
|
|
||||||
}
|
|
||||||
currentIndex = originalIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
function previousItem() { currentIndex = (currentIndex + count - 1) % count; }
|
|
||||||
function nextItem() { currentIndex = (currentIndex + count + 1) % count; }
|
|
||||||
function selectCurrentItem() { if (currentIndex != -1) root.selected(currentItem.source); }
|
|
||||||
|
|
||||||
Keys.onUpPressed: previousItem();
|
|
||||||
Keys.onDownPressed: nextItem();
|
|
||||||
Keys.onSpacePressed: selectCurrentItem();
|
|
||||||
Keys.onRightPressed: selectCurrentItem();
|
|
||||||
Keys.onReturnPressed: selectCurrentItem();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1059,10 +1059,6 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
|
||||||
DependencyManager::get<AudioClient>()->toggleMute();
|
DependencyManager::get<AudioClient>()->toggleMute();
|
||||||
} else if (action == controller::toInt(controller::Action::CYCLE_CAMERA)) {
|
} else if (action == controller::toInt(controller::Action::CYCLE_CAMERA)) {
|
||||||
cycleCamera();
|
cycleCamera();
|
||||||
} else if (action == controller::toInt(controller::Action::UI_NAV_SELECT)) {
|
|
||||||
if (!offscreenUi->navigationFocused()) {
|
|
||||||
toggleMenuUnderReticle();
|
|
||||||
}
|
|
||||||
} else if (action == controller::toInt(controller::Action::CONTEXT_MENU)) {
|
} else if (action == controller::toInt(controller::Action::CONTEXT_MENU)) {
|
||||||
toggleTabletUI();
|
toggleTabletUI();
|
||||||
} else if (action == controller::toInt(controller::Action::RETICLE_X)) {
|
} else if (action == controller::toInt(controller::Action::RETICLE_X)) {
|
||||||
|
@ -1580,17 +1576,6 @@ QString Application::getUserAgent() {
|
||||||
return userAgent;
|
return userAgent;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::toggleMenuUnderReticle() const {
|
|
||||||
// In HMD, if the menu is near the mouse but not under it, the reticle can be at a significantly
|
|
||||||
// different depth. When you focus on the menu, the cursor can appear to your crossed eyes as both
|
|
||||||
// on the menu and off.
|
|
||||||
// Even in 2D, it is arguable whether the user would want the menu to be to the side.
|
|
||||||
const float X_LEFT_SHIFT = 50.0;
|
|
||||||
auto offscreenUi = DependencyManager::get<OffscreenUi>();
|
|
||||||
auto reticlePosition = getApplicationCompositor().getReticlePosition();
|
|
||||||
offscreenUi->toggleMenu(QPoint(reticlePosition.x - X_LEFT_SHIFT, reticlePosition.y));
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64_t lastTabletUIToggle { 0 };
|
uint64_t lastTabletUIToggle { 0 };
|
||||||
const uint64_t toggleTabletUILockout { 500000 };
|
const uint64_t toggleTabletUILockout { 500000 };
|
||||||
void Application::toggleTabletUI() const {
|
void Application::toggleTabletUI() const {
|
||||||
|
@ -2931,10 +2916,6 @@ void Application::keyPressEvent(QKeyEvent* event) {
|
||||||
|
|
||||||
|
|
||||||
void Application::keyReleaseEvent(QKeyEvent* event) {
|
void Application::keyReleaseEvent(QKeyEvent* event) {
|
||||||
if (event->key() == Qt::Key_Alt && _altPressed && hasFocus()) {
|
|
||||||
toggleMenuUnderReticle();
|
|
||||||
}
|
|
||||||
|
|
||||||
_keysPressed.remove(event->key());
|
_keysPressed.remove(event->key());
|
||||||
|
|
||||||
_controllerScriptingInterface->emitKeyReleaseEvent(event); // send events to any registered scripts
|
_controllerScriptingInterface->emitKeyReleaseEvent(event); // send events to any registered scripts
|
||||||
|
|
|
@ -484,7 +484,6 @@ private:
|
||||||
static void dragEnterEvent(QDragEnterEvent* event);
|
static void dragEnterEvent(QDragEnterEvent* event);
|
||||||
|
|
||||||
void maybeToggleMenuVisible(QMouseEvent* event) const;
|
void maybeToggleMenuVisible(QMouseEvent* event) const;
|
||||||
void toggleMenuUnderReticle() const;
|
|
||||||
void toggleTabletUI() const;
|
void toggleTabletUI() const;
|
||||||
|
|
||||||
MainWindow* _window;
|
MainWindow* _window;
|
||||||
|
|
|
@ -537,9 +537,6 @@ void OffscreenUi::unfocusWindows() {
|
||||||
Q_ASSERT(invokeResult);
|
Q_ASSERT(invokeResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OffscreenUi::toggleMenu(const QPoint& screenPosition) { // caller should already have mapped using getReticlePosition
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class FileDialogListener : public ModalDialogListener {
|
class FileDialogListener : public ModalDialogListener {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
|
@ -45,7 +45,6 @@ public:
|
||||||
bool navigationFocused();
|
bool navigationFocused();
|
||||||
void setNavigationFocused(bool focused);
|
void setNavigationFocused(bool focused);
|
||||||
void unfocusWindows();
|
void unfocusWindows();
|
||||||
void toggleMenu(const QPoint& screenCoordinates);
|
|
||||||
|
|
||||||
|
|
||||||
// Setting pinned to true will hide all overlay elements on the desktop that don't have a pinned flag
|
// Setting pinned to true will hide all overlay elements on the desktop that don't have a pinned flag
|
||||||
|
|
|
@ -118,7 +118,7 @@ WebTablet = function (url, width, dpi, hand, clientOnly) {
|
||||||
_this.clicked = true;
|
_this.clicked = true;
|
||||||
}
|
}
|
||||||
var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system");
|
var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system");
|
||||||
tablet.gotoMenuScreen();
|
tablet.gotoHomeScreen();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue