v4.2.1 - Turkish translation, DeepSpace filter, various tweaks

This commit is contained in:
Arty Bishop committed 2026-04-19 13:14:31 +01:00
1 parent 8265b73d75
commit 99158e74fa
7 files changed
+19 -45

No files matched your search

@@ -49,11 +49,10 @@
\n\nPlease update the database at least weekly to get accurate predictions.</string> \n\nPlease update the database at least weekly to get accurate predictions.</string>
<string name="pass_whatsnew_title" translatable="false">What\'s new in Look4Sat</string> <string name="pass_whatsnew_title" translatable="false">What\'s new in Look4Sat</string>
<string name="pass_whatsnew_message" translatable="false"> <string name="pass_whatsnew_message" translatable="false">
* Switched to short-form commands in NetworkReporter, by theojalba * Added Turkish translation, by Emre Can Akdaş (TA3ECR)
\n* Added CAT radio control for full-duplex SAT operation, by jcmerg \n* Added DeepSpace passes filter option to the dialog
\n* Added normalized time for passes AOS/LOS, fixed refresh state bug \n* Fixed the radar blip disappearing while eclipsed
\n* Added multiple performance tweaks, improved passes calculation \n* Fixed (hopefully) the refresh indicator being stuck
\n* Fixed UTC pass time problem mentioned in issue #201
</string> </string>
<!-- Radar screen --> <!-- Radar screen -->
@@ -1,6 +1,4 @@
* Switched to short-form commands in NetworkReporter (#206) by theojalba * Added Turkish translation, by Emre Can Akdaş (TA3ECR)
* Added CAT radio control for full-duplex SAT operation (#207) by jcmerg * Added DeepSpace passes filter option to the dialog
* Added normalized time for passes AOS/LOS, fixed refresh state bug * Fixed the radar blip disappearing while eclipsed
* Added multiple performance tweaks, improved passes calculation * Fixed (hopefully) the refresh indicator being stuck
* Simplified data output code, aligned with HamLib defaults
* Fixed UTC pass time problem mentioned in issue #201
@@ -1,6 +1,4 @@
* Switched to short-form commands in NetworkReporter (#206) by theojalba * Added Turkish translation, by Emre Can Akdaş (TA3ECR)
* Added CAT radio control for full-duplex SAT operation (#207) by jcmerg * Added DeepSpace passes filter option to the dialog
* Added normalized time for passes AOS/LOS, fixed refresh state bug * Fixed the radar blip disappearing while eclipsed
* Added multiple performance tweaks, improved passes calculation * Fixed (hopefully) the refresh indicator being stuck
* Simplified data output code, aligned with HamLib defaults
* Fixed UTC pass time problem mentioned in issue #201
@@ -160,7 +160,7 @@ class PassesViewModel(
_uiState.update { _uiState.update {
it.copy(hours = hoursAhead, elevation = minElevation, showDeepSpace = showDeepSpace, modes = modes) it.copy(hours = hoursAhead, elevation = minElevation, showDeepSpace = showDeepSpace, modes = modes)
} }
if (showDeepSpace) satelliteRepo.calculatePasses(System.currentTimeMillis(), hoursAhead, minElevation, modes) satelliteRepo.calculatePasses(System.currentTimeMillis(), hoursAhead, minElevation, modes)
} }
private fun refreshPasses() = viewModelScope.launch { private fun refreshPasses() = viewModelScope.launch {
@@ -17,8 +17,6 @@
*/ */
package com.rtbishop.look4sat.feature.radar package com.rtbishop.look4sat.feature.radar
import androidx.compose.animation.core.LinearEasing
import androidx.compose.animation.core.RepeatMode
import androidx.compose.animation.core.animateFloat import androidx.compose.animation.core.animateFloat
import androidx.compose.animation.core.infiniteRepeatable import androidx.compose.animation.core.infiniteRepeatable
import androidx.compose.animation.core.rememberInfiniteTransition import androidx.compose.animation.core.rememberInfiniteTransition
@@ -80,21 +78,11 @@ fun RadarViewCompose(
animationSpec = infiniteRepeatable(tween(1000)), animationSpec = infiniteRepeatable(tween(1000)),
label = "animScale" label = "animScale"
) )
val eclipsedGlowAlpha by animTransition.animateFloat(
initialValue = 1.0f,
targetValue = 0.0f,
animationSpec = infiniteRepeatable(
animation = tween(durationMillis = 1000, delayMillis = 25, easing = LinearEasing),
repeatMode = RepeatMode.Reverse
),
label = "eclipsedGlowAlpha"
)
val measurer = rememberTextMeasurer() val measurer = rememberTextMeasurer()
var sweepDegrees by remember { mutableFloatStateOf(0f) } var sweepDegrees by remember { mutableFloatStateOf(0f) }
var cachedRadius by remember { mutableFloatStateOf(0f) } var cachedRadius by remember { mutableFloatStateOf(0f) }
var trackPath by remember { mutableStateOf(Path()) } var trackPath by remember { mutableStateOf(Path()) }
var trackEffect by remember { mutableStateOf(PathEffect.cornerPathEffect(0f)) } var trackEffect by remember { mutableStateOf(PathEffect.cornerPathEffect(0f)) }
val isEclipsed = item.eclipsed
Canvas(modifier = modifier.aspectRatio(1f)) { Canvas(modifier = modifier.aspectRatio(1f)) {
val radius = size.minDimension / 2f * 0.95f val radius = size.minDimension / 2f * 0.95f
@@ -110,11 +98,7 @@ fun RadarViewCompose(
translate(center.x, center.y) { translate(center.x, center.y) {
drawTrack(trackPath, trackEffect, aimColor, trackColor) drawTrack(trackPath, trackEffect, aimColor, trackColor)
if (item.elevation > 0) { if (item.elevation > 0) {
if (isEclipsed) { drawPosition(item, radius, animScale, trackColor)
drawEclipsedPosition(item, radius, eclipsedGlowAlpha, trackColor)
} else {
drawPosition(item, radius, animScale, trackColor)
}
} }
if (shouldUseCompass) drawAim(azimElev.first, azimElev.second, radius, aimColor) if (shouldUseCompass) drawAim(azimElev.first, azimElev.second, radius, aimColor)
} }
@@ -150,12 +134,7 @@ private fun DrawScope.drawTrack(path: Path, effect: PathEffect, color: Color, ef
private fun DrawScope.drawPosition(item: OrbitalPos, radius: Float, posRadius: Float, color: Color) { private fun DrawScope.drawPosition(item: OrbitalPos, radius: Float, posRadius: Float, color: Color) {
val pos = sph2Cart(item.azimuth, item.elevation, radius.toDouble()) val pos = sph2Cart(item.azimuth, item.elevation, radius.toDouble())
drawCircle(color, 16f, pos) drawCircle(color, 16f, pos)
drawCircle(color.copy(alpha = 1 - (posRadius / 64f)), posRadius, pos) if (!item.eclipsed) drawCircle(color.copy(alpha = 1 - (posRadius / 64f)), posRadius, pos)
}
private fun DrawScope.drawEclipsedPosition(item: OrbitalPos, radius: Float, glowAlpha: Float, color: Color) {
val pos = sph2Cart(item.azimuth, item.elevation, radius.toDouble())
drawCircle(color.copy(alpha = glowAlpha), 16f, pos)
} }
private fun DrawScope.drawAim(azim: Float, elev: Float, radius: Float, color: Color) { private fun DrawScope.drawAim(azim: Float, elev: Float, radius: Float, color: Color) {
@@ -44,12 +44,12 @@ class RadioControlViewModel(
savedStateHandle: SavedStateHandle, savedStateHandle: SavedStateHandle,
private val trackingService: IRadioTrackingService, private val trackingService: IRadioTrackingService,
private val satelliteRepo: ISatelliteRepo, private val satelliteRepo: ISatelliteRepo,
private val settingsRepo: ISettingsRepo settingsRepo: ISettingsRepo
) : ViewModel() { ) : ViewModel() {
private val stationPos = settingsRepo.stationPosition.value
private var currentPass: OrbitalPass? = null private var currentPass: OrbitalPass? = null
private var transponders: List<SatRadio> = emptyList() private var transponders: List<SatRadio> = emptyList()
private val stationPos = settingsRepo.stationPosition.value
private val _uiState = MutableStateFlow( private val _uiState = MutableStateFlow(
RadioControlState( RadioControlState(
+2 -2
View File
@@ -1,8 +1,8 @@
[versions] [versions]
#noinspection UnusedVersionCatalogEntry #noinspection UnusedVersionCatalogEntry
appVersionCode = "420" appVersionCode = "421"
#noinspection UnusedVersionCatalogEntry #noinspection UnusedVersionCatalogEntry
appVersionName = "4.2.0" appVersionName = "4.2.1"
#noinspection GradleDependency,UnusedVersionCatalogEntry #noinspection GradleDependency,UnusedVersionCatalogEntry
compileSdk = "36" compileSdk = "36"
#noinspection UnusedVersionCatalogEntry #noinspection UnusedVersionCatalogEntry