Changes to RadarFragment's satellite data views

This commit is contained in:
Arty Bishop committed 2022-02-22 11:29:49 +00:00
1 parent 6189fb497e
commit 0c71c4db29
10 files changed
+99 -46

No files matched your search

@@ -164,7 +164,7 @@ class MapViewModel @Inject constructor(
val osmPos = GeoPos(osmLat, osmLon)
val qthLoc = QthConverter.positionToQth(osmPos.latitude, osmPos.longitude) ?: "-- --"
val satData = MapData(
satellite, satellite.data.catnum, satellite.data.name, satPos.range,
satellite, satellite.data.catnum, satellite.data.name, satPos.distance,
satPos.altitude, satPos.getOrbitalVelocity(), qthLoc, osmPos
)
_satData.postValue(satData)
@@ -66,7 +66,6 @@ class PassesViewModel @Inject constructor(
viewModelScope.launch {
_passes.postValue(DataState.Loading)
passesProcessing?.cancelAndJoin()
delay(3000)
selection?.let { items -> repository.setEntriesSelection(items) }
settings.setHoursAhead(hoursAhead)
settings.setMinElevation(minElevation)
@@ -102,14 +102,14 @@ class RadarFragment : Fragment(R.layout.fragment_radar) {
private fun setPassText(satPass: SatPass, satPos: SatPos) {
val timeNow = System.currentTimeMillis()
val polarAz = getString(R.string.pat_azimuth)
val polarEl = getString(R.string.pat_elevation)
val polarRng = getString(R.string.pat_distance)
val polarAlt = getString(R.string.pat_altitude)
binding.radarAz.text = String.format(polarAz, Math.toDegrees(satPos.azimuth))
binding.radarEl.text = String.format(polarEl, Math.toDegrees(satPos.elevation))
binding.radarDst.text = String.format(polarRng, satPos.range)
binding.radarAlt.text = String.format(polarAlt, satPos.altitude)
val radarAzim = getString(R.string.radar_az_value)
val radarElev = getString(R.string.radar_el_value)
val radarAlt = getString(R.string.radar_alt_value)
val radarDist = getString(R.string.radar_dist_value)
binding.radarAzValue.text = String.format(radarAzim, Math.toDegrees(satPos.azimuth))
binding.radarElValue.text = String.format(radarElev, Math.toDegrees(satPos.elevation))
binding.radarAltValue.text = String.format(radarAlt, satPos.altitude)
binding.radarDstValue.text = String.format(radarDist, satPos.distance)
// binding.radarName.text = satPass.name
if (!satPass.isDeepSpace) {
@@ -31,8 +31,6 @@ class RadarView(context: Context) : View(context) {
private val defaultColor = ContextCompat.getColor(context, R.color.accent)
private val scale = resources.displayMetrics.density
private val radarWidth = resources.displayMetrics.widthPixels
private val radarRadius = radarWidth * 0.48f
private val piDiv2 = Math.PI / 2.0
private val strokeSize = scale * 2f
private var position: SatPos? = null
@@ -125,12 +123,12 @@ class RadarView(context: Context) : View(context) {
override fun onDraw(canvas: Canvas) {
val radarWidth = width - paddingLeft - paddingRight
val radarHeight = height - paddingTop - paddingBottom
val radarRadius = min(width, height) * 0.49f
val radarRadius = min(width, height) * 0.48f
val cx = paddingLeft + radarWidth / 2f
val cy = paddingTop + radarHeight / 2f
if (positions.isNotEmpty() && !isTrackCreated) {
createPassTrajectory()
createPassTrajectory(radarRadius)
createPassTrajectoryArrow()
isTrackCreated = true
}
@@ -146,10 +144,10 @@ class RadarView(context: Context) : View(context) {
canvas.drawPath(trackPath, arrowPaint)
}
if (shouldShowBeacons) {
drawSatellite(canvas)
drawSatellite(canvas, radarRadius)
}
if (shouldShowAim) {
drawCrosshair(canvas, azimuth, pitch)
drawCrosshair(canvas, azimuth, pitch, radarRadius)
}
if (shouldShowSweep) {
canvas.translate(-cx, -cy)
@@ -177,7 +175,7 @@ class RadarView(context: Context) : View(context) {
}
}
private fun drawSatellite(canvas: Canvas) {
private fun drawSatellite(canvas: Canvas, radarRadius: Float) {
position?.let { satPos ->
if (satPos.elevation > 0) {
val satX = sph2CartX(satPos.azimuth, satPos.elevation, radarRadius.toDouble())
@@ -187,7 +185,7 @@ class RadarView(context: Context) : View(context) {
}
}
private fun drawCrosshair(canvas: Canvas, azimuth: Float, pitch: Float) {
private fun drawCrosshair(canvas: Canvas, azimuth: Float, pitch: Float, radarRadius: Float) {
val azimuthRad = Math.toRadians(azimuth.toDouble())
val tmpElevation = Math.toRadians(pitch.toDouble())
val elevationRad = if (tmpElevation > 0.0) 0.0 else tmpElevation
@@ -208,7 +206,7 @@ class RadarView(context: Context) : View(context) {
return (radius * sin(piDiv2 - azimuth)).toFloat()
}
private fun createPassTrajectory() {
private fun createPassTrajectory(radarRadius: Float) {
positions.forEachIndexed { index, satPos ->
val passX = sph2CartX(satPos.azimuth, satPos.elevation, radarRadius.toDouble())
val passY = sph2CartY(satPos.azimuth, satPos.elevation, radarRadius.toDouble())
+52 -20
View File
@@ -45,49 +45,81 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/radar_toolbar" />
<TextView
android:id="@+id/radar_az_value"
style="@style/RadarValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="4dp"
android:text="@string/radar_az_value"
app:layout_constraintStart_toStartOf="@+id/radar_card"
app:layout_constraintTop_toTopOf="@+id/radar_card" />
<TextView
android:id="@+id/radar_az"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:text="@string/pat_azimuth"
android:text="@string/radar_az_text"
android:textSize="@dimen/text_size_small"
app:layout_constraintStart_toStartOf="@+id/radar_card"
app:layout_constraintTop_toTopOf="@+id/radar_card" />
app:layout_constraintStart_toStartOf="@+id/radar_az_value"
app:layout_constraintTop_toBottomOf="@+id/radar_az_value" />
<TextView
android:id="@+id/radar_el_value"
style="@style/RadarValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:text="@string/radar_el_value"
app:layout_constraintBaseline_toBaselineOf="@+id/radar_az_value"
app:layout_constraintEnd_toEndOf="@+id/radar_card" />
<TextView
android:id="@+id/radar_el"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_marginEnd="4dp"
android:text="@string/pat_elevation"
android:text="@string/radar_el_text"
android:textSize="@dimen/text_size_small"
app:layout_constraintEnd_toEndOf="@+id/radar_card"
app:layout_constraintTop_toTopOf="@+id/radar_card" />
app:layout_constraintBaseline_toBaselineOf="@+id/radar_az"
app:layout_constraintEnd_toEndOf="@+id/radar_el_value" />
<TextView
android:id="@+id/radar_alt_value"
style="@style/RadarValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:text="@string/radar_alt_value"
app:layout_constraintBottom_toBottomOf="@+id/radar_card"
app:layout_constraintStart_toStartOf="@+id/radar_az_value" />
<TextView
android:id="@+id/radar_alt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginBottom="4dp"
android:text="@string/pat_altitude"
android:text="@string/radar_alt_text"
android:textSize="@dimen/text_size_small"
app:layout_constraintBottom_toBottomOf="@+id/radar_card"
app:layout_constraintStart_toStartOf="@+id/radar_card" />
app:layout_constraintBottom_toTopOf="@+id/radar_alt_value"
app:layout_constraintStart_toStartOf="@+id/radar_alt_value" />
<TextView
android:id="@+id/radar_dst_value"
style="@style/RadarValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radar_dist_value"
app:layout_constraintBaseline_toBaselineOf="@+id/radar_alt_value"
app:layout_constraintEnd_toEndOf="@+id/radar_el_value" />
<TextView
android:id="@+id/radar_dst"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="4dp"
android:layout_marginBottom="4dp"
android:text="@string/pat_distance"
android:text="@string/radar_dist_text"
android:textSize="@dimen/text_size_small"
app:layout_constraintBottom_toBottomOf="@+id/radar_card"
app:layout_constraintEnd_toEndOf="@+id/radar_card" />
app:layout_constraintBaseline_toBaselineOf="@+id/radar_alt"
app:layout_constraintEnd_toEndOf="@+id/radar_dst_value" />
<androidx.cardview.widget.CardView
android:id="@+id/radar_list_card"
+9
View File
@@ -64,6 +64,15 @@
<string name="map_qth">QTH Локатор: %s</string>
<string name="map_coverage">Покрытие: %.0fкм</string>
<string name="radar_az_text">Азим.</string>
<string name="radar_az_value">%.1f°</string>
<string name="radar_el_text">Элев.</string>
<string name="radar_el_value">%.1f°</string>
<string name="radar_alt_text">Выс.</string>
<string name="radar_alt_value">%.0f km</string>
<string name="radar_dist_text">Дальн.</string>
<string name="radar_dist_value">%.0f km</string>
<string name="pat_azimuth">Азимут: %.1f°</string>
<string name="pat_elevation">Элевация: %.1f°</string>
<string name="pat_distance">Дистанция: %.0fкм</string>
+9
View File
@@ -76,6 +76,15 @@
<string name="map_coverage">Coverage: %.0f km</string>
<string name="map_copyright" translatable="false">Wikimedia maps | Map data © OpenStreetMap contributors</string>
<string name="radar_az_text">Azimuth</string>
<string name="radar_az_value">%.1f°</string>
<string name="radar_el_text">Elevation</string>
<string name="radar_el_value">%.1f°</string>
<string name="radar_alt_text">Altitude</string>
<string name="radar_alt_value">%.0f km</string>
<string name="radar_dist_text">Distance</string>
<string name="radar_dist_value">%.0f km</string>
<string name="pat_azimuth">Azimuth: %.1f°</string>
<string name="pat_elevation">Elevation: %.1f°</string>
<string name="pat_distance">Range: %.0f km</string>
+6
View File
@@ -132,6 +132,12 @@
<item name="fabCradleRoundedCornerRadius">@dimen/view_default_margin</item>
</style>
<style name="RadarValue">
<item name="android:textSize">@dimen/text_size_large</item>
<item name="android:textColor">@color/textMain</item>
<item name="android:includeFontPadding">false</item>
</style>
<style name="WorldMapText">
<item name="android:textSize">@dimen/text_size_medium</item>
<item name="android:textColor">@color/textMain</item>