From 7d425206348e5e76f885d6c09f3d8976982c4ca0 Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Fri, 11 Nov 2022 09:58:13 +0000 Subject: [PATCH] Analog widget clock as mentioned https://forum.espruino.com/conversations/381378/#comment16756195 --- apps/widanclk/ChangeLog | 1 + apps/widanclk/metadata.json | 13 +++++++++++++ apps/widanclk/widget.js | 24 ++++++++++++++++++++++++ apps/widanclk/widget.png | Bin 0 -> 6637 bytes apps/widclk/metadata.json | 2 +- 5 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 apps/widanclk/ChangeLog create mode 100644 apps/widanclk/metadata.json create mode 100644 apps/widanclk/widget.js create mode 100644 apps/widanclk/widget.png diff --git a/apps/widanclk/ChangeLog b/apps/widanclk/ChangeLog new file mode 100644 index 000000000..115067b80 --- /dev/null +++ b/apps/widanclk/ChangeLog @@ -0,0 +1 @@ +0.01: New app diff --git a/apps/widanclk/metadata.json b/apps/widanclk/metadata.json new file mode 100644 index 000000000..07200d92d --- /dev/null +++ b/apps/widanclk/metadata.json @@ -0,0 +1,13 @@ +{ + "id": "widanclk", + "name": "Analog clock widget", + "version": "0.01", + "description": "A simple analog clock widget that appears when not showing a fullscreen clock", + "icon": "widget.png", + "type": "widget", + "tags": "widget,clock", + "supports": ["BANGLEJS","BANGLEJS2"], + "storage": [ + {"name":"widanclk.wid.js","url":"widget.js"} + ] +} diff --git a/apps/widanclk/widget.js b/apps/widanclk/widget.js new file mode 100644 index 000000000..85d970cdf --- /dev/null +++ b/apps/widanclk/widget.js @@ -0,0 +1,24 @@ +/* Simple analog clock that appears in the widget bar if no other clock +is running. We update once per minute, but don't bother stopping +if the */ +WIDGETS["wdanclk"]={area:"tl",width:Bangle.CLOCK?0:24,draw:function() { + if (!Bangle.CLOCK == !this.width) { // if we're the wrong size for if we have a clock or not... + this.width = Bangle.CLOCK?0:24; + return setTimeout(Bangle.drawWidgets,1); // widget changed size - redraw + } + if (!this.width) return; // if size not right, return + g.reset(); + let d = new Date(); + let x=this.x+12, y=this.y+12, + ah = (d.getHours()+d.getMinutes()/60)*Math.PI/6, + am = d.getMinutes()*Math.PI/30; + g.drawCircle(x, y, 11). + drawLine(x,y, x+Math.sin(ah)*7, y-Math.cos(ah)*7). + drawLine(x,y, x+Math.sin(am)*9, y-Math.cos(am)*9); + // queue draw in one minute + if (this.drawTimeout) clearTimeout(this.drawTimeout); + this.drawTimeout = setTimeout(()=>{ + this.drawTimeout = undefined; + this.draw(); + }, 60000 - (Date.now() % 60000)); +}}; diff --git a/apps/widanclk/widget.png b/apps/widanclk/widget.png new file mode 100644 index 0000000000000000000000000000000000000000..9e4b37c398fdf1ccc97d42b86924f5af7bb4c415 GIT binary patch literal 6637 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 V^7e!F5}yi{u(fowC^I{B;y;3&!~y^S literal 0 HcmV?d00001 diff --git a/apps/widclk/metadata.json b/apps/widclk/metadata.json index b7bc74e11..e4d7d76d1 100644 --- a/apps/widclk/metadata.json +++ b/apps/widclk/metadata.json @@ -2,7 +2,7 @@ "id": "widclk", "name": "Digital clock widget", "version": "0.07", - "description": "A simple digital clock widget", + "description": "A simple digital clock widget that appears when not showing a fullscreen clock", "icon": "widget.png", "type": "widget", "tags": "widget,clock",