diff --git a/apps/bikespeedo/ChangeLog b/apps/bikespeedo/ChangeLog index 7330eb937..e63622217 100644 --- a/apps/bikespeedo/ChangeLog +++ b/apps/bikespeedo/ChangeLog @@ -1,7 +1,8 @@ -0.01: New App! -0.02: Barometer altitude adjustment setting -0.03: Use default Bangle formatter for booleans -0.04: Add options for units in locale and recording GPS -0.05: Allow toggling of "max" values (screen tap) and recording (button press) -0.06: Fix local unit setting +0.01: New App! +0.02: Barometer altitude adjustment setting +0.03: Use default Bangle formatter for booleans +0.04: Add options for units in locale and recording GPS +0.05: Allow toggling of "max" values (screen tap) and recording (button press) +0.06: Fix local unit setting 0.07: Minor code improvements +0.08: Ensure graphics state is reset at the start of a draw (such as if a widget has altered state) diff --git a/apps/bikespeedo/app.js b/apps/bikespeedo/app.js index a1f0b53ce..7d0c65ab1 100644 --- a/apps/bikespeedo/app.js +++ b/apps/bikespeedo/app.js @@ -196,7 +196,7 @@ var emulator = (process.env.BOARD=="EMSCRIPTEN" || process.env.BOARD=="EMSCRIPTE var SATinView = 0; function drawFix(dat) { - g.clearRect(0,screenYstart,screenW,screenH); + g.reset().clearRect(0,screenYstart,screenW,screenH); var v = ''; var u=''; @@ -234,7 +234,6 @@ function drawFix(dat) { drawSats('View:' + SATinView); } } - g.reset(); } @@ -404,12 +403,12 @@ function onGPS(fix) { } function updateClock() { - drawTime(); g.reset(); + drawTime(); if ( emulator ) { max.spd++; max.alt++; - const d=new Date(); + const d=new Date(); sec=d.getSeconds(); onGPS(lf); } @@ -499,7 +498,7 @@ function nextMode() { function start() { Bangle.setBarometerPower(1); // needs some time... - g.clearRect(0,screenYstart,screenW,screenH); + g.reset().clearRect(0,screenYstart,screenW,screenH); onGPS(lf); Bangle.setGPSPower(1); Bangle.on('GPS', onGPS); diff --git a/apps/bikespeedo/metadata.json b/apps/bikespeedo/metadata.json index 20c7d4f53..2df77ec17 100644 --- a/apps/bikespeedo/metadata.json +++ b/apps/bikespeedo/metadata.json @@ -2,7 +2,7 @@ "id": "bikespeedo", "name": "Bike Speedometer (beta)", "shortName": "Bike Speedometer", - "version": "0.07", + "version": "0.08", "description": "Shows GPS speed, GPS heading, Compass heading, GPS altitude and Barometer altitude from internal sources", "icon": "app.png", "screenshots": [{"url":"Screenshot.png"}], diff --git a/apps/runplus/ChangeLog b/apps/runplus/ChangeLog index 652e8ec36..5dc4a4278 100644 --- a/apps/runplus/ChangeLog +++ b/apps/runplus/ChangeLog @@ -28,5 +28,9 @@ Write to correct settings file, fixing settings not working. 0.25: Fix step count bug when runs are resumed after a long time 0.26: Add ability to zoom in on a single stat by tapping it 0.27: Allow setting to alway resume an activity -0.28: Optimise UI: only redraw if we showed a recorder menu and correctly +0.28: Add vibration feedback on start/stop +0.29: Optimise UI: only redraw if we showed a recorder menu and correctly track screen state + + + diff --git a/apps/runplus/app.js b/apps/runplus/app.js index ea46c5b95..aa2e5f0d3 100644 --- a/apps/runplus/app.js +++ b/apps/runplus/app.js @@ -27,6 +27,7 @@ let settings = Object.assign({ B6: "caden", paceLength: 1000, alwaysResume: false, + vibrate: false, notify: { dist: { value: 0, @@ -59,6 +60,8 @@ function setStatus(running) { // Called to start/stop running function onStartStop() { + if (settings.vibrate) Bangle.buzz(250); + if (screen === "karvonen") { // start/stop on the karvonen screen reverts us to the main screen setScreen("main"); diff --git a/apps/runplus/settings.js b/apps/runplus/settings.js index 77343d6b3..d18833e1e 100644 --- a/apps/runplus/settings.js +++ b/apps/runplus/settings.js @@ -18,6 +18,7 @@ B6: "caden", paceLength: 1000, // TODO: Default to either 1km or 1mi based on locale alwaysResume: false, + vibrate: false, notify: { dist: { increment: 0, @@ -80,6 +81,13 @@ saveSettings(); }, }; + menu[/*LANG*/"Start/stop vibrate"] = { + value : settings.vibrate, + onchange : v => { + settings.vibrate = v; + saveSettings(); + }, + }; var notificationsMenu = { '< Back': function() { E.showMenu(menu) }, } diff --git a/apps/widmp/ChangeLog b/apps/widmp/ChangeLog index 56cc64be1..65d1a8d9b 100644 --- a/apps/widmp/ChangeLog +++ b/apps/widmp/ChangeLog @@ -7,3 +7,4 @@ 0.07: Use default Bangle formatter for booleans 0.08: Better formula for the moon's phase 0.09: Fix variable declaration +0.10: Added ability to hide widget diff --git a/apps/widmp/metadata.json b/apps/widmp/metadata.json index a334ec27e..bd4c182d0 100644 --- a/apps/widmp/metadata.json +++ b/apps/widmp/metadata.json @@ -1,7 +1,7 @@ { "id": "widmp", "name": "Moon Phase", - "version": "0.09", + "version": "0.10", "description": "Display the current moon phase in blueish (in light mode) or white (in dark mode) for both hemispheres. In the southern hemisphere the 'My Location' app is needed.", "icon": "widget.png", "type": "widget", diff --git a/apps/widmp/settings.js b/apps/widmp/settings.js index e671d9900..734e90a5b 100644 --- a/apps/widmp/settings.js +++ b/apps/widmp/settings.js @@ -2,6 +2,7 @@ var settings = Object.assign({ default_colour: true, + hide: false, red: 0, green: 0, blue: 0, @@ -30,6 +31,13 @@ writeSettings(); } }, + "Hide Widget": { + value: settings.hide, + onchange: () => { + settings.hide = !settings.hide; + writeSettings(); + } + }, "Custom...": () => E.showMenu(custommenu) }; diff --git a/apps/widmp/widget.js b/apps/widmp/widget.js index 89c072ca1..d94c8697a 100644 --- a/apps/widmp/widget.js +++ b/apps/widmp/widget.js @@ -3,6 +3,7 @@ var lastCalculated = 0; // When we last calculated the phase var phase = 0; // The last phase we calculated var southernHemisphere = false; // when in southern hemisphere -- use the "My Location" App + var settings; // https://github.com/deirdreobyrne/LunarPhase function moonPhase(sec) { @@ -39,14 +40,18 @@ g.drawLine(CenterX-leftFactor*y,CenterY+x, CenterX+rightFactor*y,CenterY+x); } } - - function setMoonColour(g) { - var settings = Object.assign({ + + function reloadSettings() { + settings = Object.assign({ default_colour: true, + hide: false, red: 0, green: 0, blue: 0, }, require('Storage').readJSON("widmp.json", true) || {}); + } + + function setMoonColour(g) { if (settings.default_colour) { if (g.theme.dark) { g.setColor(0xffff); // white @@ -62,6 +67,7 @@ function draw() { + if (settings.hide) return; const CenterX = this.x + 12, CenterY = this.y + 12, Radius = 11; let leftFactor, rightFactor; @@ -90,9 +96,11 @@ drawMoonPhase(CenterX,CenterY, Radius, leftFactor,rightFactor); } + reloadSettings(); + var wid = settings.hide ? 0 : 24; WIDGETS["widmp"] = { area: "tr", - width: 24, + width: wid, draw: draw };