mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-03 19:27:24 +00:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8fbfcb3712 |
No files matched your search
@@ -64,4 +64,3 @@ fastlane/readme.md
|
|||||||
/app/release/output-metadata.json
|
/app/release/output-metadata.json
|
||||||
/app/release/
|
/app/release/
|
||||||
/.kotlin/sessions/
|
/.kotlin/sessions/
|
||||||
.hermes/
|
|
||||||
@@ -87,7 +87,7 @@
|
|||||||
<string name="prefs_updated_title">更新:%s</string>
|
<string name="prefs_updated_title">更新:%s</string>
|
||||||
<string name="prefs_updated_time">yyyy MMM d - HH:mm:ss</string>
|
<string name="prefs_updated_time">yyyy MMM d - HH:mm:ss</string>
|
||||||
|
|
||||||
<string name="prefs_loc_title">站点位置</string>
|
<string name="prefs_loc_title">站位</string>
|
||||||
<string name="prefs_loc_gps_title">GPS 定位</string>
|
<string name="prefs_loc_gps_title">GPS 定位</string>
|
||||||
<string name="prefs_loc_gps_error">检查您的位置权限</string>
|
<string name="prefs_loc_gps_error">检查您的位置权限</string>
|
||||||
<string name="prefs_loc_input_title">输入位置</string>
|
<string name="prefs_loc_input_title">输入位置</string>
|
||||||
@@ -95,11 +95,11 @@
|
|||||||
<string name="prefs_loc_qth_title">QTH 网格</string>
|
<string name="prefs_loc_qth_title">QTH 网格</string>
|
||||||
<string name="prefs_loc_qth_error">无效的 QTH 网格</string>
|
<string name="prefs_loc_qth_error">无效的 QTH 网格</string>
|
||||||
<string name="prefs_loc_success">位置更新成功</string>
|
<string name="prefs_loc_success">位置更新成功</string>
|
||||||
<string name="prefs_station_title">站点位置</string>
|
<string name="prefs_station_title">站位</string>
|
||||||
<string name="prefs_station_lat_text">站点纬度</string>
|
<string name="prefs_station_lat_text">站位纬度</string>
|
||||||
<string name="prefs_station_lon_text">站点经度</string>
|
<string name="prefs_station_lon_text">站位经度</string>
|
||||||
<string name="prefs_locator_title">QTH 定位</string>
|
<string name="prefs_locator_title">QTH 定位</string>
|
||||||
<string name="prefs_locator_text">通过 QTH 设置站点位置</string>
|
<string name="prefs_locator_text">通过 QTH 设置站位</string>
|
||||||
|
|
||||||
<string name="prefs_data_title">卫星数据更新</string>
|
<string name="prefs_data_title">卫星数据更新</string>
|
||||||
<string name="prefs_data_entries">卫星:%s</string>
|
<string name="prefs_data_entries">卫星:%s</string>
|
||||||
@@ -155,8 +155,6 @@
|
|||||||
<string name="prefs_other_switch_sweep">雷达扫描动画</string>
|
<string name="prefs_other_switch_sweep">雷达扫描动画</string>
|
||||||
<string name="prefs_other_switch_sensors">传感器控制雷达</string>
|
<string name="prefs_other_switch_sensors">传感器控制雷达</string>
|
||||||
<string name="prefs_other_switch_night_mode">红色夜间模式</string>
|
<string name="prefs_other_switch_night_mode">红色夜间模式</string>
|
||||||
<string name="prefs_other_compass_offset">雷达罗盘水平偏移量</string>
|
|
||||||
<string name="prefs_other_compass_offset_elev">雷达罗盘俯仰偏移量</string>
|
|
||||||
|
|
||||||
<string name="prefs_highlight_title">仰角高亮</string>
|
<string name="prefs_highlight_title">仰角高亮</string>
|
||||||
<string name="prefs_highlight_low">低 < %1$d°</string>
|
<string name="prefs_highlight_low">低 < %1$d°</string>
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ private fun PassesScreen(
|
|||||||
TopBar(
|
TopBar(
|
||||||
isVerticalLayout = isVerticalLayout,
|
isVerticalLayout = isVerticalLayout,
|
||||||
startAction = {
|
startAction = {
|
||||||
IconCard(action = { onAction(PassesAction.TogglePassesDialog) }, resId = R.drawable.ic_filter)
|
IconCard(action = { onAction(PassesAction.ToggleRadiosDialog) }, resId = R.drawable.ic_radios)
|
||||||
},
|
},
|
||||||
topInfo = {
|
topInfo = {
|
||||||
TimerRow(timeString = uiState.nextTime, isTimeAos = uiState.isNextTimeAos)
|
TimerRow(timeString = uiState.nextTime, isTimeAos = uiState.isNextTimeAos)
|
||||||
@@ -165,7 +165,7 @@ private fun PassesScreen(
|
|||||||
NextPassRow(pass = uiState.nextPass, isUtc = uiState.isUtc)
|
NextPassRow(pass = uiState.nextPass, isUtc = uiState.isUtc)
|
||||||
},
|
},
|
||||||
endAction = {
|
endAction = {
|
||||||
IconCard(action = { onAction(PassesAction.ToggleRadiosDialog) }, resId = R.drawable.ic_radios)
|
IconCard(action = { onAction(PassesAction.TogglePassesDialog) }, resId = R.drawable.ic_filter)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-3
@@ -106,17 +106,18 @@ class PassesViewModel(
|
|||||||
.collectLatest { (allPasses, isUtc, showDeepSpace) ->
|
.collectLatest { (allPasses, isUtc, showDeepSpace) ->
|
||||||
val filtered = if (showDeepSpace) allPasses
|
val filtered = if (showDeepSpace) allPasses
|
||||||
else allPasses.filter { !it.isDeepSpace }
|
else allPasses.filter { !it.isDeepSpace }
|
||||||
// Expensive: recompute once per pass-list/UTC change, not every second
|
// Expensive: recompute sun times once per items/UTC change, not every second
|
||||||
val sunTimes = computeSunTimes(filtered, isUtc)
|
val sunTimes = computeSunTimes(filtered, isUtc)
|
||||||
val grouped = groupPasses(filtered, isUtc)
|
_uiState.update { it.copy(sunTimes = sunTimes) }
|
||||||
_uiState.update { it.copy(sunTimes = sunTimes, groupedPasses = grouped) }
|
|
||||||
while (isActive) {
|
while (isActive) {
|
||||||
val timeNow = System.currentTimeMillis()
|
val timeNow = System.currentTimeMillis()
|
||||||
val processed = computePassProgress(filtered, timeNow)
|
val processed = computePassProgress(filtered, timeNow)
|
||||||
|
val grouped = groupPasses(processed, isUtc)
|
||||||
val (nextPass, nextTime, isAos) = resolveNextPass(processed, timeNow)
|
val (nextPass, nextTime, isAos) = resolveNextPass(processed, timeNow)
|
||||||
_uiState.update {
|
_uiState.update {
|
||||||
it.copy(
|
it.copy(
|
||||||
itemsList = processed,
|
itemsList = processed,
|
||||||
|
groupedPasses = grouped,
|
||||||
nextPass = nextPass,
|
nextPass = nextPass,
|
||||||
nextTime = nextTime,
|
nextTime = nextTime,
|
||||||
isNextTimeAos = isAos
|
isNextTimeAos = isAos
|
||||||
|
|||||||
@@ -65,8 +65,8 @@ class RadarViewModel(
|
|||||||
private val showToast: IShowToast
|
private val showToast: IShowToast
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
|
|
||||||
private var stationPos = settingsRepo.stationPosition.value
|
private val stationPos = settingsRepo.stationPosition.value
|
||||||
private var magDeclination = sensorsRepo.getMagDeclination(stationPos)
|
private val magDeclination = sensorsRepo.getMagDeclination(stationPos)
|
||||||
private var compassOffset = settingsRepo.otherSettings.value.radarCompassOffset
|
private var compassOffset = settingsRepo.otherSettings.value.radarCompassOffset
|
||||||
private var compassOffsetElev = settingsRepo.otherSettings.value.radarCompassOffsetElev
|
private var compassOffsetElev = settingsRepo.otherSettings.value.radarCompassOffsetElev
|
||||||
private var transponders: List<SatRadio> = emptyList()
|
private var transponders: List<SatRadio> = emptyList()
|
||||||
@@ -92,7 +92,6 @@ class RadarViewModel(
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
collectSettingsChanges() // also handles initial sensor subscription
|
collectSettingsChanges() // also handles initial sensor subscription
|
||||||
collectStationPositionChanges()
|
|
||||||
collectPassAndStartTickLoop()
|
collectPassAndStartTickLoop()
|
||||||
collectRadioTrackingState()
|
collectRadioTrackingState()
|
||||||
}
|
}
|
||||||
@@ -139,23 +138,6 @@ class RadarViewModel(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun collectStationPositionChanges() {
|
|
||||||
viewModelScope.launch {
|
|
||||||
settingsRepo.stationPosition.collect { newPos ->
|
|
||||||
if (stationPos != newPos) {
|
|
||||||
stationPos = newPos
|
|
||||||
magDeclination = sensorsRepo.getMagDeclination(stationPos)
|
|
||||||
lastCelestialUpdateMs = 0L // force celestial recompute on next tick
|
|
||||||
val pass = _uiState.value.currentPass ?: return@collect
|
|
||||||
if (!pass.isDeepSpace) {
|
|
||||||
val track = satelliteRepo.getTrack(pass.orbitalObject, stationPos, pass.aosTime, pass.losTime)
|
|
||||||
_uiState.update { it.copy(satTrack = track) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// --- Pass loading split into focused functions ---
|
// --- Pass loading split into focused functions ---
|
||||||
|
|
||||||
private fun collectPassAndStartTickLoop() {
|
private fun collectPassAndStartTickLoop() {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
[versions]
|
[versions]
|
||||||
#noinspection UnusedVersionCatalogEntry
|
#noinspection UnusedVersionCatalogEntry
|
||||||
appVersionCode = "444"
|
appVersionCode = "445"
|
||||||
#noinspection UnusedVersionCatalogEntry
|
#noinspection UnusedVersionCatalogEntry
|
||||||
appVersionName = "4.4.4"
|
appVersionName = "4.4.5"
|
||||||
#noinspection UnusedVersionCatalogEntry
|
#noinspection UnusedVersionCatalogEntry
|
||||||
compileSdk = "37"
|
compileSdk = "37"
|
||||||
#noinspection UnusedVersionCatalogEntry
|
#noinspection UnusedVersionCatalogEntry
|
||||||
|
|||||||
Reference in new issue
Block a user