diff --git a/apps.json b/apps.json index d447aa18c..d0df625bc 100644 --- a/apps.json +++ b/apps.json @@ -1974,5 +1974,17 @@ "data": [ {"name":"one_button_presses.csv","storageFile": true} ] + }, + { "id": "gpsautotime", + "name": "GPS auto time", + "shortName":"GPS auto time", + "icon": "widget.png", + "version":"0.01", + "description": "A widget that automatically updates the Bangle.js time to the GPS time whenever there is a valid GPS fix.", + "tags": "widget,gps", + "type": "widget", + "storage": [ + {"name":"gpsautotime.wid.js","url":"widget.js"} + ] } ] diff --git a/apps/gpsautotime/widget.js b/apps/gpsautotime/widget.js new file mode 100644 index 000000000..a1d1b2b08 --- /dev/null +++ b/apps/gpsautotime/widget.js @@ -0,0 +1,33 @@ +(() => { + var lastTimeSet = 0; + + Bangle.on('GPS',function(fix) { + if (fix.fix) { + var curTime = fix.time.getTime()/1000; + setTime(curTime); + lastTimeSet = curTime; + + WIDGETS["gpsAutoTime"].draw(WIDGETS["gpsAutoTime"]); + } + }); + + // add your widget + WIDGETS["gpsAutoTime"]={ + area:"tl", // tl (top left), tr (top right), bl (bottom left), br (bottom right) + width: 28, // width of the widget + draw: function() { + g.reset(); // reset the graphics context to defaults (color/font/etc) + g.setFont("6x8"); + if ((getTime() - lastTimeSet) <= 60) { + // time is uptodate + g.setColor('#00ff00'); // green + } + g.drawString("auto", this.x, this.y); + g.drawString("time", this.x, this.y+10); + } + }; + + setInterval(function() { + WIDGETS["gpsAutoTime"].draw(WIDGETS["gpsAutoTime"]); + }, 1*60000); // update every minute +})() diff --git a/apps/gpsautotime/widget.png b/apps/gpsautotime/widget.png new file mode 100644 index 000000000..6f6e23f2f Binary files /dev/null and b/apps/gpsautotime/widget.png differ