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

103 lines
No EOL
2.9 KiB
JavaScript

(function() { // BEGIN LOCAL_SCOPE
var uiQml = Script.resolvePath("slack_beta.qml");
var toolIconUrl = Script.resolvePath("app-win10_0000.svg");
var toolHeight = 50;
var toolWidth = 50;
var TOOLBAR_MARGIN_Y = 0;
var slackVisible = false;
var slackWebTablet;
// 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 slackWindow = new OverlayWindow({
title: 'Slack',
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 showSlack() {
slackWindow.visible = true;
print("SHOWING");
slackVisible = true;
}
function hideTablet(tablet) {
if (!tablet) {
return;
}
updateButtonState(false);
tablet.unregister();
tablet.destroy();
slackWebTablet = null;
Settings.setValue(persistenceKey, "");
}
function clearOldTablet() { // If there was a tablet from previous domain or session, kill it and let it be recreated
}
function hideSlack() {
print("HIDING");
if (slackWindow.visible) {
slackWindow.visible = false;
//slackWindow.setURL("about:blank");
} else if (slackWebTablet) {
}
slackVisible = false;
}
function toggleSlack() {
if (slackVisible) {
hideSlack();
} else {
showSlack();
}
}
var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system");
var browseExamplesButton = tablet.addButton({
icon: toolIconUrl,
activeIcon: toolIconUrl,
text: "SLACK"
});
function updateButtonState(visible) {
}
function onslackWindowVisibilityChanged() {
updateButtonState(slackWindow.visible);
slackVisible = slackWindow.visible;
}
function onClick() {
toggleSlack();
}
browseExamplesButton.clicked.connect(onClick);
slackWindow.visibleChanged.connect(onslackWindowVisibilityChanged);
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);
slackWindow.visibleChanged.disconnect(onslackWindowVisibilityChanged);
});
}()); // END LOCAL_SCOPE