From 7514fc09fa4007719100e220562f51b198beb06f Mon Sep 17 00:00:00 2001 From: jeffmer Date: Sun, 17 May 2020 11:55:25 +0100 Subject: [PATCH 01/20] Update to 0.03 - includes waypoint editor --- apps/gpsnav/ChangeLog | 3 ++ apps/gpsnav/README.md | 16 ++++------ apps/gpsnav/app.js | 64 +++++++++++++++++++++++++++----------- apps/gpsnav/waypoints.json | 3 -- 4 files changed, 54 insertions(+), 32 deletions(-) diff --git a/apps/gpsnav/ChangeLog b/apps/gpsnav/ChangeLog index 5560f00bc..d28ad53ac 100644 --- a/apps/gpsnav/ChangeLog +++ b/apps/gpsnav/ChangeLog @@ -1 +1,4 @@ 0.01: New App! +0.02: Add SCREENACCESS interface +0.03: Add Waypoint Editor + diff --git a/apps/gpsnav/README.md b/apps/gpsnav/README.md index 80c6c1d00..af239b233 100644 --- a/apps/gpsnav/README.md +++ b/apps/gpsnav/README.md @@ -26,22 +26,19 @@ The app indicates that WP2 is now marked by adding the prefix @ to it's name. Th ### Waypoint JSON file -When the app is loaded from the app loader, a file named waypoints.json is loaded along with the javascript etc. The file has the following contents: +When the app is loaded from the app loader, a file named `waypoints.json` is loaded along with the javascript etc. The file has the following contents: -~~~ +``` [ { - "mark":0, "name":"NONE" }, { - "mark":1, "name":"No10", "lat":51.5032, "lon":-0.1269 }, { - "mark":1, "name":"Stone", "lat":51.1788, "lon":-1.8260 @@ -52,15 +49,14 @@ When the app is loaded from the app loader, a file named waypoints.json is loade { "name":"WP3" }, { "name":"WP4" } ] -~~~ +``` The file contains the initial NONE waypoint which is useful if you just want to display course and speed. The next two entries are waypoints to No 10 Downing Street and to Stone Henge - obtained from Google Maps. The last five entries are entries which can be *marked*. You add and delete entries using the Web IDE to load and then save the file from and to watch storage. The app itself does not limit the number of entries although it does load the entire file into RAM which will obviously limit this. -I plan to release an accompanying watch app to edit waypoint files in the near future and a way to download your own waypoint file using the app loader. - - - +### Waypoint Editor +Clicking on the download icon of gpsnav in the app loader invokes the waypoint editor. The editor downloads and displays the current `waypoints.json` file. Clicking the `Edit` button beside an entry causes the entry to be deleted from the list and displayed in the edit boxes. It can be restored - by clicking the `Add waypoint` button. A new markable entry is created by using the `Add name` button. The edited `waypoints.json` file is uploaded to the Bangle by clicking the `Upload` button. +*Please report bugs etc. by raising an issue [here](https://github.com/jeffmer/JeffsBangleAppsDev). * \ No newline at end of file diff --git a/apps/gpsnav/app.js b/apps/gpsnav/app.js index 2a480410c..5a6319385 100644 --- a/apps/gpsnav/app.js +++ b/apps/gpsnav/app.js @@ -1,6 +1,7 @@ const Yoff = 40; var pal2color = new Uint16Array([0x0000,0xffff,0x07ff,0xC618],0,2); var buf = Graphics.createArrayBuffer(240,50,2,{msb:true}); +var candraw = true; function flip(b,y) { g.drawImage({width:240,height:50,bpp:2,buffer:b.buffer, palette:pal2color},0,y); @@ -12,6 +13,7 @@ var wpindex=0; const labels = ["N","NE","E","SE","S","SW","W","NW"]; function drawCompass(course) { + if (!candraw) return; buf.setColor(1); buf.setFont("Vector",16); var start = course-90; @@ -143,7 +145,7 @@ function onGPS(fix) { speed = isNaN(fix.speed) ? speed : fix.speed; satellites = fix.satellites; } - if (Bangle.isLCDOn()) { + if (candraw) { if (fix!==undefined && fix.fix==1){ dist = distance(fix,wp); if (isNaN(dist)) dist = 0; @@ -156,28 +158,19 @@ function onGPS(fix) { var intervalRef; -function clearTimers() { +function stopdraw() { + candraw=false; if(intervalRef) {clearInterval(intervalRef);} } function startTimers() { + candraw=true; intervalRefSec = setInterval(function() { newHeading(course,heading); if (course!=heading) drawCompass(heading); },200); } -Bangle.on('lcdPower',function(on) { - if (on) { - g.clear(); - Bangle.drawWidgets(); - startTimers(); - drawAll(); - }else { - clearTimers(); - } -}); - function drawAll(){ g.setColor(1,0.5,0.5); g.fillPoly([120,Yoff+50,110,Yoff+70,130,Yoff+70]); @@ -186,6 +179,42 @@ function drawAll(){ drawCompass(heading); } +function startdraw(){ + g.clear(); + Bangle.drawWidgets(); + startTimers(); + drawAll(); +} + +function setButtons(){ + setWatch(nextwp.bind(null,-1), BTN1, {repeat:true,edge:"falling"}); + setWatch(doselect, BTN2, {repeat:true,edge:"falling"}); + setWatch(nextwp.bind(null,1), BTN3, {repeat:true,edge:"falling"}); +}; + +var SCREENACCESS = { + withApp:true, + request:function(){ + this.withApp=false; + stopdraw(); + clearWatch(); + }, + release:function(){ + this.withApp=true; + startdraw(); + setButtons(); + } +} + +Bangle.on('lcdPower',function(on) { + if (!SCREENACCESS.withApp) return; + if (on) { + startdraw(); + } else { + stopdraw(); + } +}); + var waypoints = require("Storage").readJSON("waypoints.json")||[{name:"NONE"}]; wp=waypoints[0]; @@ -199,8 +228,8 @@ function nextwp(inc){ } function doselect(){ - if (selected && waypoints[wpindex].mark===undefined && savedfix.fix) { - waypoints[wpindex] ={mark:1, name:"@"+wp.name, lat:savedfix.lat, lon:savedfix.lon}; + if (selected && waypoints[wpindex].lat===undefined && savedfix.fix) { + waypoints[wpindex] ={name:"@"+wp.name, lat:savedfix.lat, lon:savedfix.lon}; wp = waypoints[wpindex]; require("Storage").writeJSON("waypoints.json", waypoints); } @@ -218,7 +247,4 @@ drawAll(); startTimers(); Bangle.on('GPS', onGPS); // Toggle selected -setWatch(nextwp.bind(null,-1), BTN1, {repeat:true,edge:"falling"}); -setWatch(doselect, BTN2, {repeat:true,edge:"falling"}); -setWatch(nextwp.bind(null,1), BTN3, {repeat:true,edge:"falling"}); - +setButtons(); diff --git a/apps/gpsnav/waypoints.json b/apps/gpsnav/waypoints.json index 143316b19..98a670c0d 100644 --- a/apps/gpsnav/waypoints.json +++ b/apps/gpsnav/waypoints.json @@ -1,16 +1,13 @@ [ { - "mark":0, "name":"NONE" }, { - "mark":1, "name":"No10", "lat":51.5032, "lon":-0.1269 }, { - "mark":1, "name":"Stone", "lat":51.1788, "lon":-1.8260 From dc7e04cc76bac9fcc99c403f94dba42088e781af Mon Sep 17 00:00:00 2001 From: jeffmer Date: Sun, 17 May 2020 11:57:09 +0100 Subject: [PATCH 02/20] Add waypoints editor --- apps/gpsnav/waypoints.html | 170 +++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 apps/gpsnav/waypoints.html diff --git a/apps/gpsnav/waypoints.html b/apps/gpsnav/waypoints.html new file mode 100644 index 000000000..483b933f4 --- /dev/null +++ b/apps/gpsnav/waypoints.html @@ -0,0 +1,170 @@ + + + + + + + +

