diff --git a/apps.json b/apps.json index 8c6d5c9c5..0f2d7b738 100644 --- a/apps.json +++ b/apps.json @@ -4571,6 +4571,7 @@ "type": "app", "supports": ["BANGLEJS", "BANGLEJS2"], "storage": [ + {"name":"mylocation.apps.js","url":"mylocation.app.js"}, {"name":"mylocation.settings.js","url":"mylocation.settings.js"}, {"name":"mylocation.img","url":"mylocation.icon.js","evaluate": true } ] diff --git a/apps/mylocation/mylocation.app.js b/apps/mylocation/mylocation.app.js new file mode 100644 index 000000000..49e74a025 --- /dev/null +++ b/apps/mylocation/mylocation.app.js @@ -0,0 +1,74 @@ +Bangle.loadWidgets(); +Bangle.drawWidgets(); + +const SETTINGS_FILE = "mylocation.json"; + +// initialize with default settings... +let s = { + 'lat': 51.5072, + 'lon': 0.1276, + '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 save() { + settings = s + storage.write(SETTINGS_FILE, settings) +} + +const locations = ["London", "Newcastle", "Edinburgh", "Paris", "New York", "Tokyo","???"]; +const lats = [51.5072 ,54.9783 ,55.9533 ,48.8566 ,40.7128 ,35.6762, 0.0]; +const lons = [-0.1276 ,-1.6178 ,-3.1883 ,2.3522 , -74.0060 ,139.6503, 0.0]; + +function setFromGPS() { + console.log("set from GPS"); + 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(); + } + }, + }, + 'Set From GPS': ()=>setFromGPS() +}); diff --git a/apps/mylocation/mylocation.settings.js b/apps/mylocation/mylocation.settings.js index 6936e9e69..4767c4732 100644 --- a/apps/mylocation/mylocation.settings.js +++ b/apps/mylocation/mylocation.settings.js @@ -1,73 +1,4 @@ (function(back) { - const SETTINGS_FILE = "mylocation.json"; - - // initialize with default settings... - let s = { - 'lat': 51.5072, - 'lon': 0.1276, - '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 save() { - settings = s - storage.write(SETTINGS_FILE, settings) - } - - const locations = ["London", "Newcastle", "Edinburgh", "Paris", "New York", "Tokyo","???"]; - const lats = [51.5072 ,54.9783 ,55.9533 ,48.8566 ,40.7128 ,35.6762, 0.0]; - const lons = [-0.1276 ,-1.6178 ,-3.1883 ,2.3522 , -74.0060 ,139.6503, 0.0]; - - 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(); - } - }, - }, - 'Set From GPS': ()=>setFromGPS() - }) - - function setFromGPS() { - console.log("set from GPS"); - 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 - }); - }); - -}) + // just go right to our app + load("mylocation.app.js"); +})();