X-Git-Url: https://git-public.kairo.at/?p=tricorder.git;a=blobdiff_plain;f=js%2Ftricorder.js;h=3ab7ee948fe0f41b15b6723efffcf05cff3403f8;hp=de33ae3a630e2c2eed70a95e946c314aea24b8fd;hb=0c4c028bd224b3f9da26d71ce7b1d61c166a0ae2;hpb=3ad3aa73b25816412c03cbb98016039bd03f659a diff --git a/js/tricorder.js b/js/tricorder.js index de33ae3..3ab7ee9 100644 --- a/js/tricorder.js +++ b/js/tricorder.js @@ -305,6 +305,72 @@ var gModSound = { }, } +var gModEnv = { + activate: function() { + gSounds.scan.play(); + document.getElementById("envunavail").style.display = "none"; + document.getElementById("envavail").style.display = "block"; + window.addEventListener("devicelight", this.lightEvent, true); + window.addEventListener("deviceproximity", this.proxEvent, true); + setTimeout(function() { + if ((document.getElementById("envLight").textContent == "...") && + (document.getElementById("envDistance").textContent == "...")) { + gModEnv.deactivate(); + } + }, 5000); + try { + for (var cameraId of window.navigator.mozCameras.getListOfCameras()) { + window.navigator.mozCameras.getCamera({camera: cameraId}, function(aCamera) { + if (aCamera.capabilities.flashModes.indexOf('torch') !== -1) { + this.flashCamera = aCamera; + } + }); + } + if (this.flashCamera) { + document.getElementById("envFlashOn").onclick = gModEnv.switchFlashlight(true); + document.getElementById("envFlashOff").onclick = gModEnv.switchFlashlight(false); + document.getElementById("envFlashUnavail").style.display = "none"; + document.getElementById("envFlashAvail").style.display = "block"; + } + } catch (e) { + // camera api not supported + document.getElementById("envFlashUnavail").style.display = "block"; + document.getElementById("envFlashAvail").style.display = "none"; + } + }, + deactivate: function() { + gSounds.scan.pause(); + window.removeEventListener("devicelight", this.lightEvent, true); + window.removeEventListener("deviceproximity", this.proxEvent, true); + document.getElementById("envunavail").style.display = "block"; + document.getElementById("envavail").style.display = "none"; + document.getElementById("envLight").textContent = "..."; + document.getElementById("envDistance").textContent = "..."; + }, + lightEvent: function(lightData) { + // See http://www.w3.org/TR/ambient-light/ + document.getElementById("envLight").textContent = lightData.value + " lux"; + }, + proxEvent: function(proxData) { + // See http://www.w3.org/TR/2012/WD-proximity-20120712/ + if (proxData.value >= proxData.max) { + document.getElementById("envDistance").textContent = "(maximum, >= " + proxData.value + " cm)"; + } + else if (proxData.value <= proxData.min) { + document.getElementById("envDistance").textContent = "(minimum, <= " + proxData.value + " cm)"; + } + else { + document.getElementById("envDistance").textContent = proxData.value + " cm"; + } + }, + flashCamera: null, + switchFlashlight: function(aEnabled) { + if (this.flashCamera) { + this.flashCamera.flashMode = aEnabled ? 'torch' : 'off'; + } + } +} + var gModDev = { activate: function() { gSounds.scan.play();