content/hifi-content/ben/GreeterApps/fogbugz-app.js
2022-02-13 21:50:01 +01:00

104 lines
No EOL
3 KiB
JavaScript

(function() { // BEGIN LOCAL_SCOPE
var uiQml = Script.resolvePath('fogbugz-app.qml?'+Math.random());
var toolIconUrl = Script.resolvePath('svg/kiwi.svg');
var toolHeight = 50;
var toolWidth = 50;
var TOOLBAR_MARGIN_Y = 0;
var fogbugzVisible = false;
var fogbugzWebTablet;
// We persist clientOnly data in the .ini file, and reconsistitute it on restart.
// To keep things consistent, we pickle the tablet data in Settings, and kill any existing such on restart and domain change.
var persistenceKey = "io.highfidelity.lastDomainTablet";
var fogbugzWindow = new OverlayWindow({
title: 'FogBugz',
source: uiQml,
width: 800,
height: 800,
visible: false
});
var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system");
function shouldShowWebTablet() {
var rightPose = Controller.getPoseValue(Controller.Standard.RightHand);
var leftPose = Controller.getPoseValue(Controller.Standard.LeftHand);
var hasHydra = !!Controller.Hardware.Hydra;
return HMD.active && (leftPose.valid || rightPose.valid || hasHydra);
}
function showFogBugz() {
fogbugzWindow.visible = true;
print("SHOWING");
fogbugzVisible = true;
}
function hideTablet(tablet) {
if (!tablet) {
return;
}
updateButtonState(false);
tablet.unregister();
tablet.destroy();
fogbugzWebTablet = null;
Settings.setValue(persistenceKey, "");
}
function clearOldTablet() { // If there was a tablet from previous domain or session, kill it and let it be recreated
}
function hideFogBugz() {
print("HIDING");
if (fogbugzWindow.visible) {
fogbugzWindow.visible = false;
//fogbugzWindow.setURL("about:blank");
} else if (fogbugzWebTablet) {
}
fogbugzVisible = false;
}
function toggleFogBugz() {
if (fogbugzVisible) {
hideFogBugz();
} else {
showFogBugz();
}
}
var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system");
var browseExamplesButton = tablet.addButton({
icon: toolIconUrl,
activeIcon: toolIconUrl,
text: "FOGBUGZ"
});
function updateButtonState(visible) {
}
function onfogbugzWindowVisibilityChanged() {
updateButtonState(fogbugzWindow.visible);
fogbugzVisible = fogbugzWindow.visible;
browseExamplesButton.editProperties({isActive: fogbugzVisible});
}
function onClick() {
toggleFogBugz();
}
browseExamplesButton.clicked.connect(onClick);
fogbugzWindow.visibleChanged.connect(onfogbugzWindowVisibilityChanged);
clearOldTablet(); // Run once at startup, in case there's anything laying around from a crash.
// We could also optionally do something like Window.domainChanged.connect(function () {Script.setTimeout(clearOldTablet, 2000)}),
// but the HUD version stays around, so lets do the same.
Script.scriptEnding.connect(function () {
browseExamplesButton.clicked.disconnect(onClick);
tablet.removeButton(browseExamplesButton);
fogbugzWindow.visibleChanged.disconnect(onfogbugzWindowVisibilityChanged);
});
}()); // END LOCAL_SCOPE