mirror of
https://github.com/rt-bishop/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
v4.2.1 - Turkish translation, DeepSpace filter, various tweaks
This commit is contained in:
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
|
|
||||||
+1
-1
@@ -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) {
|
||||||
|
|||||||
+2
-2
@@ -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(
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in new issue
Block a user