Now showing the radar fragment for selected satellite pass in the main recycler.

This commit is contained in:
Arty Bishop committed 2019-11-27 14:05:29 +00:00
1 parent e219d42a9b
commit 6f4ab63b4a
6 files changed
+69 -9

No files matched your search

@@ -89,7 +89,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
try {
val passPredictor = PassPredictor(tle, gsp.value)
val passes = passPredictor.getPasses(Date(), hours, false)
passes.forEach { satPassList.add(SatPass(tle.name, tle.catnum, it)) }
passes.forEach { satPassList.add(SatPass(tle, passPredictor, it)) }
} catch (exception: IllegalArgumentException) {
Log.d(tag, "There was a problem with TLE")
} catch (exception: SatNotFoundException) {
@@ -1,5 +1,15 @@
package com.rtbishop.lookingsat.repo
import android.os.Parcelable
import com.github.amsacode.predict4java.PassPredictor
import com.github.amsacode.predict4java.SatPassTime
import com.github.amsacode.predict4java.TLE
import kotlinx.android.parcel.Parcelize
import kotlinx.android.parcel.RawValue
data class SatPass(val satName: String, val catNum: Int, val pass: SatPassTime)
@Parcelize
data class SatPass(
val tle: TLE,
val predictor: @RawValue PassPredictor,
val pass: @RawValue SatPassTime
) : Parcelable
@@ -4,11 +4,18 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.RecyclerView
import com.rtbishop.lookingsat.R
import com.rtbishop.lookingsat.repo.SatPass
class RadarFragment : Fragment() {
private lateinit var satPass: SatPass
private lateinit var radarSkyFrame: FrameLayout
private lateinit var radarRecycler: RecyclerView
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
@@ -16,4 +23,11 @@ class RadarFragment : Fragment() {
): View? {
return inflater.inflate(R.layout.fragment_radar, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
satPass = arguments?.get("satPass") as SatPass
radarSkyFrame = view.findViewById(R.id.radar_sky_frame)
radarRecycler = view.findViewById(R.id.radar_recycler)
}
}
@@ -4,7 +4,10 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.core.os.bundleOf
import androidx.navigation.findNavController
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.card.MaterialCardView
import com.rtbishop.lookingsat.R
import com.rtbishop.lookingsat.repo.SatPass
import java.text.SimpleDateFormat
@@ -26,13 +29,14 @@ class SatPassAdapter(private val satPassList: List<SatPass>) :
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val satPass = satPassList[position]
val layout = holder.itemView.findViewById<MaterialCardView>(R.id.card_view)
val satName = holder.itemView.findViewById<TextView>(R.id.card_sat_name)
val maxEl = holder.itemView.findViewById<TextView>(R.id.card_max_el)
val passVector = holder.itemView.findViewById<TextView>(R.id.card_pass_vector)
val passStart = holder.itemView.findViewById<TextView>(R.id.card_pass_start)
val passEnd = holder.itemView.findViewById<TextView>(R.id.card_pass_end)
satName.text = String.format("%s", satPass.satName)
satName.text = String.format("%s", satPass.tle.name)
maxEl.text = String.format("%.1f°", satPass.pass.maxEl)
passVector.text =
String.format("V: %2d° -> %2d°", satPass.pass.aosAzimuth, satPass.pass.losAzimuth)
@@ -40,10 +44,12 @@ class SatPassAdapter(private val satPassList: List<SatPass>) :
SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(satPass.pass.startTime)
passEnd.text =
SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(satPass.pass.endTime)
layout.setOnClickListener {
val bundle = bundleOf("satPass" to satPass)
holder.itemView.findNavController().navigate(R.id.action_nav_sky_to_nav_radar, bundle)
}
}
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView),
View.OnClickListener {
override fun onClick(v: View?) {}
}
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
}
+23 -1
View File
@@ -1,6 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.RadarFragment" />
tools:context=".ui.RadarFragment">
<FrameLayout
android:id="@+id/radar_sky_frame"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
</FrameLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/radar_recycler"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/radar_sky_frame" />
</androidx.constraintlayout.widget.ConstraintLayout>
+9 -1
View File
@@ -9,7 +9,15 @@
android:id="@+id/nav_sky"
android:name="com.rtbishop.lookingsat.ui.SkyFragment"
android:label="@string/menu_sky"
tools:layout="@layout/fragment_sky" />
tools:layout="@layout/fragment_sky">
<action
android:id="@+id/action_nav_sky_to_nav_radar"
app:destination="@id/nav_radar"
app:enterAnim="@anim/nav_default_enter_anim"
app:exitAnim="@anim/nav_default_exit_anim"
app:popEnterAnim="@anim/nav_default_enter_anim"
app:popExitAnim="@anim/nav_default_exit_anim" />
</fragment>
<fragment
android:id="@+id/nav_radar"