Mylocation: make into an app

pull/975/head
hughbarney 2021-11-30 22:43:45 +00:00
parent 4669099645
commit e3745f94fc
2 changed files with 55 additions and 45 deletions

View File

@ -4568,13 +4568,15 @@
"description": "My Locations adds a menu in the Settings app to set your preferred City or it can be set from the GPS. mylocation.json can be used by other apps that need your main location lat and lon. See README",
"readme": "README.md",
"tags": "tool,utility",
"type": "app",
"supports": ["BANGLEJS", "BANGLEJS2"],
"storage": [
{"name":"mylocation.apps.js","url":"mylocation.app.js"},
{"name":"mylocation.app.js","url":"mylocation.app.js"},
{"name":"mylocation.settings.js","url":"mylocation.settings.js"},
{"name":"mylocation.img","url":"mylocation.icon.js","evaluate": true }
]
"data": [
{"name":"mylocation.json"}
]
},
{
"id": "pebble",

View File

@ -1,7 +1,9 @@
Bangle.loadWidgets();
Bangle.drawWidgets();
console.log("myloc start");
const SETTINGS_FILE = "mylocation.json";
let settings;
// initialize with default settings...
let s = {
@ -10,18 +12,14 @@ let s = {
'location': "London"
}
// ...and overwrite them with any saved values
// This way saved values are preserved if a new version adds more settings
const storage = require('Storage')
let settings = storage.readJSON(SETTINGS_FILE, 1) || {}
const saved = settings || {}
for (const key in saved) {
s[key] = saved[key]
function loadSettings() {
console.log("loadSettings()");
settings = require('Storage').readJSON(SETTINGS_FILE, 1) || s;
}
function save() {
settings = s
storage.write(SETTINGS_FILE, settings)
require('Storage').write(SETTINGS_FILE, settings)
}
const locations = ["London", "Newcastle", "Edinburgh", "Paris", "New York", "Tokyo","???"];
@ -30,45 +28,55 @@ const lons = [-0.1276 ,-1.6178 ,-3.1883 ,2.3522 , -74.0060 ,139.6503, 0.0];
function setFromGPS() {
console.log("set from GPS");
Bangle.on('GPS', (gps) => {
//console.log(".");
if (gps.fix === 0) return;
//console.log("fix from GPS");
s = {'lat': gps.lat, 'lon': gps.lon, 'location': '???' }
Bangle.buzz(1500); // buzz on first position
Bangle.setGPSPower(0);
save();
Bangle.setUI("updown", ()=>{ load() });
E.showPrompt("Location has been saved from the GPS fix",{
title:"Location Saved",
buttons : {"OK":1}
}).then(function(v) {
load(); // load default clock
});
});
Bangle.setGPSPower(1);
E.showMessage("Waiting for GPS fix. Place watch in the open. Could take 10 minutes. Long press to abort", "GPS Running");
Bangle.setUI("updown", undefined);
}
Bangle.on('GPS', (gps) => {
//console.log(".");
if (gps.fix === 0) return;
//console.log("fix from GPS");
s = {'lat': gps.lat, 'lon': gps.lon, 'location': '???' }
Bangle.buzz(1500); // buzz on first position
Bangle.setGPSPower(0);
save();
Bangle.setUI("updown", ()=>{ load() });
E.showPrompt("Location has been saved from the GPS fix",{
title:"Location Saved",
buttons : {"OK":1}
}).then(function(v) {
load(); // load default clock
});
});
E.showMenu({
'': { 'title': 'My Location' },
'< Back': back,
'City': {
value: 0 | locations.indexOf(s.location),
min: 0, max: 6,
format: v => locations[v],
onchange: v => {
if (v != 6) {
s.location = locations[v];
s.lat = lats[v];
s.lon = lons[v];
save();
function showMainMenu() {
console.log("showMainMenu");
const mainmenu = {
'': { 'title': 'My Location' },
'<Back': ()=>{ load(); },
'City': {
value: 0 | locations.indexOf(s.location),
min: 0, max: 6,
format: v => locations[v],
onchange: v => {
if (v != 6) {
s.location = locations[v];
s.lat = lats[v];
s.lon = lons[v];
save();
}
}
},
},
'Set From GPS': ()=>setFromGPS()
});
'Set From GPS': ()=>{ setFromGPS(); }
}
console.log("showMainMenu 2");
return E.showMenu(mainmenu);
}
loadSettings();
showMainMenu();
console.log("myloc end");