Merge branch 'master' of github.com:espruino/BangleApps

master
Gordon Williams 2021-08-27 10:35:24 +01:00
commit 760840db2e
12 changed files with 95 additions and 30 deletions

View File

@ -1183,7 +1183,7 @@
{ "id": "widpedom", { "id": "widpedom",
"name": "Pedometer widget", "name": "Pedometer widget",
"icon": "widget.png", "icon": "widget.png",
"version":"0.14", "version":"0.15",
"description": "Daily pedometer widget", "description": "Daily pedometer widget",
"tags": "widget,b2", "tags": "widget,b2",
"type":"widget", "type":"widget",
@ -3208,7 +3208,7 @@
{ "id": "kitchen", { "id": "kitchen",
"name": "Kitchen Combo", "name": "Kitchen Combo",
"icon": "kitchen.png", "icon": "kitchen.png",
"version":"0.12", "version":"0.13",
"description": "Combination of the Stepo, Walkersclock, Arrow and Waypointer apps into a multiclock format. 'Everything but the kitchen sink'. Requires firmware v2.08.167 or later", "description": "Combination of the Stepo, Walkersclock, Arrow and Waypointer apps into a multiclock format. 'Everything but the kitchen sink'. Requires firmware v2.08.167 or later",
"tags": "tool,outdoors,gps", "tags": "tool,outdoors,gps",
"type":"clock", "type":"clock",

View File

@ -10,3 +10,4 @@
0.10: Converted Stepo to use direct screen writes, added a Trip Counter feature to stepo 0.10: Converted Stepo to use direct screen writes, added a Trip Counter feature to stepo
0.11: Detect when waypoints.json is not present, error E-WPT 0.11: Detect when waypoints.json is not present, error E-WPT
0.12: Added stepo2 as a replacement for stepo and digi 0.12: Added stepo2 as a replacement for stepo and digi
0.13: Added long press BTN2 toggle gpsrec status in GPS clock

View File

@ -85,14 +85,19 @@
function onButtonLong(btn) { function onButtonLong(btn) {
log_debug("markWaypoint()"); log_debug("markWaypoint()");
if (btn !== 1) return; if (btn === 1) {
if (gpsObject.getState() !== gpsObject.GPS_RUNNING) return; if (gpsObject.getState() !== gpsObject.GPS_RUNNING) return;
log_debug("markWaypoint()"); log_debug("markWaypoint()");
gpsObject.markWaypoint(); gpsObject.markWaypoint();
resetPrevious(); resetPrevious();
getWaypoint(); getWaypoint();
drawGPSData(); drawGPSData();
return;
}
if (btn === 2)
Bangle.showLauncher();
} }
function getWaypoint() { function getWaypoint() {

View File

@ -55,7 +55,10 @@
if (btn === 1) cycleInfoMode(); if (btn === 1) cycleInfoMode();
} }
function onButtonLong(btn) {} function onButtonLong(btn) {
if (btn === 2) Bangle.showLauncher();
}
function getGPSfix() { return undefined; } function getGPSfix() { return undefined; }
function setGPSfix(f) {} function setGPSfix(f) {}

View File

@ -45,7 +45,15 @@
} }
function onButtonLong(btn) { function onButtonLong(btn) {
if (btn === 1) toggleGPSPower(); switch(btn) {
case 1:
toggleGPSPower();
return;
case 2:
if (gpsObject.getState() === gpsObject.GPS_RUNNING)
gpsObject.toggleGpsLogging();
return;
}
} }
function draw(){ function draw(){
@ -142,8 +150,9 @@
g.clearRect(0, Y_ACTIVITY, 239, Y_MODELINE - 1); g.clearRect(0, Y_ACTIVITY, 239, Y_MODELINE - 1);
g.drawString(activityStr, 120, Y_ACTIVITY); g.drawString(activityStr, 120, Y_ACTIVITY);
g.setFont("6x8",2); g.setFont("6x8",2);
g.setColor(1,1,1); g.setColor(1,1,1);
g.drawString(age, 120, Y_ACTIVITY + 46); var age_and_logging = age + " logging " + gpsObject.loggingStatus();
g.drawString(age_and_logging, 120, Y_ACTIVITY + 46);
} }
} }

View File

