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 { try {
val passPredictor = PassPredictor(tle, gsp.value) val passPredictor = PassPredictor(tle, gsp.value)
val passes = passPredictor.getPasses(Date(), hours, false) 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) { } catch (exception: IllegalArgumentException) {
Log.d(tag, "There was a problem with TLE") Log.d(tag, "There was a problem with TLE")
} catch (exception: SatNotFoundException) { } catch (exception: SatNotFoundException) {
@@ -1,5 +1,15 @@
package com.rtbishop.lookingsat.repo 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.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.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.FrameLayout
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.RecyclerView
import com.rtbishop.lookingsat.R import com.rtbishop.lookingsat.R
import com.rtbishop.lookingsat.repo.SatPass
class RadarFragment : Fragment() { class RadarFragment : Fragment() {
private lateinit var satPass: SatPass
private lateinit var radarSkyFrame: FrameLayout
private lateinit var radarRecycler: RecyclerView
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, inflater: LayoutInflater,
container: ViewGroup?, container: ViewGroup?,
@@ -16,4 +23,11 @@ class RadarFragment : Fragment() {
): View? { ): View? {
return inflater.inflate(R.layout.fragment_radar, container, false) 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.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.TextView import android.widget.TextView
import androidx.core.os.bundleOf
import androidx.navigation.findNavController
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.card.MaterialCardView
import com.rtbishop.lookingsat.R import com.rtbishop.lookingsat.R
import com.rtbishop.lookingsat.repo.SatPass import com.rtbishop.lookingsat.repo.SatPass
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
@@ -26,13 +29,14 @@ class SatPassAdapter(private val satPassList: List<SatPass>) :
override fun onBindViewHolder(holder: ViewHolder, position: Int) { override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val satPass = satPassList[position] 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 satName = holder.itemView.findViewById<TextView>(R.id.card_sat_name)
val maxEl = holder.itemView.findViewById<TextView>(R.id.card_max_el) val maxEl = holder.itemView.findViewById<TextView>(R.id.card_max_el)
val passVector = holder.itemView.findViewById<TextView>(R.id.card_pass_vector) val passVector = holder.itemView.findViewById<TextView>(R.id.card_pass_vector)
val passStart = holder.itemView.findViewById<TextView>(R.id.card_pass_start) val passStart = holder.itemView.findViewById<TextView>(R.id.card_pass_start)
val passEnd = holder.itemView.findViewById<TextView>(R.id.card_pass_end) 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) maxEl.text = String.format("%.1f°", satPass.pass.maxEl)
passVector.text = passVector.text =
String.format("V: %2d° -> %2d°", satPass.pass.aosAzimuth, satPass.pass.losAzimuth) 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) SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(satPass.pass.startTime)
passEnd.text = passEnd.text =
SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(satPass.pass.endTime) 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), inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
View.OnClickListener {
override fun onClick(v: View?) {}
}
} }
+23 -1
View File
@@ -1,6 +1,28 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <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" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="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:id="@+id/nav_sky"
android:name="com.rtbishop.lookingsat.ui.SkyFragment" android:name="com.rtbishop.lookingsat.ui.SkyFragment"
android:label="@string/menu_sky" 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 <fragment
android:id="@+id/nav_radar" android:id="@+id/nav_radar"