From 2581ba92c08f2cdf6266de6992630fb0145f0d12 Mon Sep 17 00:00:00 2001 From: atsunatsu Date: Mon, 10 Aug 2026 15:11:02 +0800 Subject: [PATCH] feat: remember per-satellite doppler offset in calculator Store the offset (kHz) per NORAD catalog id in SharedPreferences so each satellite's last entered offset is restored when reopening the frequency calculator. --- .../feature/radar/TransceiversPage.kt | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/feature/radar/src/main/java/com/rtbishop/look4sat/feature/radar/TransceiversPage.kt b/feature/radar/src/main/java/com/rtbishop/look4sat/feature/radar/TransceiversPage.kt index f234fc1a..bb2cf76d 100644 --- a/feature/radar/src/main/java/com/rtbishop/look4sat/feature/radar/TransceiversPage.kt +++ b/feature/radar/src/main/java/com/rtbishop/look4sat/feature/radar/TransceiversPage.kt @@ -18,6 +18,7 @@ package com.rtbishop.look4sat.feature.radar import android.app.Activity +import android.content.Context import android.view.LayoutInflater import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.expandVertically @@ -559,7 +560,17 @@ private fun DopplerFrequencyCalculator( var txFrequencyHz by remember { mutableStateOf(0L) } var rxFrequencyHz by remember { mutableStateOf(0L) } var passbandPosition by remember { mutableStateOf(0.5f) } - var offsetKHz by remember { mutableStateOf("") } + // 每个卫星独立记忆 offset:以 NORAD 编号为 key,存到应用 SharedPreferences + val context = LocalContext.current + val catnum = transponder.catnum + var offsetKHz by remember(catnum) { + mutableStateOf( + catnum?.let { cn -> + context.getSharedPreferences(context.packageName + "_preferences", Context.MODE_PRIVATE) + .getString("offset_khz_$cn", "") ?: "" + } ?: "" + ) + } var stepSizeKHz by remember { mutableIntStateOf(1) } val offsetHz = offsetKHz.toDoubleOrNull()?.let { it * 1000 }?.toLong() ?: 0L @@ -742,7 +753,15 @@ private fun DopplerFrequencyCalculator( ) { BasicTextField( value = offsetKHz, - onValueChange = { offsetKHz = it }, + onValueChange = { newValue -> + offsetKHz = newValue + catnum?.let { cn -> + context.getSharedPreferences( + context.packageName + "_preferences", + Context.MODE_PRIVATE + ).edit().putString("offset_khz_$cn", newValue).apply() + } + }, singleLine = true, textStyle = TextStyle( fontSize = 16.sp,