fix(radar,settings): realtime doppler freq in Log tab, trash overlay fix, sub-menu swap (4.5.2 overwrite 5)

User-test fixes:
1. Log tab frequency now refreshes every second with the transponder
   panel (multi-Doppler): selectedRadio derived by uuid from the
   per-second transceivers list instead of a remembered stale
   reference; display and upload use radio.uplinkLow/downlinkLow
   (the same doppler-corrected values the transceiver panel shows).
2. SwipeDeleteRow: content layer now has an opaque background so the
   trash icon only appears while swiping (was bleeding through into
   the "Sent" column).
3. Settings page order: More-menu items can now move back into the
   main menu - button always visible; when the main menu is full (5),
   the last non-Settings item is automatically swapped into More.

Verified: check_strings OK (8 files); :app:compileDebugKotlin
BUILD SUCCESSFUL.
This commit is contained in:
mckero committed 2026-08-04 13:39:22 +00:00
1 parent 0bcf73e1f9
commit c09e87fa4e
2 files changed
+22 -12

No files matched your search

@@ -780,12 +780,20 @@ private fun UiSettingsCard(
items = subItems,
labels = screens,
moveLabel = stringResource(id = R.string.prefs_ui_move_back),
moveEnabled = { mainItems.size < 5 },
// 按钮常显; 主菜单满 5 时自动让位(最后一个非"设置"项移入更多, 交换)
moveEnabled = { true },
onMove = { name ->
onUpdateMenu(
(screenOrder.ifEmpty { defaultScreenOrder } + name).distinct(),
subItems.filter { it != name }
)
val mainWithoutSettings = mainItems.filter { it != "Settings" }
val needSwap = mainWithoutSettings.size >= 5
val evicted = if (needSwap) mainWithoutSettings.last() else null
val newMain = if (needSwap) {
(mainWithoutSettings.dropLast(1) + name).distinct()
} else {
(mainWithoutSettings + name).distinct()
}
val newSub = (subItems.filter { it != name } +
if (evicted != null) listOf(evicted) else emptyList()).distinct()
onUpdateMenu(newMain, newSub)
},
onReorder = { sub -> onUpdateMenu(screenOrder, sub) }
)