Merge branch 'master' of github.com:espruino/BangleApps
commit
760840db2e
|
|
@ -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",
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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() {
|
||||||
|
|
|
||||||
|
|
@ -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) {}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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};
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue