mirror of https://github.com/espruino/BangleApps
Mylocation: make into an app
parent
4669099645
commit
e3745f94fc
|
@ -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",
|
||||
|
|
|
@ -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");
|
||||
|
|
Loading…
Reference in New Issue