From 4143a5f105cfd2b5eb8a84d93e77cd9d2ea65542 Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Thu, 24 Feb 2022 11:01:37 +0000 Subject: [PATCH] 0.05: Don't poll for GPS status, override setGPSPower handler (fix #1456) --- apps/widgps/ChangeLog | 1 + apps/widgps/metadata.json | 2 +- apps/widgps/widget.js | 27 +++++++++------------------ 3 files changed, 11 insertions(+), 19 deletions(-) diff --git a/apps/widgps/ChangeLog b/apps/widgps/ChangeLog index 3d47b8a0c..f68fc701c 100644 --- a/apps/widgps/ChangeLog +++ b/apps/widgps/ChangeLog @@ -2,3 +2,4 @@ 0.02: Don't break if running on 2v08 firmware (just don't display anything) 0.03: Fix positioning 0.04: Show GPS fix status +0.05: Don't poll for GPS status, override setGPSPower handler (fix #1456) diff --git a/apps/widgps/metadata.json b/apps/widgps/metadata.json index 2f59aa82a..39bff2fad 100644 --- a/apps/widgps/metadata.json +++ b/apps/widgps/metadata.json @@ -1,7 +1,7 @@ { "id": "widgps", "name": "GPS Widget", - "version": "0.04", + "version": "0.05", "description": "Tiny widget to show the power and fix status of the GPS", "icon": "widget.png", "type": "widget", diff --git a/apps/widgps/widget.js b/apps/widgps/widget.js index 25df2178a..bfdb89d33 100644 --- a/apps/widgps/widget.js +++ b/apps/widgps/widget.js @@ -1,7 +1,13 @@ (function(){ - if (!Bangle.isGPSOn) return; // old firmware + // 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; + } - function draw() { + WIDGETS.gps={area:"tr",width:24,draw:function() { g.reset(); if (Bangle.isGPSOn()) { const gpsObject = Bangle.getGPSFix(); @@ -14,20 +20,5 @@ g.setColor("#888"); // off = grey } g.drawImage(atob("GBiBAAAAAAAAAAAAAA//8B//+BgYGBgYGBgYGBgYGBgYGBgYGB//+B//+BgYGBgYGBgYGBgYGBgYGBgYGB//+A//8AAAAAAAAAAAAA=="), this.x, 2+this.y); - } - - var timerInterval; - Bangle.on('lcdPower', function(on) { - if (on) { - WIDGETS.gps.draw(); - if (!timerInterval) timerInterval = setInterval(()=>WIDGETS.gps.draw(), 2000); - } else { - if (timerInterval) { - clearInterval(timerInterval); - timerInterval = undefined; - } - } - }); - - WIDGETS.gps={area:"tr",width:24,draw:draw}; + }}; })();