Restored bottom navigation bar for comparison

This commit is contained in:
Arty Bishop committed 2022-02-19 12:10:29 +00:00
1 parent 8b8c443bd1
commit a0c6ceef15
9 files changed
+71 -45

No files matched your search

@@ -23,6 +23,9 @@ import android.os.Bundle
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.setupWithNavController
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.databinding.ActivityMainBinding import com.rtbishop.look4sat.databinding.ActivityMainBinding
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@@ -36,7 +39,10 @@ class MainActivity : AppCompatActivity() {
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
installSplashScreen() installSplashScreen()
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(ActivityMainBinding.inflate(layoutInflater).root) val binding = ActivityMainBinding.inflate(layoutInflater)
val host = supportFragmentManager.findFragmentById(R.id.navigation_host) as NavHostFragment
setContentView(binding.root)
binding.navigationBar.setupWithNavController(host.navController)
mainViewModel.calculatePasses() mainViewModel.calculatePasses()
} }
} }
@@ -74,12 +74,12 @@ class MapViewModel @Inject constructor(
} }
} }
fun selectDefaultSatellite(catnum: Int?) { fun selectDefaultSatellite(catnum: Int) {
viewModelScope.launch { viewModelScope.launch {
dataRepository.getSelectedSatellites().also { satellites -> dataRepository.getSelectedSatellites().also { satellites ->
if (satellites.isNotEmpty()) { if (satellites.isNotEmpty()) {
allSatList = satellites allSatList = satellites
if (catnum == null) { if (catnum == -1) {
selectSatellite(satellites.first()) selectSatellite(satellites.first())
} else { } else {
satellites.find { it.params.catnum == catnum }?.let { selectSatellite(it) } satellites.find { it.params.catnum == catnum }?.let { selectSatellite(it) }
@@ -19,13 +19,11 @@ package com.rtbishop.look4sat.presentation.passesScreen
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.widget.Toast
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.SimpleItemAnimator import androidx.recyclerview.widget.SimpleItemAnimator
import com.rtbishop.look4sat.R import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.databinding.FragmentPassesBinding import com.rtbishop.look4sat.databinding.FragmentPassesBinding
@@ -57,12 +55,6 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
this.layoutManager = layoutManager this.layoutManager = layoutManager
addItemDecoration(itemDecoration) addItemDecoration(itemDecoration)
(itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false (itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false
addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
if (dy > 0 && passesFab.visibility == View.VISIBLE) passesFab.hide()
else if (dy < 0 && passesFab.visibility != View.VISIBLE) passesFab.show()
}
})
} }
passesSwipe.apply { passesSwipe.apply {
setColorSchemeResources(R.color.surfaceToolbar) setColorSchemeResources(R.color.surfaceToolbar)
@@ -75,17 +67,6 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
passesViewModel.passes.observe(viewLifecycleOwner) { passesResult -> passesViewModel.passes.observe(viewLifecycleOwner) { passesResult ->
handleNewPasses(passesResult, adapter, binding) handleNewPasses(passesResult, adapter, binding)
} }
passesViewModel.satellites.observe(viewLifecycleOwner) { satellites ->
satellites?.let {
if (satellites.isEmpty()) {
binding.passesFab.setOnClickListener {
Toast.makeText(requireContext(), "Nothing to show", Toast.LENGTH_SHORT).show()
}
} else {
binding.passesFab.setOnClickListener { findNavController().navigate(R.id.nav_entries) }
}
}
}
getNavResult<Pair<Int, Double>>(R.id.nav_passes, "prefs") { prefs -> getNavResult<Pair<Int, Double>>(R.id.nav_passes, "prefs") { prefs ->
passesViewModel.saveCalculationPrefs(prefs.first, prefs.second) passesViewModel.saveCalculationPrefs(prefs.first, prefs.second)
passesViewModel.forceCalculation(prefs.first, prefs.second) passesViewModel.forceCalculation(prefs.first, prefs.second)
@@ -17,7 +17,10 @@
*/ */
package com.rtbishop.look4sat.presentation.passesScreen package com.rtbishop.look4sat.presentation.passesScreen
import androidx.lifecycle.* import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.rtbishop.look4sat.data.ISettingsHandler import com.rtbishop.look4sat.data.ISettingsHandler
import com.rtbishop.look4sat.domain.IDataRepository import com.rtbishop.look4sat.domain.IDataRepository
import com.rtbishop.look4sat.domain.model.DataState import com.rtbishop.look4sat.domain.model.DataState
@@ -37,7 +40,6 @@ class PassesViewModel @Inject constructor(
private var passesProcessing: Job? = null private var passesProcessing: Job? = null
private val _passes = MutableLiveData<DataState<List<SatPass>>>() private val _passes = MutableLiveData<DataState<List<SatPass>>>()
val passes: LiveData<DataState<List<SatPass>>> = _passes val passes: LiveData<DataState<List<SatPass>>> = _passes
val satellites = repository.getSatelliteItems().asLiveData()
init { init {
viewModelScope.launch { viewModelScope.launch {
+27 -6
View File
@@ -1,9 +1,30 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.fragment.app.FragmentContainerView 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:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_nav_host"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent">
app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph" /> <androidx.fragment.app.FragmentContainerView
android:id="@+id/navigation_host"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
app:defaultNavHost="true"
app:layout_constraintBottom_toTopOf="@+id/navigation_bar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/navigation_graph" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/navigation_bar"
android:layout_width="match_parent"
android:layout_height="56dp"
app:itemBackground="@color/surfaceToolbar"
app:labelVisibilityMode="unlabeled"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/navigation_menu" />
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -72,16 +72,4 @@
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/passes_fab"
style="@style/Widget.MaterialComponents.FloatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:layout_marginBottom="24dp"
android:src="@drawable/ic_satellite"
android:tint="@color/surfaceBg"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
+23
View File
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/nav_entries"
android:icon="@drawable/ic_sputnik"
android:title="@string/menu_satellites" />
<item
android:id="@+id/nav_passes"
android:icon="@drawable/ic_list"
android:title="@string/menu_passes" />
<!-- <item-->
<!-- android:id="@+id/nav_radar"-->
<!-- android:icon="@drawable/ic_support"-->
<!-- android:title="@string/menu_radar" />-->
<item
android:id="@+id/nav_map"
android:icon="@drawable/ic_world"
android:title="@string/menu_map" />
<item
android:id="@+id/nav_settings"
android:icon="@drawable/ic_prefs"
android:title="@string/menu_settings" />
</menu>
@@ -26,7 +26,7 @@
tools:layout="@layout/fragment_radar"> tools:layout="@layout/fragment_radar">
<argument <argument
android:name="catNum" android:name="catNum"
android:defaultValue="0" android:defaultValue="-1"
app:argType="integer" /> app:argType="integer" />
<argument <argument
android:name="aosTime" android:name="aosTime"
@@ -39,7 +39,7 @@
tools:layout="@layout/fragment_map"> tools:layout="@layout/fragment_map">
<argument <argument
android:name="catNum" android:name="catNum"
android:defaultValue="0" android:defaultValue="-1"
app:argType="integer" /> app:argType="integer" />
</fragment> </fragment>
<fragment <fragment
+6 -1
View File
@@ -7,11 +7,16 @@
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_splash</item> <item name="windowSplashScreenAnimatedIcon">@drawable/ic_splash</item>
</style> </style>
<style name="Theme.Look4Sat.Main" parent="Theme.MaterialComponents.NoActionBar"> <style name="Theme.Look4Sat.Main" parent="Theme.Material3.Dark.NoActionBar">
<item name="colorAccent">@color/themeAccent</item> <item name="colorAccent">@color/themeAccent</item>
<item name="colorControlNormal">@color/themeLight</item> <item name="colorControlNormal">@color/themeLight</item>
<item name="colorPrimary">@color/themeAccent</item> <item name="colorPrimary">@color/themeAccent</item>
<item name="colorSecondary">@color/themeAccent</item> <item name="colorSecondary">@color/themeAccent</item>
<!-- Bottom bar colors-->
<item name="colorOnSecondaryContainer">@color/themeLight</item>
<item name="colorOnSurfaceVariant">@color/themeLight</item>
<item name="colorSecondaryContainer">@color/surfaceIcon</item>
<!-- -->
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item> <item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
<item name="android:listDivider">@drawable/item_divider</item> <item name="android:listDivider">@drawable/item_divider</item>
<item name="android:navigationBarColor">@color/surfaceBg</item> <item name="android:navigationBarColor">@color/surfaceBg</item>