From efdacb23c0630429f982b2149aa37caae4b4d98c Mon Sep 17 00:00:00 2001 From: Hank Date: Tue, 12 Jul 2022 12:48:30 +0200 Subject: [PATCH] Adopted for BJS1 --- apps/drinkcounter/ChangeLog | 3 +- apps/drinkcounter/app.js | 147 ++++++++++++++++++++------------ apps/drinkcounter/metadata.json | 4 +- 3 files changed, 98 insertions(+), 56 deletions(-) diff --git a/apps/drinkcounter/ChangeLog b/apps/drinkcounter/ChangeLog index 69faa7904..d8d174c4c 100644 --- a/apps/drinkcounter/ChangeLog +++ b/apps/drinkcounter/ChangeLog @@ -1,3 +1,4 @@ 0.10: Initial release - still work in progress 0.15: Added settings and calculations -0.20: Added status saving \ No newline at end of file +0.20: Added status saving +0.25: Adopted for Bangle.js 1 - kind of \ No newline at end of file diff --git a/apps/drinkcounter/app.js b/apps/drinkcounter/app.js index 47a4feb13..3e993b898 100644 --- a/apps/drinkcounter/app.js +++ b/apps/drinkcounter/app.js @@ -3,6 +3,7 @@ Bangle.loadWidgets(); Bangle.drawWidgets(); require("Font8x16").add(Graphics); +const BANGLEJS2 = process.env.HWVERSION == 2; const SETTINGSFILE = "drinkcounter.json"; setting = require("Storage").readJSON("setting.json",1); E.setTimeZone(setting.timezone); // timezone = 1 for MEZ, = 2 for MESZ @@ -154,7 +155,9 @@ function updateDrinks(){ } g.setBgColor(g.theme.bg).setColor(g.theme.fg); - g.drawImage(icoReset,145,145); + if (BANGLEJS2) { + g.drawImage(icoReset,145,145); + } drinkStatus.firstDrinkTime = firstDrinkTime; settings_file = require("Storage").open("drinkcounter.status.json", "w"); @@ -184,6 +187,10 @@ function addDrink(){ function removeDrink(){ if (drinks[activeDrink] > 0) drinks[activeDrink] = drinks[activeDrink] - 1; updateDrinks(); + + if ((!BANGLEJS2) && (drinks[0] == 0) && (drinks[1] == 0) && (drinks[2] == 0)) { + resetDrinksFn() + } } function previousDrink(){ @@ -203,61 +210,95 @@ function showDrinks() { g.drawImage(icoShot,80,100); } -function initDragEvents() { - Bangle.on("drag", e => { - if (!drag) { // start dragging - drag = {x: e.x, y: e.y}; - } else if (!e.b) { // released - const dx = e.x-drag.x, dy = e.y-drag.y; - drag = null; - if (Math.abs(dx)>Math.abs(dy)+10) { - // horizontal - if (dx < dy) { - //console.log("left " + dx + " " + dy); - previousDrink(); - } else { - //console.log("right " + dx + " " + dy); - nextDrink(); - } - } else if (Math.abs(dy)>Math.abs(dx)+10) { - // vertical - if (dx < dy) { - //console.log("down " + dx + " " + dy); - removeDrink(); - } else { - //console.log("up " + dx + " " + dy); - addDrink(); - } - } else { - //console.log("tap " + e.x + " " + e.y); - if (e.x > 145 && e.y > 145) { - g.clearRect(0,34,176,176); //Clear - resetDrinks = E.showPrompt("Reset drinks?", { - title: "Confirm", - buttons: { Yes: true, No: false }, - }); - resetDrinks.then((confirm) => { - if (confirm) { - for (let i = 0; i <= maxDrinks; i++) { - drinks[i] = 0; - } - //console.log("reset to default"); - } - //console.log("reset " + confirm); - firstDrinkTime = null; - showDrinks(); - updateDrinks(); - updateTime(); - updateFirstDrinkTime(); - }); - } - } - } -}); +function resetDrinksFn() { + g.clearRect(0,34,176,176); //Clear + resetDrinks = E.showPrompt("Reset drinks?", { + title: "Confirm", + buttons: { Yes: true, No: false }, + }); + resetDrinks.then((confirm) => { + if (confirm) { + for (let i = 0; i <= maxDrinks; i++) { + drinks[i] = 0; + } + //console.log("reset to default"); + } + //console.log("reset " + confirm); + firstDrinkTime = null; + showDrinks(); + updateDrinks(); + updateTime(); + updateFirstDrinkTime(); + }); } -loadMySettings(); +function bjsGetButtonState() { + let btn1 = BTN1.read(); + let btn2 = BTN2.read(); + let btn3 = BTN3.read(); + let btn4 = BTN4.read(); + let btn5 = BTN5.read(); + if (BTN1.read()) { + addDrink(); + } + if (BTN2.read()) { + resetDrinksFn(); + } + if (BTN3.read()) { + removeDrink(); + } + if (BTN4.read()) { + previousDrink(); + } + if (BTN5.read()) { + nextDrink(); + } +} + +function initDragEvents() { + Bangle.on("drag", e => { + if (!drag) { // start dragging + drag = {x: e.x, y: e.y}; + } else if (!e.b) { // released + const dx = e.x-drag.x, dy = e.y-drag.y; + drag = null; + if (Math.abs(dx)>Math.abs(dy)+10) { + // horizontal + if (dx < dy) { + //console.log("left " + dx + " " + dy); + previousDrink(); + } else { + //console.log("right " + dx + " " + dy); + nextDrink(); + } + } else if (Math.abs(dy)>Math.abs(dx)+10) { + // vertical + if (dx < dy) { + //console.log("down " + dx + " " + dy); + removeDrink(); + } else { + //console.log("up " + dx + " " + dy); + addDrink(); + } + } else { + //console.log("tap " + e.x + " " + e.y); + if (e.x > 145 && e.y > 145) { + resetDrinksFn(); + } + } + } + } +); +} + + + +if (!BANGLEJS2) { + setInterval(bjsGetButtonState, 100); // 10 Hz + } + +loadMySettings(); showDrinks(); diff --git a/apps/drinkcounter/metadata.json b/apps/drinkcounter/metadata.json index 3d1a167f0..2b8d7fe71 100644 --- a/apps/drinkcounter/metadata.json +++ b/apps/drinkcounter/metadata.json @@ -2,14 +2,14 @@ "id": "drinkcounter", "name": "Drink Counter", "shortName": "Drink Counter", - "version": "0.20", + "version": "0.25", "description": "Counts drinks you had for science. Calculates blood alcohol content (BAC)", "allow_emulator":true, "icon": "drinkcounter.png", "type": "app", "tags": "health", "screenshots": [{"url":"screenshot_drnkcnt.png"}], - "supports": ["BANGLEJS2"], + "supports": ["BANGLEJS", "BANGLEJS2"], "readme": "README.md", "storage": [ {"name":"drinkcounter.app.js","url":"app.js"},