Added second recycler for current passes. FAB now initiates passes recalculation. Minor fixes.

This commit is contained in:
Arty Bishop committed 2019-11-23 13:30:30 +00:00
1 parent cc6e486574
commit 1f2832d13e
10 files changed
+59 -69

No files matched your search

@@ -20,7 +20,6 @@ import androidx.drawerlayout.widget.DrawerLayout
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.navigateUp
import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController
@@ -37,7 +36,7 @@ class MainActivity : AppCompatActivity() {
private val permGranted = PackageManager.PERMISSION_GRANTED
private val githubUrl = "https://github.com/rt-bishop/LookingSat"
private lateinit var appBarConfig: AppBarConfiguration
private lateinit var drawerLayout: DrawerLayout
private lateinit var viewModel: MainViewModel
private lateinit var timerLayout: ConstraintLayout
private lateinit var timeToAos: TextView
@@ -66,7 +65,7 @@ class MainActivity : AppCompatActivity() {
val toolbar: Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
drawerLayout = findViewById(R.id.drawer_layout)
val navView: NavigationView = findViewById(R.id.nav_view)
val header = navView.getHeaderView(0)
@@ -81,13 +80,12 @@ class MainActivity : AppCompatActivity() {
drawerBtnExit = header.findViewById(R.id.drawer_btn_exit)
val navController = findNavController(R.id.nav_host)
appBarConfig = AppBarConfiguration(setOf(R.id.nav_sky, R.id.nav_single_sat), drawerLayout)
setupActionBarWithNavController(navController, appBarConfig)
setupActionBarWithNavController(navController, drawerLayout)
navView.setupWithNavController(navController)
navController.addOnDestinationChangedListener { _, destination, _ ->
when (destination.id) {
R.id.nav_sky, R.id.nav_single_sat -> {
R.id.nav_sky -> {
this.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
toolbar.visibility = View.VISIBLE
timerLayout.visibility = View.VISIBLE
@@ -175,6 +173,6 @@ class MainActivity : AppCompatActivity() {
override fun onSupportNavigateUp(): Boolean {
val navController = findNavController(R.id.nav_host)
return navController.navigateUp(appBarConfig) || super.onSupportNavigateUp()
return navController.navigateUp(drawerLayout) || super.onSupportNavigateUp()
}
}
@@ -23,18 +23,18 @@ import kotlinx.coroutines.launch
class SkyFragment : Fragment() {
private lateinit var viewModel: MainViewModel
private lateinit var recView: RecyclerView
private lateinit var recAdapter: RecyclerView.Adapter<*>
private lateinit var btnRefresh: ImageButton
private lateinit var recViewCurrent: RecyclerView
private lateinit var recViewFuture: RecyclerView
private lateinit var recAdapterCurrent: RecyclerView.Adapter<*>
private lateinit var recAdapterFuture: RecyclerView.Adapter<*>
private lateinit var btnPassPrefs: ImageButton
private lateinit var progressBar: ProgressBar
private lateinit var fab: FloatingActionButton
private var satPassList: List<SatPass> = emptyList()
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_sky, container, false)
}
@@ -42,27 +42,12 @@ class SkyFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel = ViewModelProvider(activity as MainActivity).get(MainViewModel::class.java)
btnRefresh = (activity as MainActivity).findViewById(R.id.toolbar_btn_refresh)
btnPassPrefs = (activity as MainActivity).findViewById(R.id.toolbar_btn_refresh)
progressBar = view.findViewById(R.id.sky_progressbar)
recView = view.findViewById(R.id.sky_recycler)
recViewFuture = view.findViewById(R.id.sky_recycler_future)
fab = view.findViewById(R.id.sky_fab)
recView.layoutManager = LinearLayoutManager(activity)
recView.setHasFixedSize(true)
btnRefresh.setOnClickListener {
lifecycleScope.launch(Dispatchers.Main) {
recView.visibility = View.INVISIBLE
progressBar.visibility = View.VISIBLE
progressBar.isIndeterminate = true
satPassList = viewModel.getPassesForSelectedSatellites()
recAdapter = SatPassAdapter(satPassList)
recView.adapter = recAdapter
progressBar.isIndeterminate = false
progressBar.visibility = View.INVISIBLE
recView.visibility = View.VISIBLE
}
}
recViewFuture.layoutManager = LinearLayoutManager(activity)
fab.setOnClickListener { showSelectSatDialog() }
}
@@ -95,10 +80,12 @@ class SkyFragment : Fragment() {
.setPositiveButton("Ok") { _, _ ->
for ((tle, value) in selectionMap) {
tleSelectedMap[tle] = value
calculatePasses()
}
}
.setNeutralButton("Clear All") { _, _ ->
tleSelectedMap.clear()
calculatePasses()
}
.setNegativeButton("Cancel") { dialog, _ ->
dialog.cancel()
@@ -106,4 +93,18 @@ class SkyFragment : Fragment() {
.create()
.show()
}
private fun calculatePasses() {
lifecycleScope.launch(Dispatchers.Main) {
recViewFuture.visibility = View.INVISIBLE
progressBar.visibility = View.VISIBLE
progressBar.isIndeterminate = true
satPassList = viewModel.getPassesForSelectedSatellites()
recAdapterFuture = SatPassAdapter(satPassList)
recViewFuture.adapter = recAdapterFuture
progressBar.isIndeterminate = false
progressBar.visibility = View.INVISIBLE
recViewFuture.visibility = View.VISIBLE
}
}
}
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#C0C0C0"
android:pathData="M12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,16c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z" />
</vector>
-9
View File
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#C0C0C0"
android:pathData="M12,4L12,1L8,5l4,4L12,6c3.31,0 6,2.69 6,6 0,1.01 -0.25,1.97 -0.7,2.8l1.46,1.46C19.54,15.03 20,13.57 20,12c0,-4.42 -3.58,-8 -8,-8zM12,18c-3.31,0 -6,-2.69 -6,-6 0,-1.01 0.25,-1.97 0.7,-2.8L5.24,7.74C4.46,8.97 4,10.43 4,12c0,4.42 3.58,8 8,8v3l4,-4 -4,-4v3z" />
</vector>
-9
View File
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="32dp"
android:height="32dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M3,17h18v-2L3,15v2zM3,20h18v-1L3,19v1zM3,13h18v-3L3,10v3zM3,4v4h18L21,4L3,4z" />
</vector>
+18 -7
View File
@@ -1,10 +1,8 @@
<?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.SkyFragment">
android:layout_height="match_parent">
<ProgressBar
android:id="@+id/sky_progressbar"
@@ -12,20 +10,32 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@+id/sky_recycler"
app:layout_constraintEnd_toEndOf="@+id/sky_recycler"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/sky_recycler"
android:id="@+id/sky_recycler_current"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
</androidx.recyclerview.widget.RecyclerView>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/sky_recycler_future"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toBottomOf="@+id/sky_recycler_current">
</androidx.recyclerview.widget.RecyclerView>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/sky_fab"
@@ -37,4 +47,5 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:srcCompat="@drawable/ic_sat_asc_left" />
</androidx.constraintlayout.widget.ConstraintLayout>
+1 -5
View File
@@ -6,12 +6,8 @@
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_sky"
android:icon="@drawable/ic_sky"
android:title="@string/menu_sky" />
<item
android:id="@+id/nav_single_sat"
android:icon="@drawable/ic_sat_asc_right"
android:title="@string/menu_single_sat" />
android:title="@string/menu_sky" />
<item
android:id="@+id/nav_map"
android:icon="@drawable/ic_map"
@@ -11,12 +11,6 @@
android:label="@string/menu_sky"
tools:layout="@layout/fragment_sky" />
<fragment
android:id="@+id/nav_single_sat"
android:name="com.rtbishop.lookingsat.ui.SkyFragment"
android:label="@string/menu_single_sat"
tools:layout="@layout/fragment_sky" />
<fragment
android:id="@+id/nav_radar"
android:name="com.rtbishop.lookingsat.ui.RadarFragment"
-1
View File
@@ -13,7 +13,6 @@
<string name="menu_sky">Sky at a Glance</string>
<string name="menu_radar">Radar View</string>
<string name="menu_single_sat">Single Sat Passes</string>
<string name="menu_map">World Map View</string>
<string name="menu_credits">Credits</string>
<string name="menu_about">About the App</string>
+1 -1
View File
@@ -58,7 +58,7 @@
<style name="ToolbarButton">
<item name="android:layout_width">48dp</item>
<item name="android:layout_height">48dp</item>
<item name="android:src">@drawable/ic_refresh</item>
<item name="android:src">@drawable/ic_pass_prefs</item>
<item name="android:backgroundTint">@color/toolbarButton</item>
</style>