Added satellite selection buttons to MapFragment.kt

This commit is contained in:
Arty Bishop committed 2020-11-26 13:07:02 +00:00
1 parent 59771bd0b3
commit 19a0649cb3
6 files changed
+52 -9

No files matched your search

@@ -46,6 +46,7 @@ class MapFragment : Fragment(R.layout.fragment_map) {
private lateinit var trackPaint: Paint private lateinit var trackPaint: Paint
private lateinit var footprintPaint: Paint private lateinit var footprintPaint: Paint
private lateinit var selectedPass: SatPass private lateinit var selectedPass: SatPass
private lateinit var allPasses: List<SatPass>
private val dateNow = Date() private val dateNow = Date()
private val viewModel: SharedViewModel by activityViewModels() private val viewModel: SharedViewModel by activityViewModels()
private var iconPos: Drawable? = null private var iconPos: Drawable? = null
@@ -122,9 +123,11 @@ class MapFragment : Fragment(R.layout.fragment_map) {
viewModel.getPasses().observe(viewLifecycleOwner, { satPasses -> viewModel.getPasses().observe(viewLifecycleOwner, { satPasses ->
if (satPasses is Result.Success) { if (satPasses is Result.Success) {
if (satPasses.data.isNotEmpty()) { if (satPasses.data.isNotEmpty()) {
val filteredPasses = satPasses.data.distinctBy { it.tle } allPasses = satPasses.data.distinctBy { it.tle }
selectedPass = filteredPasses[0] selectedPass = allPasses[0]
setupSatOverlay(filteredPasses) binding.fabPrev.setOnClickListener { changeSelection(true) }
binding.fabNext.setOnClickListener { changeSelection(false) }
setupSatOverlay(allPasses)
} }
} }
}) })
@@ -134,15 +137,27 @@ class MapFragment : Fragment(R.layout.fragment_map) {
lifecycleScope.launch { lifecycleScope.launch {
while (true) { while (true) {
dateNow.time = System.currentTimeMillis() dateNow.time = System.currentTimeMillis()
setSatDetails(selectedPass)
binding.mapView.overlays[3] = getSatMarkers(passList) binding.mapView.overlays[3] = getSatMarkers(passList)
binding.mapView.overlays[2] = getSatFootprint(selectedPass)
setSatInfo(selectedPass)
binding.mapView.invalidate() binding.mapView.invalidate()
delay(2000) delay(2000)
} }
} }
} }
private fun changeSelection(decrement: Boolean) {
val index = allPasses.indexOf(selectedPass)
selectedPass = if (decrement) {
if (index > 0) allPasses[index - 1] else allPasses[allPasses.size - 1]
} else {
if (index < allPasses.size - 1) allPasses[index + 1] else allPasses[0]
}
val satPos = selectedPass.predictor.getSatPos(dateNow)
val osmPos = getOsmPosition(satPos.latitude, satPos.longitude, true)
setSatDetails(selectedPass)
binding.mapView.controller.animateTo(GeoPoint(osmPos.lat, osmPos.lon))
}
private suspend fun getSatMarkers(passList: List<SatPass>): Overlay = private suspend fun getSatMarkers(passList: List<SatPass>): Overlay =
withContext(Dispatchers.Default) { withContext(Dispatchers.Default) {
val items = FolderOverlay() val items = FolderOverlay()
@@ -169,7 +184,6 @@ class MapFragment : Fragment(R.layout.fragment_map) {
setSatInfo(satPass) setSatInfo(satPass)
binding.mapView.overlays[1] = getSatTrack(satPass) binding.mapView.overlays[1] = getSatTrack(satPass)
binding.mapView.overlays[2] = getSatFootprint(satPass) binding.mapView.overlays[2] = getSatFootprint(satPass)
binding.mapView.invalidate()
} }
private fun setSatInfo(satPass: SatPass) { private fun setSatInfo(satPass: SatPass) {
+1 -1
View File
@@ -19,7 +19,7 @@
android:id="@+id/splashNext" android:id="@+id/splashNext"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="48dp" android:layout_marginBottom="@dimen/fab_padding"
android:contentDescription="@string/placeholder" android:contentDescription="@string/placeholder"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
+1 -1
View File
@@ -130,7 +130,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="bottom|center" android:layout_gravity="bottom|center"
android:layout_margin="32dp" android:layout_margin="@dimen/fab_padding"
android:contentDescription="@string/placeholder" android:contentDescription="@string/placeholder"
android:src="@drawable/ic_arrow" android:src="@drawable/ic_arrow"
app:fabSize="mini" /> app:fabSize="mini" />
+25
View File
@@ -94,6 +94,31 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fabPrev"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/fab_padding"
android:layout_marginBottom="@dimen/fab_padding"
android:contentDescription="@string/placeholder"
android:rotation="180"
app:fabSize="mini"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/ic_arrow" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fabNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/fab_padding"
android:layout_marginBottom="@dimen/fab_padding"
android:contentDescription="@string/placeholder"
app:fabSize="mini"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:srcCompat="@drawable/ic_arrow" />
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView
android:id="@+id/copyright" android:id="@+id/copyright"
android:layout_width="wrap_content" android:layout_width="wrap_content"
+1 -1
View File
@@ -117,7 +117,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="bottom|center" android:layout_gravity="bottom|center"
android:layout_marginBottom="32dp" android:layout_marginBottom="@dimen/fab_padding"
android:contentDescription="@string/placeholder" android:contentDescription="@string/placeholder"
android:src="@drawable/ic_refresh" android:src="@drawable/ic_refresh"
app:fabSize="mini" /> app:fabSize="mini" />
+4
View File
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="fab_padding">48dp</dimen>
</resources>