List of waypoints

+ + + + + + + + + + + + +
NameLat.Long.Actions
+
+

Add a new waypoint

+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ + + + + + + \ No newline at end of file From 05e3a1f51f273d1f736343b5650009fad590abc1 Mon Sep 17 00:00:00 2001 From: jeffmer Date: Sun, 17 May 2020 12:01:52 +0100 Subject: [PATCH 03/20] gpsnav 0.03 --- apps.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps.json b/apps.json index 04c2f637d..a0421c2ed 100644 --- a/apps.json +++ b/apps.json @@ -331,10 +331,11 @@ { "id": "gpsnav", "name": "GPS Navigation", "icon": "icon.png", - "version":"0.01", - "description": "Displays GPS Course and Speed, + Directions to waypoint and waypoint recording", + "version":"0.03", + "description": "Displays GPS Course and Speed, + Directions to waypoint and waypoint recording, now with waypoint editor", "tags": "tool,outdoors,gps", "readme": "README.md", + "interface":"waypoints.html", "storage": [ {"name":"gpsnav.app.js","url":"app.js"}, {"name":"waypoints.json","url":"waypoints.json","evaluate":false}, From 31e56b23eddfd7f6c2e37d0f8fa983019bfc25bb Mon Sep 17 00:00:00 2001 From: Ben Whittaker Date: Sun, 17 May 2020 18:46:44 -0400 Subject: [PATCH 04/20] Stop Gadgetbridge from ignoring initial message. Gadgetbridge seems to ignore the first line sent to it after connecting. This commit works around this by prepending each message with a blank line. --- apps/gbridge/widget.js | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/gbridge/widget.js b/apps/gbridge/widget.js index a87b9d1ec..0d0f2468d 100644 --- a/apps/gbridge/widget.js +++ b/apps/gbridge/widget.js @@ -13,6 +13,7 @@ }; function gbSend(message) { + Bluetooth.println(""); Bluetooth.println(JSON.stringify(message)); } From 9ebb718cc259475efe88b6a585ddb9d44165212d Mon Sep 17 00:00:00 2001 From: Ben Whittaker Date: Sun, 17 May 2020 13:37:08 -0400 Subject: [PATCH 05/20] gbridge: report battery status more often Make the gbridge widget report battery status - every 10 minutes - 2 seconds after a new bluetooth connection is initiated --- apps.json | 2 +- apps/gbridge/ChangeLog | 1 + apps/gbridge/widget.js | 8 +++++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/apps.json b/apps.json index 04c2f637d..ff13cdff6 100644 --- a/apps.json +++ b/apps.json @@ -95,7 +95,7 @@ { "id": "gbridge", "name": "Gadgetbridge", "icon": "app.png", - "version":"0.10", + "version":"0.11", "description": "The default notification handler for Gadgetbridge notifications from Android", "tags": "tool,system,android,widget", "type":"widget", diff --git a/apps/gbridge/ChangeLog b/apps/gbridge/ChangeLog index f23a4eb6d..f66040388 100644 --- a/apps/gbridge/ChangeLog +++ b/apps/gbridge/ChangeLog @@ -9,3 +9,4 @@ 0.08: Don't turn on LCD at start of every song 0.09: Update Bluetooth connection state automatically 0.10: Make widget play well with other Gadgetbridge widgets/apps +0.11: Report battery status on connect and at regular intervals diff --git a/apps/gbridge/widget.js b/apps/gbridge/widget.js index 0d0f2468d..ae7d0f8fa 100644 --- a/apps/gbridge/widget.js +++ b/apps/gbridge/widget.js @@ -197,5 +197,11 @@ WIDGETS["gbridgew"] = { area: "tl", width: 24, draw: draw }; - gbSend({ t: "status", bat: E.getBattery() }); + function sendBattery() { + gbSend({ t: "status", bat: E.getBattery() }); + } + + NRF.on("connect", () => setTimeout(sendBattery, 2000)); + setInterval(sendBattery, 10*60*1000); + sendBattery(); })(); From 89bd6532255bbbc50ac03624c1844b2f08ad6293 Mon Sep 17 00:00:00 2001 From: Francesco Bedussi Date: Mon, 18 May 2020 22:46:45 +0200 Subject: [PATCH 06/20] chore: ignore .vscode folder --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index be33fbc90..757619ec5 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ package-lock.json .DS_Store *.js.bak appdates.csv +.vscode From 3148a59dc6ccaa6646c262375e96c59ba821619f Mon Sep 17 00:00:00 2001 From: Francesco Bedussi Date: Mon, 18 May 2020 22:57:08 +0200 Subject: [PATCH 07/20] fix: simpletimer - BTN2 to open launcher --- apps.json | 2 +- apps/simpletimer/ChangeLog | 1 + apps/simpletimer/app.js | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/apps.json b/apps.json index adc1cf907..a34dcf3a4 100644 --- a/apps.json +++ b/apps.json @@ -1633,7 +1633,7 @@ "id": "simpletimer", "name": "Timer", "icon": "app.png", - "version": "0.02", + "version": "0.03", "description": "Simple timer, useful when playing board games or cooking", "tags": "timer", "readme": "README.md", diff --git a/apps/simpletimer/ChangeLog b/apps/simpletimer/ChangeLog index f9f79cd47..3f8d98248 100644 --- a/apps/simpletimer/ChangeLog +++ b/apps/simpletimer/ChangeLog @@ -1,2 +1,3 @@ 0.01: Initial version 0.02: Reset with gesture +0.03: BTN2 to open launcher diff --git a/apps/simpletimer/app.js b/apps/simpletimer/app.js index b8e07d107..0bd7992e2 100644 --- a/apps/simpletimer/app.js +++ b/apps/simpletimer/app.js @@ -111,6 +111,7 @@ function reset(value) { state = value === 0 ? "unset" : "set"; } +setWatch(Bangle.showLauncher, BTN2, { repeat: false, edge: "falling" }); function addWatch() { clearWatch(); setWatch(changeState, BTN1, { From d98fca9f01c4d6e2a864c2e49a06154d178f51c0 Mon Sep 17 00:00:00 2001 From: jeffmer Date: Tue, 19 May 2020 15:22:41 +0100 Subject: [PATCH 08/20] Create ChangeLog --- apps/ChangeLog | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/ChangeLog diff --git a/apps/ChangeLog b/apps/ChangeLog new file mode 100644 index 000000000..1a4baf536 --- /dev/null +++ b/apps/ChangeLog @@ -0,0 +1 @@ + From 17fb9e795f861841400221059996c67122b42d8f Mon Sep 17 00:00:00 2001 From: jeffmer Date: Tue, 19 May 2020 15:23:43 +0100 Subject: [PATCH 09/20] Delete ChangeLog --- apps/ChangeLog | 1 - 1 file changed, 1 deletion(-) delete mode 100644 apps/ChangeLog diff --git a/apps/ChangeLog b/apps/ChangeLog deleted file mode 100644 index 1a4baf536..000000000 --- a/apps/ChangeLog +++ /dev/null @@ -1 +0,0 @@ - From b45fb06ec1ba35536dd4a76ef5f2ef0270f55c4e Mon Sep 17 00:00:00 2001 From: jeffmer Date: Tue, 19 May 2020 15:25:21 +0100 Subject: [PATCH 10/20] Create ChangeLog --- apps/widviz/ChangeLog | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/widviz/ChangeLog diff --git a/apps/widviz/ChangeLog b/apps/widviz/ChangeLog new file mode 100644 index 000000000..1a4baf536 --- /dev/null +++ b/apps/widviz/ChangeLog @@ -0,0 +1 @@ + From b602188abe3974d8d5c363c3765b05b19043a401 Mon Sep 17 00:00:00 2001 From: jeffmer Date: Tue, 19 May 2020 15:28:34 +0100 Subject: [PATCH 11/20] Widget files --- apps/widviz/eye.png | Bin 0 -> 1519 bytes apps/widviz/widget.js | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 apps/widviz/eye.png create mode 100644 apps/widviz/widget.js diff --git a/apps/widviz/eye.png b/apps/widviz/eye.png new file mode 100644 index 0000000000000000000000000000000000000000..414ad33f582b9e69e51269d45fe309b333d808c7 GIT binary patch literal 1519 zcmVOEpmkE19Hr3VSFItI*?O0g~z9Ncw>>2GDK`Ua)#w z`vaj!>bJxKq;g(Ptx;++;OTRv3)Flk@X0mjEh3!u$h4NIux%@pYl?F2574kLa=69* zOMh?%C`?t&%h_9%r^`*@Bq@NJ?*!htGU^RSS^Wl?&}_iVwAn>+p++LWg(v_7C!!<% z$X)kD*T{IAE!gjwV7(>9(EZh#>6dCcpwpeMlN|)>adlD7<}$@njd+?tjWau+Un<{Ism=iC zBMb4_br;n{5qNo-a_e#>n(-+H0Ehv6bHm-xPDG;gTrZU?UaL^01$5EsJ=kognlf=# zeT{ZSK{og0UMJbu4*Mbipvx6h=+wW6>x&|=p;)%NQZ3}HXRnjo{@tKE zlwiUH$f;UAYw#o>KN;P8&SslB9TE}x@l%Bls(EO3{W!#O3zk+EW;d)W;4jLdz@r*24FJ5~IyOBG0Q@>Q{z2Oqw||KWJFr$m zaoRi+$J&$3XrOL;sL|@BnlF|qR`UgnUMG3J$3rzW62ajbZFAki=DLONKB1d0r@iNF zx2MlVaz}V%e$JM1CDm-Sdb{l*Hc$-UNQ;AVh{a0LD=U@2r$(!nGSf%|Up;GByHJ7) zQCx^t7v-F))oUb)SR9Q3^B*#`b-7}RN<^6*X>m|~lK^V71#dbMc?tn|YfV0P`{S|< z&^cs}SuMq~m`|k``np-oYs{1YMfR=ErzW`R2)EgSNkFH6cT(1mEs~Vx-!uA+`XkhD zlL6-%nDumLJRI<LEid6RrGIRUg~8SODY_4=4z#uDWs z0MIeWbJp5z^fpbC+q*_Wmv8&2CIyfHG8^#Xyu=BQ0UWyOh;Tz50069F?8tEo!72ni zp~<6+)6O(zikyrcx@xB;D9*#oQ@fu4LICzw1BCGrIdo}|{)=l}8#x{g?Hl$J2gP?A&c zG^q_TVf=SA2Kz6M^46@oE7dCtd2%gN6@~aNGfy(_wucU0p*PDQ6Yex6)gehh5)oQo zqs6AK3O+LW>i0vvPIj~vqDaHKf{mpz-cW@i@LZ|9VVzFEdEDa&@AzRTIFWEWOn}ta zXqkx&(kVZb*;(~9+HxJwlJvRAMyuB{K$jmTJ-*&3<=rXEKyY8vs5hKp`4JbZK+8gr zx^l(8DbUVbcb(`Um}y~CuMCW!N@b9nqi3vpvKDX?W+!p6ld@)3aQ z1(FvYmZz+&V*p(vq0g_oTJ8pt=9_VmAJ@IEL3*jsWWdX`;v%_7D-qx#6aa!`bl4xc z<0iX?L#?*pknet9gW{T97ez|5=qgQVc71GMYPNii`ENAqzM#zkrP3TwD$N0<(m&`h Vo=7w-CD;G}002ovPDHLkV1nTx;!6Mk literal 0 HcmV?d00001 diff --git a/apps/widviz/widget.js b/apps/widviz/widget.js new file mode 100644 index 000000000..36d695c60 --- /dev/null +++ b/apps/widviz/widget.js @@ -0,0 +1,37 @@ +(() => { + + var saved = null; + + function hide(){ + if (!Bangle.isLCDOn() || saved) return; + saved = []; + for (var wd of WIDGETS) { + saved.push(wd.draw); + wd.draw=()=>{}; + } + g.setColor(0,0,0); + g.fillRect(0,0,239,23); + } + + function reveal(){ + if (!Bangle.isLCDOn() || !saved) return; + for (var wd of WIDGETS) wd.draw = saved.shift(); + Bangle.drawWidgets(); + saved=null; + } + + function setup(){ + setWatch(hide, BTN4, {repeat:true,edge:"rising"}); + setWatch(reveal, BTN5, {repeat:true,edge:"rising"}); + } + + function draw(){ + var img = E.toArrayBuffer(atob("GBgBAAAAAAAAAAAAAAAAAH4AAf+AB4HgDgBwHDw4OH4cMOcMYMMGYMMGMOcMOH4cHDw4DgBwB4HgAf+AAH4AAAAAAAAAAAAAAAAA")); + g.setColor(0x07ff); + g.drawImage(img,this.x,this.y); + } + + WIDGETS["viz"] ={area:"tl", width:24,draw:draw,setup:setup}; + setup(); + +})(); From fe0387b3bb6d7465790134dfee50be3d700baa16 Mon Sep 17 00:00:00 2001 From: jeffmer Date: Tue, 19 May 2020 15:29:50 +0100 Subject: [PATCH 12/20] Update ChangeLog --- apps/widviz/ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/widviz/ChangeLog b/apps/widviz/ChangeLog index 1a4baf536..ac6257425 100644 --- a/apps/widviz/ChangeLog +++ b/apps/widviz/ChangeLog @@ -1 +1 @@ - + 0.01: New Widget From 19ed596a16250ea6ede6646e317eeb4575ed4ada Mon Sep 17 00:00:00 2001 From: jeffmer Date: Tue, 19 May 2020 15:33:01 +0100 Subject: [PATCH 13/20] Update apps.json --- apps.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/apps.json b/apps.json index a34dcf3a4..f351bee16 100644 --- a/apps.json +++ b/apps.json @@ -1761,5 +1761,17 @@ { "name": "jbm8b.img", "url": "app-icon.js", "evaluate": true } ], "version": "0.03" + }, + { "id": "widviz", + "name": "Widget Visibility Widget", + "shortName":"Viz Widget", + "icon": "eye.png", + "version":"0.01", + "description": "Touch left screen to hide top bar widgets, right screen to redisplay. Will not work with apps that use BTN4 & BTN5.", + "tags": "widget", + "type": "widget", + "storage": [ + {"name":"widviz.wid.js","url":"widget.js"} + ] } ] From 7e39d8f1b5881dbd21b06db873fad699f45b4869 Mon Sep 17 00:00:00 2001 From: GRISHENK0 Date: Wed, 20 May 2020 14:45:25 +0200 Subject: [PATCH 14/20] Update French locales Change thousands separator and modify the speed unit --- apps/locale/locales.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/locale/locales.js b/apps/locale/locales.js index cbc56b85c..3becc760b 100644 --- a/apps/locale/locales.js +++ b/apps/locale/locales.js @@ -145,10 +145,10 @@ var locales = { "fr_FR": { lang: "fr_FR", decimal_point: ",", - thousands_sep: ".", + thousands_sep: " ", currency_symbol: "\x80", int_curr_symbol: "EUR", - speed: "kmh", + speed: "km/h", distance: { 0: "m", 1: "km" }, temperature: "°C", ampm: { 0: "", 1: "" }, From 5f8e424f5fd0d640f5688d960f33edaf1194e193 Mon Sep 17 00:00:00 2001 From: Ben Whittaker Date: Mon, 11 May 2020 20:58:31 -0400 Subject: [PATCH 15/20] imgclock: Make imgclock text area wider This prevents imgclock from cutting off the date in locales with long date formats such as "Wednesday, September 10, 2020". Also adjusts the position and alignment of the date when necessary to prevent it from flowing off the edge of the screen. --- apps.json | 2 +- apps/imgclock/ChangeLog | 3 ++- apps/imgclock/app.js | 14 ++++++++++---- apps/imgclock/custom.html | 16 +++++++++------- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/apps.json b/apps.json index a34dcf3a4..07cedf21a 100644 --- a/apps.json +++ b/apps.json @@ -168,7 +168,7 @@ "name": "Image background clock", "shortName":"Image Clock", "icon": "app.png", - "version":"0.06", + "version":"0.07", "description": "A clock with an image as a background", "tags": "clock", "type" : "clock", diff --git a/apps/imgclock/ChangeLog b/apps/imgclock/ChangeLog index ae978f9f9..20906fb87 100644 --- a/apps/imgclock/ChangeLog +++ b/apps/imgclock/ChangeLog @@ -4,4 +4,5 @@ 0.04: Fix hour alignment for single digits Scaling for background images <240px wide 0.05: Fix memory/interval leak when LCD turns on -0.06: Support 12 hour time \ No newline at end of file +0.06: Support 12 hour time +0.07: Don't cut off wide date formats \ No newline at end of file diff --git a/apps/imgclock/app.js b/apps/imgclock/app.js index dc961f58b..becf0a1fb 100644 --- a/apps/imgclock/app.js +++ b/apps/imgclock/app.js @@ -7,7 +7,7 @@ var is12Hour = (require("Storage").readJSON("setting.json",1)||{})["12hour"]; var inf = require("Storage").readJSON("imgclock.face.json"); var img = require("Storage").read("imgclock.face.img"); var IX = inf.x, IY = inf.y, IBPP = inf.bpp; -var IW = 110, IH = 45, OY = 24; +var IW = 174, IH = 45, OY = 24; var bgwidth = img.charCodeAt(0); var bgoptions; if (bgwidth<240) @@ -40,7 +40,7 @@ function draw() { new Uint8Array(cg.buffer).set(bgimg); // draw time cg.setColor(inf.col); - var x = 40; + var x = 74 + 32 * inf.align; cg.setFont("7x11Numeric7Seg",3); cg.setFontAlign(1,-1); cg.drawString(hours, x, 0); @@ -54,8 +54,14 @@ function draw() { cg.drawString(("0"+t.getSeconds()).substr(-2), x, 20); cg.setFont("6x8",1); cg.drawString(meridian, x+2, 0); - cg.setFontAlign(0,-1); - cg.drawString(locale.date(t),IW/2,IH-8); + let date = locale.date(t); + if (cg.stringWidth(date) < IW-64) { + cg.setFontAlign(0, -1); + cg.drawString(date,IW/2+32*inf.align,IH-8); + } else { + cg.setFontAlign(inf.align, -1); + cg.drawString(date,IW*(inf.align+1)/2,IH-8); + } // draw to screen g.drawImage(cgimg,IX,IY+OY); } diff --git a/apps/imgclock/custom.html b/apps/imgclock/custom.html index 8c920571a..8428725af 100644 --- a/apps/imgclock/custom.html +++ b/apps/imgclock/custom.html @@ -13,9 +13,9 @@