From 6f4ab63b4a8966bfae63b67c8d176403a305efd2 Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Wed, 27 Nov 2019 14:05:29 +0000 Subject: [PATCH] Now showing the radar fragment for selected satellite pass in the main recycler. --- .../com/rtbishop/lookingsat/MainViewModel.kt | 2 +- .../com/rtbishop/lookingsat/repo/SatPass.kt | 12 +++++++++- .../rtbishop/lookingsat/ui/RadarFragment.kt | 14 +++++++++++ .../rtbishop/lookingsat/ui/SatPassAdapter.kt | 16 +++++++++---- app/src/main/res/layout/fragment_radar.xml | 24 ++++++++++++++++++- app/src/main/res/navigation/nav_graph.xml | 10 +++++++- 6 files changed, 69 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/rtbishop/lookingsat/MainViewModel.kt b/app/src/main/java/com/rtbishop/lookingsat/MainViewModel.kt index 55a9fff5..9d83b006 100644 --- a/app/src/main/java/com/rtbishop/lookingsat/MainViewModel.kt +++ b/app/src/main/java/com/rtbishop/lookingsat/MainViewModel.kt @@ -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) { diff --git a/app/src/main/java/com/rtbishop/lookingsat/repo/SatPass.kt b/app/src/main/java/com/rtbishop/lookingsat/repo/SatPass.kt index 5bad66eb..c0f38bbc 100644 --- a/app/src/main/java/com/rtbishop/lookingsat/repo/SatPass.kt +++ b/app/src/main/java/com/rtbishop/lookingsat/repo/SatPass.kt @@ -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) \ No newline at end of file +@Parcelize +data class SatPass( + val tle: TLE, + val predictor: @RawValue PassPredictor, + val pass: @RawValue SatPassTime +) : Parcelable \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/lookingsat/ui/RadarFragment.kt b/app/src/main/java/com/rtbishop/lookingsat/ui/RadarFragment.kt index 371823d9..4144f366 100644 --- a/app/src/main/java/com/rtbishop/lookingsat/ui/RadarFragment.kt +++ b/app/src/main/java/com/rtbishop/lookingsat/ui/RadarFragment.kt @@ -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) + } } \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/lookingsat/ui/SatPassAdapter.kt b/app/src/main/java/com/rtbishop/lookingsat/ui/SatPassAdapter.kt index 93010df6..8217c568 100644 --- a/app/src/main/java/com/rtbishop/lookingsat/ui/SatPassAdapter.kt +++ b/app/src/main/java/com/rtbishop/lookingsat/ui/SatPassAdapter.kt @@ -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) : override fun onBindViewHolder(holder: ViewHolder, position: Int) { val satPass = satPassList[position] + val layout = holder.itemView.findViewById(R.id.card_view) val satName = holder.itemView.findViewById(R.id.card_sat_name) val maxEl = holder.itemView.findViewById(R.id.card_max_el) val passVector = holder.itemView.findViewById(R.id.card_pass_vector) val passStart = holder.itemView.findViewById(R.id.card_pass_start) val passEnd = holder.itemView.findViewById(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) : 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) } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_radar.xml b/app/src/main/res/layout/fragment_radar.xml index 9194f2f4..ab367096 100644 --- a/app/src/main/res/layout/fragment_radar.xml +++ b/app/src/main/res/layout/fragment_radar.xml @@ -1,6 +1,28 @@ \ No newline at end of file + tools:context=".ui.RadarFragment"> + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 0a880014..5177e6cf 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -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"> + +