feat(ft8): 4.5.5 integrate FT8CN 0.93 (full port, original UI)

Full FT8 mode integration (user chose scope C: complete port, keep
original visual style):

- feature/ft8 module: 213 Java classes from FT8CN 0.93 source
  (com.bg7yoz.ft8cn namespace preserved so code needs zero changes),
  DataBinding enabled, BuildConfig fields (APPLICATION_ID/VERSION_NAME/
  apkBuildTime) restored for AGP9
- libft8cn.so from the user's FT8CN_0.93 APK (armeabi-v7a, 1.53MB;
  differs from repo copy, APK version used)
- 237 res files + 58 assets + 4 local libs (MPAndroidChart spectrum,
  commons-net, nanohttpd, osmdroid map) copied verbatim
- Proguard keep rules for JNI classes (RegisterNatives)
- Entry: More menu "FT8" (default sub menu, after AMSAT) launches
  MainActivity via Intent (external activity, LAUNCHER filter removed
  to avoid double launcher)
- Manifest merged via module (RECORD_AUDIO/BT/location perms)
- Version 4.5.5/455 + What's new 5 languages (REPLACED per rule)
Verified: :feature:ft8:compileDebugJavaWithJavac + :app:compileDebugKotlin
BUILD SUCCESSFUL; check_strings 9 files OK.
This commit is contained in:
mckero committed 2026-08-05 04:49:35 +00:00
1 parent c9d87be289
commit 8a2b0a9aa3
526 files changed
+177814 -45

No files matched your search

@@ -149,7 +149,8 @@ fun MainScreen(navigateToRadar: () -> Unit = {}) {
val trackingState by container.radioTrackingService.state.collectAsStateWithLifecycle()
val otherSettings by container.settingsRepo.otherSettings.collectAsStateWithLifecycle()
// UI 设置: 按 screenOrder 排序(空 = 默认顺序), 再按 hiddenScreens 过滤(设置页固定保留)
val allNavItems = listOf(Screen.Satellites, Screen.Passes, Screen.Radar, Screen.Mutual, Screen.Roaming, Screen.CwDecode, Screen.WavelogLog, Screen.AmSat, Screen.Map, Screen.Settings)
val ft8Context = androidx.compose.ui.platform.LocalContext.current
val allNavItems = listOf(Screen.Satellites, Screen.Passes, Screen.Radar, Screen.Mutual, Screen.Roaming, Screen.CwDecode, Screen.WavelogLog, Screen.AmSat, Screen.Ft8, Screen.Map, Screen.Settings)
.sortedBy { screen ->
// 未知(新页面如 CwDecode 不在旧持久化顺序里): 用默认顺序位置(漫游↔地图), 再兜底最后
val idx = otherSettings.screenOrder.indexOf(screen.screenId)
@@ -207,6 +208,13 @@ fun MainScreen(navigateToRadar: () -> Unit = {}) {
onClick = {
if (isSelected) return@item
moreExpanded = false
if (screen is Screen.Ft8) {
ft8Context.startActivity(
android.content.Intent()
.setClassName(ft8Context.packageName, "com.bg7yoz.ft8cn.MainActivity")
)
return@item
}
while (backStack.size > 1) backStack.removeAt(backStack.size - 1)
if (screen !is Screen.Passes) backStack.add(screen)
}
@@ -361,6 +369,13 @@ fun MainScreen(navigateToRadar: () -> Unit = {}) {
onDismiss = { moreExpanded = false },
onSelect = { screen ->
moreExpanded = false
if (screen is Screen.Ft8) {
ft8Context.startActivity(
android.content.Intent()
.setClassName(ft8Context.packageName, "com.bg7yoz.ft8cn.MainActivity")
)
return@MoreMenuPopup
}
while (backStack.size > 1) backStack.removeAt(backStack.size - 1)
if (screen !is Screen.Passes) backStack.add(screen)
}