mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-11-03 03:11:57 +00:00
refactor: one copy of shared logic and widgets; GPS is asked for, not switched on silently
Duplicates found between the L1 and L2 frontends, and inside the L2 one:
- geo::fmtLocShare / fmtLatLon / turnDeg / isAhead (GeoUtils.h): the [LOC]
text was built in five places, the turn angle and its "ahead" threshold in
both navigations, coordinates by hand in nine. Tested.
- LiveShareEngine::setEnabled: live share was switched in three places.
- L1 waypoint share uses WaypointModel::shareText; Trail's "Share my pos"
goes through UITask::quickShareMyLocation, so it now sends to a running
live-share session as the home Map page does.
- L2 Widgets.h: switchCreate (one switch size, was four), switchRow with a
state and callback (16 hand-wired copies), switchRowOpens (Bluetooth, WiFi,
GPS), primaryButton (one height for Save / Measure / New area / Update).
GPS: with it off, starting the trail, live share or track back, sharing or
marking a position, or centring the map asks first ("GPS is off") on both
L1 and L2; Cancel leaves it undone. A share or a mark waits for a fresh fix
(a switched-off module may still report its last one), which also fixes the
L1 "Share my pos" sending a stale position. SOS still turns the GPS on itself.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -371,15 +371,18 @@ void UITask::quickPanelTile(int t, bool hold) {
|
||||
#endif
|
||||
break;
|
||||
case T_TRAIL:
|
||||
_core->trail.setActive(!_core->trail.isActive());
|
||||
if (_core->trail.isActive()) ensureGps(); // turns GPS on, or says it's waiting
|
||||
break;
|
||||
case T_SHARE:
|
||||
case T_SHARE: {
|
||||
if (!_prefs) break;
|
||||
_prefs->loc_share_enabled = !_prefs->loc_share_enabled;
|
||||
if (_prefs->loc_share_enabled) { _core->live_share.restartSession(); ensureGps(); }
|
||||
prefsSave();
|
||||
const bool on = t == T_TRAIL ? _core->trail.isActive() : _prefs->loc_share_enabled;
|
||||
if (!on && _core->gpsAvailable() && !_core->gpsEnabled()) { // "GPS is off", over the screen
|
||||
quickPanelClose(false);
|
||||
gpsAsked(t == T_TRAIL ? GA_TRAIL : GA_SHARE);
|
||||
return;
|
||||
}
|
||||
if (t == T_TRAIL) _core->trail.setActive(!on);
|
||||
else { _core->live_share.setEnabled(!on); prefsSave(); }
|
||||
break;
|
||||
}
|
||||
}
|
||||
refreshStatusBar();
|
||||
quickPanelRefresh();
|
||||
|
||||
Reference in New Issue
Block a user