forked from FOSS/BangleApps
Add settings
parent
0c7a5f3d05
commit
e256a81880
|
@ -6,17 +6,14 @@ 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");
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
})
|
Loading…
Reference in New Issue