mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-11-03 03:11:57 +00:00
fix: review pass - Discover's late replies dropped and its way back usable, the Gallery's newest first and faster, the network clock's toast
- Discover: a reply after its try timed out, was stopped or was overtaken went on to the normal handling and became the contact's route (and sent a path back); the last tags sent are kept and a late reply is dropped. Leaving Route on the L2 stops a discovery as it stops a trace. - Discover: a route whose reply came back another way offers that way too (L2 There / Back, L1 a Back row), turned round into a route there, so a trace checks it; the Discover button no longer sits on its group. - Screenshots: numbered one past the highest (one pass over the folder, not a stat per number), so one taken after a delete is still the newest. - Gallery: the newest 300 kept whatever order the folder lists them in; BMP rows read in the file's order and several at a time; the thumbnail buffer sized to the page; the folder read once per visit; a failed open frees or restores the picture. - NTP: the slot the router's server goes in emptied before joining, so a cached address isn't taken for it; "Clock set from the network" judged against the clock a tick before (SNTP has set the system time already). - Sim: sim_scroll up stops at the top. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -146,6 +146,7 @@ void UITask::buildRoute() {
|
||||
_route_note = noteLabel(scroll, "", THEME_FONT_SMALL, theme::TEXT_MUTED);
|
||||
_route_disc = flexBox(scroll, LV_FLEX_FLOW_COLUMN);
|
||||
lv_obj_set_width(_route_disc, LV_PCT(100));
|
||||
lv_obj_set_style_pad_row(_route_disc, theme::GAP, 0); // Discover's button off the group, as the list's rows
|
||||
_route_disc_shown = 0xFFFFFFFF;
|
||||
|
||||
lv_obj_t* bar = buttonBar(body);
|
||||
@@ -321,18 +322,29 @@ void UITask::routeDiscRebuild() {
|
||||
lv_obj_t* l = groupLine(g, false);
|
||||
noteLabel(l, t, THEME_FONT_SMALL, R.discoverFailed() ? theme::FAIL : theme::TEXT_MUTED);
|
||||
}
|
||||
// Code i * 2 + 1: the way back, turned round into a route there to trace.
|
||||
for (int i = 0; i < R.foundCount(); i++) {
|
||||
const PathEditor::Found& f = R.found(i);
|
||||
char route[96], back[64], sub[96];
|
||||
char route[96], back[64], sub[128];
|
||||
R.foundText(i, false, route, sizeof(route));
|
||||
R.foundText(i, true, back, sizeof(back));
|
||||
const int hops = PathEditor::hopsOf(f.out_len);
|
||||
snprintf(sub, sizeof(sub), "%d hop%s%s, found %u time%s. Back: %s", hops, hops == 1 ? "" : "s",
|
||||
hops > PathEditor::MAX_HOPS ? " (too long to use)" : "", (unsigned)f.times, f.times == 1 ? "" : "s", back);
|
||||
lv_obj_t* r = groupLine(g, true);
|
||||
const bool same = R.foundBackSame(i);
|
||||
int o = snprintf(sub, sizeof(sub), "%d hop%s%s, found %u time%s. ", hops, hops == 1 ? "" : "s",
|
||||
hops > PathEditor::MAX_HOPS ? " (too long to use)" : "", (unsigned)f.times, f.times == 1 ? "" : "s");
|
||||
if (same) snprintf(sub + o, sizeof(sub) - o, "Back the same way");
|
||||
else snprintf(sub + o, sizeof(sub) - o, "Back: %s", back);
|
||||
lv_obj_t* r = groupLine(g, same);
|
||||
groupText(r, route, sub);
|
||||
label(r, "Use", THEME_FONT_SMALL, theme::ACCENT);
|
||||
lv_obj_add_event_cb(r, onRouteFound, LV_EVENT_CLICKED, (void*)(uintptr_t)i);
|
||||
if (same) {
|
||||
label(r, "Use", THEME_FONT_SMALL, theme::ACCENT);
|
||||
lv_obj_add_event_cb(r, onRouteFound, LV_EVENT_CLICKED, (void*)(uintptr_t)(i * 2));
|
||||
} else {
|
||||
lv_obj_t* col = flexBox(r, LV_FLEX_FLOW_COLUMN);
|
||||
lv_obj_set_style_pad_row(col, 4, 0);
|
||||
lv_obj_set_width(pillButton(col, "There", theme::SURFACE_2, onRouteFound, i * 2), 64);
|
||||
lv_obj_set_width(pillButton(col, "Back", theme::SURFACE_2, onRouteFound, i * 2 + 1), 64);
|
||||
}
|
||||
}
|
||||
lv_obj_t* bar = buttonBar(_route_disc);
|
||||
barButton(bar, R.discovering() ? LV_SYMBOL_CLOSE " Stop" : LV_SYMBOL_REFRESH " Discover", onRouteDiscover, 0, !R.discovering());
|
||||
@@ -350,11 +362,14 @@ void UITask::routeDiscTries(int sel) {
|
||||
if (sel >= 0 && sel < 3) routeview::s_tries = sel;
|
||||
}
|
||||
|
||||
void UITask::routeUseFound(int i) {
|
||||
void UITask::routeUseFound(int code) {
|
||||
PathEditor& R = _core->route;
|
||||
if (PathEditor::hopsOf(R.found(i).out_len) > PathEditor::MAX_HOPS) { showToast("Too long: up to 7 repeaters"); return; }
|
||||
if (!R.useFound(i)) return;
|
||||
showToast("In the list: Trace to check it, Save to use it");
|
||||
const int i = code >> 1;
|
||||
const bool back = code & 1;
|
||||
if (i >= R.foundCount()) return;
|
||||
if (PathEditor::foundHops(R.found(i), back) > PathEditor::MAX_HOPS) { showToast("Too long: up to 7 repeaters"); return; }
|
||||
if (!R.useFound(i, back)) return;
|
||||
showToast(back ? "The way back, turned round, in the list: Trace to check it" : "In the list: Trace to check it, Save to use it");
|
||||
routeRebuild();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user