BangleApps/apps/widgps/widget.js

82 lines
2.5 KiB
JavaScript
Raw Normal View History

(function() {
let settings =
require("Storage").readJSON("widgps.json", 1) || {crossIcon: true, hideWhenGpsOff: false};
var interval;
// override setGPSPower so we know if GPS is on or off
var oldSetGPSPower = Bangle.setGPSPower;
Bangle.setGPSPower = function(on, id) {
var isGPSon = oldSetGPSPower(on, id);
WIDGETS.gps.draw();
return isGPSon;
};
WIDGETS.gps = {
area : "tr",
width : 24,
draw : function() {
2021-02-12 20:34:10 +00:00
g.reset();
// check if we need to update the widget periodically
if (Bangle.isGPSOn() && interval === undefined) {
interval = setInterval(
function() { WIDGETS.gps.draw(WIDGETS.gps); },
10 * 1000); // update every 10 seconds to show gps fix/no fix
} else if (!Bangle.isGPSOn() && interval !== undefined) {
clearInterval(interval);
interval = undefined;
}
if (settings.crossIcon) {
if (Bangle.isGPSOn()) {
const gpsObject = Bangle.getGPSFix();
if (gpsObject && gpsObject.fix > 0) {
g.setColor("#0F0"); // on and has fix = green
} else {
g.setColor("#FD0"); // on but no fix = amber
}
2022-08-10 22:43:21 +00:00
g.drawImage(
atob(
"GBiBAAAAAAAAAAAAAA//8B//+BgYGBgYGBgYGBgYGBgYGBgYGB//+B//+BgYGBgYGBgYGBgYGBgYGBgYGB//+A//8AAAAAAAAAAAAA=="),
this.x, 2 + this.y);
2022-08-10 22:43:21 +00:00
} else {
if(!settings.hideWhenGpsOff) {
g.setColor("#888"); // off = grey
g.drawImage(
atob(
"GBiBAAAAAAAAAAAAAA//8B//+BgYGBgYGBgYGBgYGBgYGBgYGB//+B//+BgYGBgYGBgYGBgYGBgYGBgYGB//+A//8AAAAAAAAAAAAA=="),
this.x, 2 + this.y);
}
}
} else { // marker icons
if (Bangle.isGPSOn()) {
const gpsObject = Bangle.getGPSFix();
if (gpsObject && gpsObject.fix > 0) {
// on and has fix
2022-07-12 09:25:39 +00:00
g.drawImage(
atob("GBiBAAAAAAAAAAB+AAD/AAHDgAMAwAcAwAY8YAY8YAY8YAY8YAMAwAMAwAOBwAGBgAHDgADDAABmAAB+AAA8AAAYAAAAAAAAAAAAAA=="),
this.x, 2 + this.y);
} else {
// GNSS on but no fix
2022-07-12 09:25:39 +00:00
g.drawImage(
atob("GBiBAAAAAAAAAAh+AA3/gA+B4A8AcA+AMAA8GAB+GADnDADDDADDDDDDADBmADB+ABg8ABgYAAwB8A4A8AeB8AH/sAB+EAAAAAAAAA=="),
this.x, 2 + this.y);
}
} else {
// GNSS off
if(!settings.hideWhenGpsOff) {
g.drawImage(
atob("GBiBAAAAAAAAAAB+ABj/ABxDgA4AwAcAwAeMYAfEYAbgYAZwYAM4wAMcQAOOAAGHAAHDgADDwABm4AB+cAA8OAAYGAAAAAAAAAAAAA=="),
this.x, 2 + this.y);
}
}
}
}
};
2021-02-12 20:34:10 +00:00
})();