From 88877b3a10fe6dfcba502eb4d6c3595aa48bb0b7 Mon Sep 17 00:00:00 2001 From: RKBoss6 Date: Thu, 19 Jun 2025 18:45:02 -0400 Subject: [PATCH 01/17] Update app.js for settings/show charge/time --- apps/chargeanim/app.js | 77 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 74 insertions(+), 3 deletions(-) diff --git a/apps/chargeanim/app.js b/apps/chargeanim/app.js index 68d0cdff5..d971bfc11 100644 --- a/apps/chargeanim/app.js +++ b/apps/chargeanim/app.js @@ -1,8 +1,19 @@ + +var settings = Object.assign({ + // default values + showBatPercent: true, + showTime: true, + keepScreenOn:false, + + }, require("Storage").readJSON("chargeAnimSettings.json", true) || {}); + + g.setBgColor(0, 0, 0); g.clear().flip(); var imgbat = require("heatshrink").decompress(atob("nFYhBC/AH4A/AGUeACA22HEo3/G8YrTAC422HBQ2tHBI3/G/43/G/43/G/43/G/43/G/43/G+fTG+vSN+w326Q31GwI3/G9g2WG742CG/43rGwY3yGwg33RKo3bNzQ3bGwo3/G9A2GG942dG/43QGw43uGxA34IKw3VGyY3iG0I3pb8pBRG+wYPG8wYQG/42uG8oZSG/43bDKY3iDKg3cNzI3iRKo3gGyo3/G7A2WG7g2aG/43WGzA3dGzI3/G6fTGzRvcG/43/G/43/G/43/G/43/G/43/G/437HFw2IHFo2KAH4A/AH4Aa")); var imgbubble = require("heatshrink").decompress(atob("i0UhAebgoAFCaYXNBocjAAIWNCYoVHCw4UFIZwqELJQWFKZQVOChYVzABwVaCx7wKCqIWNCg4WMChIXJCZgAnA==")); - +require("Font8x12").add(Graphics); +var batteryPercentStr=""; var W=g.getWidth(),H=g.getHeight(); var b2v = (W != 240)?-1:1; var b2rot = (W != 240)?Math.PI:0; @@ -12,11 +23,58 @@ for (var i=0;i<10;i++) { bubbles.push({y:Math.random()*H,ly:0,x:(0.5+(i<5?i:i+8))*W/18,v:0.6+Math.random(),s:0.5+Math.random()}); } + +var clockStr=""; +var x=g.getWidth()/2; +var cy=g.getHeight()-(g.getHeight()/7) +var by=g.getHeight()-(g.getHeight()/3.500) + + +function calculateTime(){ + g.setFont("Vector",22); + g.setFontAlign(0,0); + var d=new Date(); + clockStr = require("locale").time(d, 1); // Hour and minute + var meridian=require("locale").meridian(d); + if(meridian!=""){ + //Meridian active + clockStr=clockStr+" "+meridian; + } + +} +function calculate(){ + if(settings.showTime==true){ + calculateTime(); + } + if(settings.showBatPercent==true){ + batteryPercentStr=E.getBattery()+"%"; + } + + +} +function drawClock(){ + + + +} +function drawBatPercent(){ + + + +} function anim() { /* we don't use any kind of buffering here. Just draw one image at a time (image contains a background) too, and there is minimal flicker. */ - var mx = W/2.0, my = H/2.0; + var mx = W/2.0; + var my; + if(settings.showBatPercent){ + var my = H/2.5; + }else{ + var my = H/2.0; + } + + bubbles.forEach(f=>{ f.y-=f.v * b2v; if (f.y<-24) @@ -27,9 +85,22 @@ function anim() { }); g.drawImage(imgbat, mx,my,{scale:b2scale, rotate:Math.sin(getTime()*2)*0.5-Math.PI/2 + b2rot}); g.flip(); + if(settings.showTime==true){ + g.drawString(clockStr,x,cy); + } + if(settings.showBatPercent==true){ + g.drawString(batteryPercentStr,x,by,true); + } +} + +if(settings.showBatPercent||settings.showTime){ + //Eliminate unnesccesary need for calculation + calculate(); + setInterval(calculate,20000); } -setInterval(anim,20); +setInterval(anim,15); + Bangle.on("charging", isCharging => { if (!isCharging) load(); From 8459c3f7b51b68f4a2e69101c211a0b64599e84f Mon Sep 17 00:00:00 2001 From: RKBoss6 Date: Thu, 19 Jun 2025 18:46:24 -0400 Subject: [PATCH 02/17] Create settings.js --- apps/chargeanim/settings.js | 53 +++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 apps/chargeanim/settings.js diff --git a/apps/chargeanim/settings.js b/apps/chargeanim/settings.js new file mode 100644 index 000000000..7380fc0c0 --- /dev/null +++ b/apps/chargeanim/settings.js @@ -0,0 +1,53 @@ +(function(back) { + var FILE = "chargeAnimSettings.json"; + // Load settings + + var settings = Object.assign({ + // default values + showBatPercent: true, + showTime: true, + keepScreenOn:false, + + }, require('Storage').readJSON(FILE, true) || {}); + + function writeSettings() { + require('Storage').writeJSON(FILE, settings); + } + + // Show the menu + E.showMenu({ + "" : { "title" : "Charge Animation" }, + "< Back" : () => back(), + 'Show Percent Charged': { + value: !!settings.showBatPercent, // !! converts undefined to false + onchange: v => { + settings.showBatPercent = v; + writeSettings(); + } + // format: ... may be specified as a function which converts the value to a string + // if the value is a boolean, showMenu() will convert this automatically, which + // keeps settings menus consistent + }, + 'Show Time': { + value: !!settings.showTime, // !! converts undefined to false + onchange: v => { + settings.showTime = v; + writeSettings(); + } + // format: ... may be specified as a function which converts the value to a string + // if the value is a boolean, showMenu() will convert this automatically, which + // keeps settings menus consistent + }, + 'Keep Backlight On': { + value: !!settings.keepScreenOn, // !! converts undefined to false + onchange: v => { + settings.keepScreenOn = v; + writeSettings(); + } + // format: ... may be specified as a function which converts the value to a string + // if the value is a boolean, showMenu() will convert this automatically, which + // keeps settings menus consistent + }, + + }); +}) From 1c04fff6e8918f6a0628c8420d8b4c2680bc809d Mon Sep 17 00:00:00 2001 From: RKBoss6 Date: Thu, 19 Jun 2025 18:48:58 -0400 Subject: [PATCH 03/17] Update metadata.json --- apps/chargeanim/metadata.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/chargeanim/metadata.json b/apps/chargeanim/metadata.json index 05d894e00..6d7952254 100644 --- a/apps/chargeanim/metadata.json +++ b/apps/chargeanim/metadata.json @@ -1,8 +1,8 @@ { "id": "chargeanim", "name": "Charge Animation", - "version": "0.02", - "description": "When charging, show a sideways charging animation and keep the screen on. When removed from the charger load the clock again.", + "version": "0.03", + "description": "When charging, show a sideways charging animation and optionally, keep the screen on, show time, or show battery percentage. When removed from the charger load the clock again.", "icon": "icon.png", "tags": "battery", "supports": ["BANGLEJS", "BANGLEJS2"], @@ -11,6 +11,8 @@ "storage": [ {"name":"chargeanim.app.js","url":"app.js"}, {"name":"chargeanim.boot.js","url":"boot.js"}, + {"name":"chargeanim.settings.js","url":"settings.js"}, {"name":"chargeanim.img","url":"app-icon.js","evaluate":true} - ] + ], + "data": [{"name":"chargeAnimSettings.json"}] } From 99768ab55ec87c21a50f78016da7f1f7f5a7b6e3 Mon Sep 17 00:00:00 2001 From: RKBoss6 Date: Thu, 19 Jun 2025 18:50:13 -0400 Subject: [PATCH 04/17] Update ChangeLog --- apps/chargeanim/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/chargeanim/ChangeLog b/apps/chargeanim/ChangeLog index a7262b0c9..74381da61 100644 --- a/apps/chargeanim/ChangeLog +++ b/apps/chargeanim/ChangeLog @@ -1,2 +1,3 @@ 0.01: New App! 0.02: Bangle.js 2 compatibility +0.03: Add settings menu for showing time and battery percent with animation, as well as setting for keeping backlight on or not. From b234abdd2ee9adc95a7e6de1bb12a876494baddc Mon Sep 17 00:00:00 2001 From: RKBoss6 Date: Thu, 19 Jun 2025 18:50:44 -0400 Subject: [PATCH 05/17] Update app.js --- apps/chargeanim/app.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/chargeanim/app.js b/apps/chargeanim/app.js index d971bfc11..671b0a889 100644 --- a/apps/chargeanim/app.js +++ b/apps/chargeanim/app.js @@ -26,8 +26,8 @@ for (var i=0;i<10;i++) { var clockStr=""; var x=g.getWidth()/2; -var cy=g.getHeight()-(g.getHeight()/7) -var by=g.getHeight()-(g.getHeight()/3.500) +var cy=g.getHeight()-(g.getHeight()/7); +var by=g.getHeight()-(g.getHeight()/3.500); function calculateTime(){ From 39f2eb4db83bfcbeef18e4adac8119749b8ff154 Mon Sep 17 00:00:00 2001 From: RKBoss6 Date: Thu, 19 Jun 2025 20:35:56 -0400 Subject: [PATCH 06/17] Fix bug with font not setting when battery percent is shown --- apps/chargeanim/app.js | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/apps/chargeanim/app.js b/apps/chargeanim/app.js index 671b0a889..fcdfe895e 100644 --- a/apps/chargeanim/app.js +++ b/apps/chargeanim/app.js @@ -23,16 +23,17 @@ for (var i=0;i<10;i++) { bubbles.push({y:Math.random()*H,ly:0,x:(0.5+(i<5?i:i+8))*W/18,v:0.6+Math.random(),s:0.5+Math.random()}); } +g.setFont("Vector",22); +g.setFontAlign(0,0); var clockStr=""; var x=g.getWidth()/2; -var cy=g.getHeight()-(g.getHeight()/7); -var by=g.getHeight()-(g.getHeight()/3.500); +var cy=g.getHeight()-(g.getHeight()/7) +var by=g.getHeight()-(g.getHeight()/3.500) function calculateTime(){ - g.setFont("Vector",22); - g.setFontAlign(0,0); + var d=new Date(); clockStr = require("locale").time(d, 1); // Hour and minute var meridian=require("locale").meridian(d); @@ -52,16 +53,7 @@ function calculate(){ } -function drawClock(){ - - -} -function drawBatPercent(){ - - - -} function anim() { /* we don't use any kind of buffering here. Just draw one image at a time (image contains a background) too, and there is minimal @@ -85,6 +77,7 @@ function anim() { }); g.drawImage(imgbat, mx,my,{scale:b2scale, rotate:Math.sin(getTime()*2)*0.5-Math.PI/2 + b2rot}); g.flip(); + if(settings.showTime==true){ g.drawString(clockStr,x,cy); } From fda3b1ba94c4a8aa5550d01d1ef64f13fdf05aa8 Mon Sep 17 00:00:00 2001 From: RKBoss6 Date: Thu, 19 Jun 2025 20:38:30 -0400 Subject: [PATCH 07/17] Update metadata.json --- apps/chargeanim/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/chargeanim/metadata.json b/apps/chargeanim/metadata.json index 6d7952254..efe380ce6 100644 --- a/apps/chargeanim/metadata.json +++ b/apps/chargeanim/metadata.json @@ -7,7 +7,7 @@ "tags": "battery", "supports": ["BANGLEJS", "BANGLEJS2"], "allow_emulator": true, - "screenshots": [{"url":"bangle2-charge-animation-screenshot.png"},{"url":"bangle-charge-animation-screenshot.png"}], + "screenshots": [{"url":"Screenshot1"},{"url":"Screenshot2"},{"url":"Screenshot3"}], "storage": [ {"name":"chargeanim.app.js","url":"app.js"}, {"name":"chargeanim.boot.js","url":"boot.js"}, From f9279967d683a7bd4fb4c7e4d6d5a5eaa659ba30 Mon Sep 17 00:00:00 2001 From: RKBoss6 Date: Thu, 19 Jun 2025 20:44:34 -0400 Subject: [PATCH 08/17] Delete old screenshot --- .../bangle-charge-animation-screenshot.png | Bin 3401 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 apps/chargeanim/bangle-charge-animation-screenshot.png diff --git a/apps/chargeanim/bangle-charge-animation-screenshot.png b/apps/chargeanim/bangle-charge-animation-screenshot.png deleted file mode 100644 index 83ef1dbdae1ebf16ee9df2f05fbc9220ac0a77a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3401 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 Date: Thu, 19 Jun 2025 20:44:43 -0400 Subject: [PATCH 09/17] Delete apps/chargeanim/bangle2-charge-animation-screenshot.png --- .../bangle2-charge-animation-screenshot.png | Bin 2031 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 apps/chargeanim/bangle2-charge-animation-screenshot.png diff --git a/apps/chargeanim/bangle2-charge-animation-screenshot.png b/apps/chargeanim/bangle2-charge-animation-screenshot.png deleted file mode 100644 index c3fb7c8c823c5c6033b8808c45fde56c7d231137..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2031 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 Az5oCK From fecb70fde789fb6b80713d123b7236a389ed3852 Mon Sep 17 00:00:00 2001 From: RKBoss6 Date: Thu, 19 Jun 2025 20:45:07 -0400 Subject: [PATCH 10/17] Add files via upload --- apps/chargeanim/Screenshot1.png | Bin 0 -> 14178 bytes apps/chargeanim/Screenshot2.png | Bin 0 -> 12721 bytes apps/chargeanim/Screenshot3.png | Bin 0 -> 16179 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/chargeanim/Screenshot1.png create mode 100644 apps/chargeanim/Screenshot2.png create mode 100644 apps/chargeanim/Screenshot3.png diff --git a/apps/chargeanim/Screenshot1.png b/apps/chargeanim/Screenshot1.png new file mode 100644 index 0000000000000000000000000000000000000000..047ab2ca60015a0926c97d0f5b182d9dc289bb41 GIT binary patch literal 14178 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 Z&yiBwF$MP>ASnt`Rn$_bl(Pu^e*nA(%L4!a literal 0 HcmV?d00001 diff --git a/apps/chargeanim/Screenshot2.png b/apps/chargeanim/Screenshot2.png new file mode 100644 index 0000000000000000000000000000000000000000..ba6b543fe55394ef3069d4a386b35bd34fd4db4c GIT binary patch literal 12721 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 literal 0 HcmV?d00001 diff --git a/apps/chargeanim/Screenshot3.png b/apps/chargeanim/Screenshot3.png new file mode 100644 index 0000000000000000000000000000000000000000..d1c6bcb0b77978434586bee4a51952cb3c44e675 GIT binary patch literal 16179 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 Date: Thu, 19 Jun 2025 20:47:15 -0400 Subject: [PATCH 11/17] Update settings.js --- apps/chargeanim/settings.js | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/apps/chargeanim/settings.js b/apps/chargeanim/settings.js index 7380fc0c0..39fc2333b 100644 --- a/apps/chargeanim/settings.js +++ b/apps/chargeanim/settings.js @@ -6,7 +6,7 @@ // default values showBatPercent: true, showTime: true, - keepScreenOn:false, + }, require('Storage').readJSON(FILE, true) || {}); @@ -37,17 +37,8 @@ // format: ... may be specified as a function which converts the value to a string // if the value is a boolean, showMenu() will convert this automatically, which // keeps settings menus consistent - }, - 'Keep Backlight On': { - value: !!settings.keepScreenOn, // !! converts undefined to false - onchange: v => { - settings.keepScreenOn = v; - writeSettings(); - } - // format: ... may be specified as a function which converts the value to a string - // if the value is a boolean, showMenu() will convert this automatically, which - // keeps settings menus consistent - }, + } + }); }) From e41e85a442389b01efea35fde0203ce10850c7f3 Mon Sep 17 00:00:00 2001 From: RKBoss6 Date: Thu, 19 Jun 2025 20:47:36 -0400 Subject: [PATCH 12/17] Update app.js --- apps/chargeanim/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/chargeanim/app.js b/apps/chargeanim/app.js index fcdfe895e..9e528eb47 100644 --- a/apps/chargeanim/app.js +++ b/apps/chargeanim/app.js @@ -3,7 +3,7 @@ var settings = Object.assign({ // default values showBatPercent: true, showTime: true, - keepScreenOn:false, + }, require("Storage").readJSON("chargeAnimSettings.json", true) || {}); From 4bfeabae0b9a4b6a140705d87245042b5c2451f0 Mon Sep 17 00:00:00 2001 From: RKBoss6 Date: Thu, 19 Jun 2025 20:52:36 -0400 Subject: [PATCH 13/17] Update metadata.json --- apps/chargeanim/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/chargeanim/metadata.json b/apps/chargeanim/metadata.json index efe380ce6..2b491c519 100644 --- a/apps/chargeanim/metadata.json +++ b/apps/chargeanim/metadata.json @@ -2,7 +2,7 @@ "id": "chargeanim", "name": "Charge Animation", "version": "0.03", - "description": "When charging, show a sideways charging animation and optionally, keep the screen on, show time, or show battery percentage. When removed from the charger load the clock again.", + "description": "When charging, show a sideways charging animation and optionally, show time, or show battery percentage. When removed from the charger, clock loads again.", "icon": "icon.png", "tags": "battery", "supports": ["BANGLEJS", "BANGLEJS2"], From 4e3857508205d182872edddad452cbec2c0f9ce4 Mon Sep 17 00:00:00 2001 From: RKBoss6 Date: Thu, 19 Jun 2025 21:32:10 -0400 Subject: [PATCH 14/17] Update metadata.json --- apps/chargeanim/metadata.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/chargeanim/metadata.json b/apps/chargeanim/metadata.json index 2b491c519..fdba38ea2 100644 --- a/apps/chargeanim/metadata.json +++ b/apps/chargeanim/metadata.json @@ -7,7 +7,10 @@ "tags": "battery", "supports": ["BANGLEJS", "BANGLEJS2"], "allow_emulator": true, - "screenshots": [{"url":"Screenshot1"},{"url":"Screenshot2"},{"url":"Screenshot3"}], + "screenshots": [ + {"url":"Screenshot1"}, + {"url":"Screenshot2"}, + {"url":"Screenshot3"}], "storage": [ {"name":"chargeanim.app.js","url":"app.js"}, {"name":"chargeanim.boot.js","url":"boot.js"}, From bf1f2de8448919c59544667c0d1f3c0beb21c9f4 Mon Sep 17 00:00:00 2001 From: RKBoss6 Date: Thu, 19 Jun 2025 21:32:31 -0400 Subject: [PATCH 15/17] Update metadata.json --- apps/chargeanim/metadata.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/chargeanim/metadata.json b/apps/chargeanim/metadata.json index fdba38ea2..d8c5fa18f 100644 --- a/apps/chargeanim/metadata.json +++ b/apps/chargeanim/metadata.json @@ -8,9 +8,9 @@ "supports": ["BANGLEJS", "BANGLEJS2"], "allow_emulator": true, "screenshots": [ - {"url":"Screenshot1"}, - {"url":"Screenshot2"}, - {"url":"Screenshot3"}], + {"url":"Screenshot1.png"}, + {"url":"Screenshot2.png"}, + {"url":"Screenshot3.png"}], "storage": [ {"name":"chargeanim.app.js","url":"app.js"}, {"name":"chargeanim.boot.js","url":"boot.js"}, From 9b1a48c0f8e890c5e5a21102d7dd6b152e04c716 Mon Sep 17 00:00:00 2001 From: RKBoss6 Date: Mon, 23 Jun 2025 14:53:08 -0400 Subject: [PATCH 16/17] Fix flicker --- apps/chargeanim/app.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/chargeanim/app.js b/apps/chargeanim/app.js index 9e528eb47..8913bda4a 100644 --- a/apps/chargeanim/app.js +++ b/apps/chargeanim/app.js @@ -76,14 +76,15 @@ function anim() { g.drawImage(imgbubble,f.y,f.x,{scale:f.s * b2scale, rotate:b2rot}); }); g.drawImage(imgbat, mx,my,{scale:b2scale, rotate:Math.sin(getTime()*2)*0.5-Math.PI/2 + b2rot}); - g.flip(); - if(settings.showTime==true){ g.drawString(clockStr,x,cy); } if(settings.showBatPercent==true){ g.drawString(batteryPercentStr,x,by,true); } + g.flip(); + + } if(settings.showBatPercent||settings.showTime){ @@ -92,7 +93,7 @@ if(settings.showBatPercent||settings.showTime){ setInterval(calculate,20000); } -setInterval(anim,15); +setInterval(anim,22); Bangle.on("charging", isCharging => { From 53c2977fd534807a53d73ab1966ed3901ff99a26 Mon Sep 17 00:00:00 2001 From: RKBoss6 Date: Mon, 23 Jun 2025 14:53:24 -0400 Subject: [PATCH 17/17] Update ChangeLog --- apps/chargeanim/ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/chargeanim/ChangeLog b/apps/chargeanim/ChangeLog index 74381da61..42e2cc260 100644 --- a/apps/chargeanim/ChangeLog +++ b/apps/chargeanim/ChangeLog @@ -1,3 +1,3 @@ 0.01: New App! 0.02: Bangle.js 2 compatibility -0.03: Add settings menu for showing time and battery percent with animation, as well as setting for keeping backlight on or not. +0.03: Add settings menu for showing time and battery percent with animation.