From 009df38104965fc2b3119ebdd5fcb8e95d3223f5 Mon Sep 17 00:00:00 2001 From: Danny <31635744+DDDanny@users.noreply.github.com> Date: Wed, 12 Jan 2022 00:16:01 +0100 Subject: [PATCH 1/3] fixed and aligned for bangle2 *bugfix* stopwatch broken with v0.03 setUI realigned quick n dirty screen positions help adjusted to fit bangle1 & bangle2 screen-size with widgets fixed bangle2 colors for chrono and last lap highlight added screen for bangle2 and a small README --- apps.json | 5 +- apps/devstopwatch/ChangeLog | 5 ++ apps/devstopwatch/README.md | 16 ++++++ apps/devstopwatch/app.js | 46 +++++++++++------- .../bangle1-dev-stopwatch-screenshot.png | Bin 3825 -> 2469 bytes .../bangle2-dev-stopwatch-screenshot.png | Bin 0 -> 2382 bytes 6 files changed, 52 insertions(+), 20 deletions(-) create mode 100644 apps/devstopwatch/README.md create mode 100644 apps/devstopwatch/bangle2-dev-stopwatch-screenshot.png diff --git a/apps.json b/apps.json index b5929a56c..f1872f337 100644 --- a/apps.json +++ b/apps.json @@ -2095,12 +2095,13 @@ "id": "devstopwatch", "name": "Dev Stopwatch", "shortName": "Dev Stopwatch", - "version": "0.03", + "version": "0.04", "description": "Stopwatch with 5 laps supported (cyclically replaced)", "icon": "app.png", "tags": "stopwatch,chrono,timer,chronometer", "supports": ["BANGLEJS","BANGLEJS2"], - "screenshots": [{"url":"bangle1-dev-stopwatch-screenshot.png"}], + "screenshots": [{"url":"bangle1-dev-stopwatch-screenshot.png"},{"url":"bangle2-dev-stopwatch-screenshot.png"}], + "readme": "README.md", "allow_emulator": true, "storage": [ {"name":"devstopwatch.app.js","url":"app.js"}, diff --git a/apps/devstopwatch/ChangeLog b/apps/devstopwatch/ChangeLog index e2b392fe9..7e90e061e 100644 --- a/apps/devstopwatch/ChangeLog +++ b/apps/devstopwatch/ChangeLog @@ -1,3 +1,8 @@ 0.01: App created 0.02: Persist state to storage to enable stopwatch to continue in the background 0.03: Modified to use setUI, theme and different screens +0.04: *bugfix* stopwatch broken with v0.03 setUI + realigned quick n dirty screen positions + help adjusted to fit bangle1 & bangle2 screen-size with widgets + fixed bangle2 colors for chrono and last lap highlight + added screen for bangle2 and a small README \ No newline at end of file diff --git a/apps/devstopwatch/README.md b/apps/devstopwatch/README.md new file mode 100644 index 000000000..c068aadfe --- /dev/null +++ b/apps/devstopwatch/README.md @@ -0,0 +1,16 @@ +# dev stop watch + +stores state at kill + +Look and control: + +![](bangle1-dev-stopwatch-screenshot.png) +BTN1: start/lap +BTN2: launcher +BTN3: reset + +![](bangle2-dev-stopwatch-screenshot.png) +TAP top right: start/lap +TAP bottom right: reset +Use BTN to get to launcher + diff --git a/apps/devstopwatch/app.js b/apps/devstopwatch/app.js index 83bb693a9..d2a4b1117 100644 --- a/apps/devstopwatch/app.js +++ b/apps/devstopwatch/app.js @@ -3,11 +3,11 @@ const EMPTY_H = '00:00:000'; const MAX_LAPS = 6; const XY_CENTER = g.getWidth() / 2; const big = g.getWidth()>200; -const Y_CHRONO = 40; -const Y_HEADER = big?80:60; -const Y_LAPS = big?125:90; +const Y_CHRONO = big?40:30; +const Y_HEADER = big?95:65; +const Y_LAPS = big?125:80; const H_LAPS = big?15:8; -const Y_BTN3 = big?225:165; +const Y_HELP = big?225:135; const FONT = '6x8'; const CHRONO = '/* C H R O N O */'; @@ -27,18 +27,17 @@ var state = require("Storage").readJSON("devstopwatch.state.json",1) || { // Show launcher when button pressed Bangle.setUI("clockupdown", btn=>{ - if (btn==0) { - reset = false; - - if (state.started) { - changeLap(); - } else { - if (!reset) { - chronoInterval = setInterval(chronometer, 10); - } + switch (btn) { + case -1: + if (state.started) { + changeLap(); + } else { + chronoInterval = setInterval(chronometer, 10); + } + break; + case 1: resetChrono(); break; + default: Bangle.showLauncher(); break; //launcher handeled by ROM } -} - if (btn==1) resetChrono(); }); function resetChrono() { @@ -105,6 +104,7 @@ function printChrono() { var print = ''; + g.setColor(g.theme.fg); g.setFont(FONT, big?2:1); print = CHRONO; g.drawString(print, XY_CENTER, Y_CHRONO, true); @@ -124,7 +124,8 @@ function printChrono() { let suffix = ' '; if (state.currentLapIndex === i) { let suffix = '*'; - g.setColor("#f70"); + if (process.env.HWVERSION==2) g.setColor("#0ee"); + else g.setColor("#f70"); } const lapLine = `L${i - 1} ${state.laps[i]} ${suffix}\n`; @@ -133,8 +134,17 @@ function printChrono() { g.setColor(g.theme.fg); g.setFont(FONT, 1); - print = 'Press 3 to reset'; - g.drawString(print, XY_CENTER, Y_BTN3, true); + //help for model 2 or 1 + if (process.env.HWVERSION==2) { + print = /*LANG*/'TAP right top/bottom'; + g.drawString(print, XY_CENTER, Y_HELP, true); + print = /*LANG*/'start&lap/reset, BTN1: EXIT'; + g.drawString(print, XY_CENTER, Y_HELP+10, true); + } + else { + print = /*LANG*/'BTNs 1:startlap 2:exit 3:reset'; + g.drawString(print, XY_CENTER, Y_HELP, true); + } g.flip(); } diff --git a/apps/devstopwatch/bangle1-dev-stopwatch-screenshot.png b/apps/devstopwatch/bangle1-dev-stopwatch-screenshot.png index b668794b1f94f728fff6fbce8cfcfdc3c28e7787..8a9c9b46e33b4aa403bc90a43e0e4eca14b908ac 100644 GIT binary patch literal 2469 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 Z7IZMz?QhEcvOf^uGQ`cL@{-@9-vN`~z(@c9 literal 0 HcmV?d00001 From 30f8546319c83f79221fa73dcc9708aa6f131b31 Mon Sep 17 00:00:00 2001 From: Danny <31635744+DDDanny@users.noreply.github.com> Date: Wed, 12 Jan 2022 00:17:23 +0100 Subject: [PATCH 2/3] Update README.md --- apps/devstopwatch/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/devstopwatch/README.md b/apps/devstopwatch/README.md index c068aadfe..efead677b 100644 --- a/apps/devstopwatch/README.md +++ b/apps/devstopwatch/README.md @@ -5,11 +5,13 @@ stores state at kill Look and control: ![](bangle1-dev-stopwatch-screenshot.png) + BTN1: start/lap BTN2: launcher BTN3: reset ![](bangle2-dev-stopwatch-screenshot.png) + TAP top right: start/lap TAP bottom right: reset Use BTN to get to launcher From 382dce1176f8794fd117f587825fac2bb3453e9d Mon Sep 17 00:00:00 2001 From: Danny <31635744+DDDanny@users.noreply.github.com> Date: Wed, 12 Jan 2022 00:18:52 +0100 Subject: [PATCH 3/3] Update README.md --- apps/devstopwatch/README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/devstopwatch/README.md b/apps/devstopwatch/README.md index efead677b..02a13151f 100644 --- a/apps/devstopwatch/README.md +++ b/apps/devstopwatch/README.md @@ -2,17 +2,17 @@ stores state at kill -Look and control: - +## Bangle 1 ![](bangle1-dev-stopwatch-screenshot.png) -BTN1: start/lap -BTN2: launcher -BTN3: reset +* BTN1: start/lap +* BTN2: launcher +* BTN3: reset +## Bangle 2 ![](bangle2-dev-stopwatch-screenshot.png) -TAP top right: start/lap -TAP bottom right: reset -Use BTN to get to launcher +* TAP top right: start/lap +* TAP bottom right: reset +* Use BTN to get to launcher