1
0
Fork 0

Add settings

master
marko 2022-02-18 22:07:25 -05:00
parent 0c7a5f3d05
commit e256a81880
2 changed files with 49 additions and 11 deletions

View File

@ -5,18 +5,15 @@ var fix = {};
var last_course = -1; var last_course = -1;
var cur_course = -1; var cur_course = -1;
var course_marker_len = g.getWidth()/4; var course_marker_len = g.getWidth()/4;
var settings = require("Storage").readJSON('openseacsettings.json', 1) || {};
function redraw() { function redraw() {
g.setClipRect(0,y1,g.getWidth()-1,y2); g.setClipRect(0,y1,g.getWidth()-1,y2);
m.draw(); m.draw();
drawMarker(); drawMarker();
if (WIDGETS["gpsrec"] && WIDGETS["gpsrec"].plotTrack) {
g.flip(); // force immediate draw on double-buffered screens - track will update later
g.setColor(0.75,0.2,0);
WIDGETS["gpsrec"].plotTrack(m);
}
g.setClipRect(0,0,g.getWidth()-1,g.getHeight()-1); g.setClipRect(0,0,g.getWidth()-1,g.getHeight()-1);
if (cur_course!=-1) drawCourseMarker(cur_course); if (settings.drawcourse && cur_course!=-1) drawCourseMarker(cur_course);
} }
function drawMarker() { function drawMarker() {
@ -43,16 +40,16 @@ Bangle.on('GPS',function(f) {
txt += " - NO FIX"; txt += " - NO FIX";
else { else {
if (fix.satellites>3 && fix.speed>2) { // only uses fixes w/ more than 3 sats and speed > 2kph if (fix.satellites>3 && fix.speed>2) { // only uses fixes w/ more than 3 sats and speed > 2kph
if (cur_course!=-1) cur_course = 0.8*cur_course + 0.2*fix.course; cur_course = fix.course;
else cur_course = fix.course;
if (Math.abs(cur_course-last_course)>10 && Math.abs(cur_course-last_course)<350) { if (Math.abs(cur_course-last_course)>10 && Math.abs(cur_course-last_course)<350) {
last_course = cur_course; last_course = cur_course;
redraw(); redraw();
} }
} }
} }
g.drawString(txt,g.getWidth()/2,y1 + 4); g.drawString(txt,g.getWidth()/2,y1 + 4);
drawMarker(); drawMarker();
if (settings.autocenter) recenter();
}); });
Bangle.setGPSPower(1, "app"); Bangle.setGPSPower(1, "app");

View File

@ -0,0 +1,41 @@
// This file should contain exactly one function, which shows the app's settings
/**
* @param {function} back Use back() to return to settings menu
*/
(function(back) {
const SETTINGS_FILE = 'openseacsettings.json'
// initialize with default settings...
let s = {
'drawcourse': true,
'autocenter': false,
}
// ...and overwrite them with any saved values
// This way saved values are preserved if a new version adds more settings
const storage = require('Storage')
const saved = storage.readJSON(SETTINGS_FILE, 1) || {}
for (const key in saved) {
s[key] = saved[key];
}
// creates a function to safe a specific setting, e.g. save('color')(1)
function save(key) {
return function (value) {
s[key] = value;
storage.write(SETTINGS_FILE, s);
}
}
const menu = {
'': { 'title': 'OpenSeaChart' },
'< Back': back,
'Draw course': {
value: s.drawcourse,
format: boolFormat,
onchange: save('drawcourse'),
},
'Auto center': {
value: s.autocenter,
format: boolFormat,
onchange: save('autoconnect'),
}
}
E.showMenu(menu);
})