feat(NearbyScreen): waypoint/navigate from list, TIME filter, addWaypoint helper

NearbyScreen:
- Hold Enter on a list row now shows Navigate and Save waypoint directly,
  without entering the detail view first
- TIME added as the last filter slot (LEFT/RIGHT cycles Fav→ALL→…→Snsr→TIME);
  time-sort shows age in right column and sorts by last-heard descending
- Save waypoint also available from detail view Options menu

UITask:
- Extract addWaypoint() helper (two overloads: with/without explicit timestamp)
  consolidating the full()+add()+saveWaypoints()+alert pattern; TrailScreen
  and QuickMsgScreen updated to use it

Fixes:
- SoundNotifier.h: correct NodePrefs.h include path (../NodePrefs.h)
- kbAddSensorPlaceholders: dereference _kb pointer in SettingsScreen,
  QuickMsgScreen and BotScreen (signature changed to KeyboardWidget&)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jakub
2026-06-09 15:09:57 +02:00
co-authored by Claude Sonnet 4.6
parent 5c86b85ec3
commit e6f8fb99c7
8 changed files with 91 additions and 43 deletions
+5 -1
View File
@@ -151,7 +151,11 @@ public:
void gotoCompassScreen();
TrailStore& trail() { return _trail; }
WaypointStore& waypoints() { return _waypoints; }
void saveWaypoints(); // persist the table to /waypoints
void saveWaypoints();
// Add a waypoint, persist, and show the standard "Waypoint saved" / "Waypoints
// full" alert. Returns true on success. The ts-less overload uses current RTC time.
bool addWaypoint(int32_t lat, int32_t lon, uint32_t ts, const char* label);
bool addWaypoint(int32_t lat, int32_t lon, const char* label);
// Current course over ground in degrees (0..359), or false if not enough
// recent movement to derive a stable heading. Independent of trail logging.
bool currentCourse(int& deg_out) const;