@ -71,7 +71,8 @@ function buttonReleased(btn) {
face.onButtonLong(btn); face.onButtonLong(btn);
break; break;
case 2: case 2:
Bangle.showLauncher(); face.onButtonLong(btn);
//Bangle.showLauncher();
break; break;
case 3: case 3:
// do nothing // do nothing
@ -94,8 +95,8 @@ function setButtons(){
} }
Bangle.on('kill',()=>{ Bangle.on('kill',()=>{
Bangle.setCompassPower(0); Bangle.setCompassPower(0,'kitchen');
Bangle.setGPSPower(0); Bangle.setGPSPower(0,'kitchen');
}); });
Bangle.on('lcdPower',function(on) { Bangle.on('lcdPower',function(on) {
@ -214,7 +215,7 @@ GPS.prototype.toggleGPSPower = function() {
this.log_debug("toggleGPSPower()"); this.log_debug("toggleGPSPower()");
this.gpsPowerState = Bangle.isGPSOn(); this.gpsPowerState = Bangle.isGPSOn();
this.gpsPowerState = !this.gpsPowerState; this.gpsPowerState = !this.gpsPowerState;
Bangle.setGPSPower(this.gpsPowerState ? 1 : 0); Bangle.setGPSPower((this.gpsPowerState ? 1 : 0), 'kitchen');
this.resetLastFix(); this.resetLastFix();
this.determineGPSState(); this.determineGPSState();
@ -369,6 +370,26 @@ GPS.prototype.nextWaypoint = function(inc) {
return this.wp_current; return this.wp_current;
} }
GPS.prototype.toggleGpsLogging = function() {
var settings = require("Storage").readJSON("gpsrec.json",1)||{};
if (settings == {}) return false;
settings.recording = !settings.recording;
require("Storage").write("gpsrec.json", settings);
if (WIDGETS["gpsrec"])
WIDGETS["gpsrec"].reload();
return true;
}
GPS.prototype.loggingStatus = function() {
var settings = require("Storage").readJSON("gpsrec.json",1)||{};
if (settings == {}) return "E-LOG";
if (settings.recording) return "ON";
return "OFF";
}
var gpsObj = new GPS(); var gpsObj = new GPS();

View File

@ -19,11 +19,16 @@
} }
function onButtonLong(btn) { function onButtonLong(btn) {
trip.resetTrip(getSteps()); if (btn === 1) {
trip.setTripState(true); trip.resetTrip(getSteps());
drawStepText(); trip.setTripState(true);
drawStepText();
return;
}
if (btn === 2) Bangle.showLauncher();
} }
function radians(a) { function radians(a) {
return a*Math.PI/180; return a*Math.PI/180;
} }

View File

@ -62,12 +62,17 @@
} }
function onButtonLong(btn) { function onButtonLong(btn) {
trip.resetTrip(getSteps()); if (btn === 1) {
infoMode = INFO_TRIP; trip.resetTrip(getSteps());
forceRedraw(); infoMode = INFO_TRIP;
draw(); forceRedraw();
draw();
return;
}
if (btn === 2) Bangle.showLauncher();
} }
function radians(a) { function radians(a) {
return a*Math.PI/180; return a*Math.PI/180;
} }
@ -207,7 +212,8 @@
var midrot = -180 - (360 * percent); var midrot = -180 - (360 * percent);
var endrot = -360 - 180; var endrot = -360 - 180;
g.setColor(0x07FF); // light cyan //g.setColor(0x07FF); // light cyan
g.setColor(0xFFC0); // yellow
// draw guauge // draw guauge
for (i = startrot; i > midrot; i -= 3) { for (i = startrot; i > midrot; i -= 3) {
@ -218,8 +224,8 @@
// change the remaining color to RED if battery is below 25% // change the remaining color to RED if battery is below 25%
if (E.getBattery() > 25) { if (E.getBattery() > 25) {
//g.setColor(0x7BEF); // grey g.setColor(0x7BEF); // grey
g.setColor(0x000D); // dark navy //g.setColor(0x000D); // dark navy
} else { } else {
g.setColor(0xF800); // red g.setColor(0xF800); // red
} }

View File

@ -31,7 +31,9 @@
} }
} }
function onButtonLong(btn) {} function onButtonLong(btn) {
if (btn === 2) Bangle.showLauncher();
}
return {init:init, freeResources:freeResources, startTimer:startTimer, stopTimer:stopTimer, return {init:init, freeResources:freeResources, startTimer:startTimer, stopTimer:stopTimer,
onButtonShort:onButtonShort, onButtonLong:onButtonLong}; onButtonShort:onButtonShort, onButtonLong:onButtonLong};

View File

@ -11,3 +11,4 @@
0.12: Respect Quiet Mode 0.12: Respect Quiet Mode
0.13: Now use system color theme 0.13: Now use system color theme
0.14: Improve memory usage 0.14: Improve memory usage
0.15: Settings option to hide the widget icon

View File

@ -5,6 +5,7 @@
let s = { let s = {
'goal': 10000, 'goal': 10000,
'progress': false, 'progress': false,
'hide': false
} }
// ...and overwrite them with any saved values // ...and overwrite them with any saved values
// This way saved values are preserved if a new version adds more settings // This way saved values are preserved if a new version adds more settings
@ -41,6 +42,14 @@
save() save()
}, },
}, },
'Hide Widget': {
value: s.hide,
format: () => (s.hide ? 'Yes' : 'No'),
onchange: () => {
s.hide = !s.hide
save()
},
},
'< Back': back, '< Back': back,
}) })
}) })

View File

@ -14,11 +14,13 @@
const DEFAULTS = { const DEFAULTS = {
'goal': 10000, 'goal': 10000,
'progress': false, 'progress': false,
'hide': false
} }
return (key in settings) ? settings[key] : DEFAULTS[key]; return (key in settings) ? settings[key] : DEFAULTS[key];
} }
function drawProgress(stps) { function drawProgress(stps) {
if (setting('hide')) return;
const width = 24, half = width/2; const width = 24, half = width/2;
const goal = setting('goal'), left = Math.max(goal-stps,0); const goal = setting('goal'), left = Math.max(goal-stps,0);
const c = left ? "#00f" : "#090"; // blue or dark green const c = left ? "#00f" : "#090"; // blue or dark green
@ -48,6 +50,7 @@
// draw your widget // draw your widget
function draw() { function draw() {
if (setting('hide')) return;
var width = 24; var width = 24;
if (stp_today > 99999){ if (stp_today > 99999){
stp_today = stp_today % 100000; // cap to five digits + comma = 6 characters stp_today = stp_today % 100000; // cap to five digits + comma = 6 characters