gpstrek - Make menu more consistent

master
Martin Boonk 2023-06-11 14:56:44 +02:00
parent a43840f5ba
commit ccafcbcff7
1 changed files with 25 additions and 9 deletions

View File

@ -1062,7 +1062,17 @@ let isLast = function(route, index){
}; };
let removeMenu = function(){ let removeMenu = function(){
let s = WIDGETS.gpstrek.getState();
E.showMenu(); E.showMenu();
switch(searchNeeded){
case 1:
setClosestWaypoint(s.route, getWaypointIndex(s.route), showProgress);
break;
case 2:
setClosestWaypoint(s.route, 0, showProgress)
break;
}
searchNeeded = 0;
onSwipe(-1,0); onSwipe(-1,0);
}; };
@ -1082,9 +1092,8 @@ let handleLoading = function(c){
E.showMenu(); E.showMenu();
let s = WIDGETS.gpstrek.getState(); let s = WIDGETS.gpstrek.getState();
s.route = loadRouteData(c, showProgress); s.route = loadRouteData(c, showProgress);
if(SETTINGS.autosearch) setClosestWaypoint(s.route, 0, showProgress); if(SETTINGS.autosearch && searchNeeded < 2) searchNeeded = 2;
s.waypoint = null; s.waypoint = null;
removeMenu();
}; };
let showRouteSelector = function(){ let showRouteSelector = function(){
@ -1095,12 +1104,15 @@ let showRouteSelector = function(){
}; };
STORAGE.list(/\.trf$/).sort().forEach((file)=>{ STORAGE.list(/\.trf$/).sort().forEach((file)=>{
menu[file] = ()=>{handleLoading(file);}; menu[file] = ()=>{handleLoading(file); showRouteMenu()};
}); });
E.showMenu(menu); E.showMenu(menu);
}; };
// 1 for complete search, 2 for starting at current waypoint
let searchNeeded = 0;
let showRouteMenu = function(){ let showRouteMenu = function(){
var menu = { var menu = {
"" : { "" : {
@ -1118,21 +1130,25 @@ let showRouteMenu = function(){
onchange: v=>{ onchange: v=>{
if (s.route.mirror != v){ if (s.route.mirror != v){
s.route.mirror = v; s.route.mirror = v;
if(SETTINGS.autosearch)
if (searchNeeded < 2) searchNeeded = 2;
else
setWaypointIndex(s.route, 0); setWaypointIndex(s.route, 0);
removeMenu();
} }
} }
}; };
menu['Select closest waypoint'] = function () { menu['Select closest waypoint'] = function () {
if (s.currentPos && s.currentPos.lat){ if (s.currentPos && s.currentPos.lat){
setClosestWaypoint(s.route, 0, showProgress); removeMenu(); if (searchNeeded < 2) searchNeeded = 2;
removeMenu();
} else { } else {
E.showAlert("No position").then(()=>{E.showMenu(menu);}); E.showAlert("No position").then(()=>{E.showMenu(menu);});
} }
}; };
menu['Select closest waypoint (not visited)'] = function () { menu['Select closest waypoint (not visited)'] = function () {
if (s.currentPos && s.currentPos.lat){ if (s.currentPos && s.currentPos.lat){
setClosestWaypoint(s.route, getWaypointIndex(s.route), showProgress); removeMenu(); if (searchNeeded < 1) searchNeeded = 1;
removeMenu();
} else { } else {
E.showAlert("No position").then(()=>{E.showMenu(menu);}); E.showAlert("No position").then(()=>{E.showMenu(menu);});
} }
@ -1221,8 +1237,8 @@ let showBackgroundMenu = function(){
"title" : "Background", "title" : "Background",
back : showMenu, back : showMenu,
}, },
"Start" : ()=>{ E.showPrompt("Start?").then((v)=>{ if (v) {WIDGETS.gpstrek.start(true); removeMenu();} else {showMenu();}}).catch(()=>{showMenu();});}, "Start" : ()=>{ E.showPrompt("Start?").then((v)=>{ if (v) {WIDGETS.gpstrek.start(true); showMenu();} else {showMenu();}}).catch(()=>{showMenu();});},
"Stop" : ()=>{ E.showPrompt("Stop?").then((v)=>{ if (v) {WIDGETS.gpstrek.stop(true); removeMenu();} else {showMenu();}}).catch(()=>{showMenu();});}, "Stop" : ()=>{ E.showPrompt("Stop?").then((v)=>{ if (v) {WIDGETS.gpstrek.stop(true); showMenu();} else {showMenu();}}).catch(()=>{showMenu();});},
}; };
E.showMenu(menu); E.showMenu(menu);
}; };