mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Now showing the radar fragment for selected satellite pass in the main recycler.
This commit is contained in:
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)
|
||||
}
|
||||
@@ -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,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"
|
||||
|
||||
Reference in new issue
Block a user