BangleApps/apps/mylocation/settings.js

79 lines
2.2 KiB
JavaScript
Raw Normal View History

(function(back) {
2021-11-30 18:11:08 +00:00
const SETTINGS_FILE = "mylocation.json";
2021-11-30 22:43:45 +00:00
let settings;
2021-11-30 18:11:08 +00:00
// initialize with default settings...
let s = {
'lat': 51.5072,
'lon': 0.1276,
'location': "London"
};
2021-11-30 18:11:08 +00:00
2021-11-30 22:43:45 +00:00
function loadSettings() {
settings = require('Storage').readJSON(SETTINGS_FILE, 1) || {};
for (const key in settings) {
s[key] = settings[key]
}
2021-11-30 18:11:08 +00:00
}
function saveSettings() {
settings = s;
require('Storage').write(SETTINGS_FILE, settings);
2021-11-30 18:11:08 +00:00
}
const locations = ["London" ,"Newcastle","Edinburgh", "Paris" , "New York" , "Tokyo" , "Frankfurt", "Auckland", "???"];
const lats = [ 51.5072 , 54.9783 , 55.9533 , 48.8566 , 40.7128 , 35.6762 , 50.1236 , -36.9 , 0.0 ];
const lons = [ -0.1276 , -1.6178 , -3.1883 , 2.3522 , -74.0060 , 139.6503 , 8.6553 , 174.7832 , 0.0 ];
2021-11-30 18:11:08 +00:00
function setFromGPS() {
2021-11-30 22:43:45 +00:00
Bangle.on('GPS', (gps) => {
//console.log(".");
if (gps.fix === 0) return;
//console.log("fix from GPS");
s = {'lat': gps.lat, 'lon': gps.lon, 'location': '???' };
2021-11-30 22:43:45 +00:00
Bangle.buzz(1500); // buzz on first position
Bangle.setGPSPower(0, "mylocation");
saveSettings();
2021-11-30 22:43:45 +00:00
Bangle.setUI("updown", ()=>{ load(); });
E.showPrompt(/*LANG*/"Location has been saved from the GPS fix",{
title:/*LANG*/"Location Saved",
buttons : {/*LANG*/"OK":1}
2021-11-30 22:43:45 +00:00
}).then(function(v) {
load(); // load default clock
});
});
Bangle.setGPSPower(1, "mylocation");
E.showMessage(/*LANG*/"Waiting for GPS fix. Place watch in the open. Could take 10 minutes. Long press to abort", "GPS Running");
2021-11-30 18:11:08 +00:00
Bangle.setUI("updown", undefined);
}
2021-11-30 22:43:45 +00:00
function showMainMenu() {
//console.log("showMainMenu");
2021-11-30 22:43:45 +00:00
const mainmenu = {
'': { 'title': /*LANG*/'My Location' },
'< Back': ()=>{ back(); },
/*LANG*/'City': {
2021-11-30 22:43:45 +00:00
value: 0 | locations.indexOf(s.location),
min: 0, max: locations.length - 1,
2021-11-30 22:43:45 +00:00
format: v => locations[v],
onchange: v => {
if (locations[v] !== "???") {
2021-11-30 22:43:45 +00:00
s.location = locations[v];
s.lat = lats[v];
s.lon = lons[v];
saveSettings();
2021-11-30 22:43:45 +00:00
}
}
},
/*LANG*/'Set From GPS': ()=>{ setFromGPS(); }
};
2021-11-30 22:43:45 +00:00
return E.showMenu(mainmenu);
}
2021-11-30 18:11:08 +00:00
2021-11-30 22:43:45 +00:00
loadSettings();
showMainMenu();
})