Merge branch 'master' into feat/run-ui-opt

master
thyttan 2025-04-20 17:48:06 +02:00 committed by GitHub
commit dae711792b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 50 additions and 18 deletions

View File

@ -1,7 +1,8 @@
0.01: New App! 0.01: New App!
0.02: Barometer altitude adjustment setting 0.02: Barometer altitude adjustment setting
0.03: Use default Bangle formatter for booleans 0.03: Use default Bangle formatter for booleans
0.04: Add options for units in locale and recording GPS 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.05: Allow toggling of "max" values (screen tap) and recording (button press)
0.06: Fix local unit setting 0.06: Fix local unit setting
0.07: Minor code improvements 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)

View File

@ -196,7 +196,7 @@ var emulator = (process.env.BOARD=="EMSCRIPTEN" || process.env.BOARD=="EMSCRIPTE
var SATinView = 0; var SATinView = 0;
function drawFix(dat) { function drawFix(dat) {
g.clearRect(0,screenYstart,screenW,screenH); g.reset().clearRect(0,screenYstart,screenW,screenH);
var v = ''; var v = '';
var u=''; var u='';
@ -234,7 +234,6 @@ function drawFix(dat) {
drawSats('View:' + SATinView); drawSats('View:' + SATinView);
} }
} }
g.reset();
} }
@ -404,12 +403,12 @@ function onGPS(fix) {
} }
function updateClock() { function updateClock() {
drawTime();
g.reset(); g.reset();
drawTime();
if ( emulator ) { if ( emulator ) {
max.spd++; max.alt++; max.spd++; max.alt++;
const d=new Date(); const d=new Date();
sec=d.getSeconds(); sec=d.getSeconds();
onGPS(lf); onGPS(lf);
} }
@ -499,7 +498,7 @@ function nextMode() {
function start() { function start() {
Bangle.setBarometerPower(1); // needs some time... Bangle.setBarometerPower(1); // needs some time...
g.clearRect(0,screenYstart,screenW,screenH); g.reset().clearRect(0,screenYstart,screenW,screenH);
onGPS(lf); onGPS(lf);
Bangle.setGPSPower(1); Bangle.setGPSPower(1);
Bangle.on('GPS', onGPS); Bangle.on('GPS', onGPS);

View File

@ -2,7 +2,7 @@
"id": "bikespeedo", "id": "bikespeedo",
"name": "Bike Speedometer (beta)", "name": "Bike Speedometer (beta)",
"shortName": "Bike Speedometer", "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", "description": "Shows GPS speed, GPS heading, Compass heading, GPS altitude and Barometer altitude from internal sources",
"icon": "app.png", "icon": "app.png",
"screenshots": [{"url":"Screenshot.png"}], "screenshots": [{"url":"Screenshot.png"}],

View File

@ -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.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.26: Add ability to zoom in on a single stat by tapping it
0.27: Allow setting to alway resume an activity 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 track screen state

View File

@ -27,6 +27,7 @@ let settings = Object.assign({
B6: "caden", B6: "caden",
paceLength: 1000, paceLength: 1000,
alwaysResume: false, alwaysResume: false,
vibrate: false,
notify: { notify: {
dist: { dist: {
value: 0, value: 0,
@ -59,6 +60,8 @@ function setStatus(running) {
// Called to start/stop running // Called to start/stop running
function onStartStop() { function onStartStop() {
if (settings.vibrate) Bangle.buzz(250);
if (screen === "karvonen") { if (screen === "karvonen") {
// start/stop on the karvonen screen reverts us to the main screen // start/stop on the karvonen screen reverts us to the main screen
setScreen("main"); setScreen("main");

View File

@ -18,6 +18,7 @@
B6: "caden", B6: "caden",
paceLength: 1000, // TODO: Default to either 1km or 1mi based on locale paceLength: 1000, // TODO: Default to either 1km or 1mi based on locale
alwaysResume: false, alwaysResume: false,
vibrate: false,
notify: { notify: {
dist: { dist: {
increment: 0, increment: 0,
@ -80,6 +81,13 @@
saveSettings(); saveSettings();
}, },
}; };
menu[/*LANG*/"Start/stop vibrate"] = {
value : settings.vibrate,
onchange : v => {
settings.vibrate = v;
saveSettings();
},
};
var notificationsMenu = { var notificationsMenu = {
'< Back': function() { E.showMenu(menu) }, '< Back': function() { E.showMenu(menu) },
} }

View File

@ -7,3 +7,4 @@
0.07: Use default Bangle formatter for booleans 0.07: Use default Bangle formatter for booleans
0.08: Better formula for the moon's phase 0.08: Better formula for the moon's phase
0.09: Fix variable declaration 0.09: Fix variable declaration
0.10: Added ability to hide widget

View File

@ -1,7 +1,7 @@
{ {
"id": "widmp", "id": "widmp",
"name": "Moon Phase", "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.", "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", "icon": "widget.png",
"type": "widget", "type": "widget",

View File

@ -2,6 +2,7 @@
var settings = Object.assign({ var settings = Object.assign({
default_colour: true, default_colour: true,
hide: false,
red: 0, red: 0,
green: 0, green: 0,
blue: 0, blue: 0,
@ -30,6 +31,13 @@
writeSettings(); writeSettings();
} }
}, },
"Hide Widget": {
value: settings.hide,
onchange: () => {
settings.hide = !settings.hide;
writeSettings();
}
},
"Custom...": () => E.showMenu(custommenu) "Custom...": () => E.showMenu(custommenu)
}; };

View File

@ -3,6 +3,7 @@
var lastCalculated = 0; // When we last calculated the phase var lastCalculated = 0; // When we last calculated the phase
var phase = 0; // The last phase we calculated var phase = 0; // The last phase we calculated
var southernHemisphere = false; // when in southern hemisphere -- use the "My Location" App var southernHemisphere = false; // when in southern hemisphere -- use the "My Location" App
var settings;
// https://github.com/deirdreobyrne/LunarPhase // https://github.com/deirdreobyrne/LunarPhase
function moonPhase(sec) { function moonPhase(sec) {
@ -39,14 +40,18 @@
g.drawLine(CenterX-leftFactor*y,CenterY+x, CenterX+rightFactor*y,CenterY+x); g.drawLine(CenterX-leftFactor*y,CenterY+x, CenterX+rightFactor*y,CenterY+x);
} }
} }
function setMoonColour(g) { function reloadSettings() {
var settings = Object.assign({ settings = Object.assign({
default_colour: true, default_colour: true,
hide: false,
red: 0, red: 0,
green: 0, green: 0,
blue: 0, blue: 0,
}, require('Storage').readJSON("widmp.json", true) || {}); }, require('Storage').readJSON("widmp.json", true) || {});
}
function setMoonColour(g) {
if (settings.default_colour) { if (settings.default_colour) {
if (g.theme.dark) { if (g.theme.dark) {
g.setColor(0xffff); // white g.setColor(0xffff); // white
@ -62,6 +67,7 @@
function draw() { function draw() {
if (settings.hide) return;
const CenterX = this.x + 12, CenterY = this.y + 12, Radius = 11; const CenterX = this.x + 12, CenterY = this.y + 12, Radius = 11;
let leftFactor, rightFactor; let leftFactor, rightFactor;
@ -90,9 +96,11 @@
drawMoonPhase(CenterX,CenterY, Radius, leftFactor,rightFactor); drawMoonPhase(CenterX,CenterY, Radius, leftFactor,rightFactor);
} }
reloadSettings();
var wid = settings.hide ? 0 : 24;
WIDGETS["widmp"] = { WIDGETS["widmp"] = {
area: "tr", area: "tr",
width: 24, width: wid,
draw: draw draw: draw
}; };