104 lines
No EOL
3 KiB
JavaScript
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
|