mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-04 19:47:22 +00:00
More changes to layouts, fragments and styles
This commit is contained in:
1 parent
f9ebe84012
commit
38787b45c1
26 files changed
+783
-737
No files matched your search
+5
-1
@@ -20,13 +20,16 @@ package com.rtbishop.look4sat.presentation
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.pm.ActivityInfo
|
||||
import android.os.Bundle
|
||||
import androidx.activity.viewModels
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
||||
import com.rtbishop.look4sat.databinding.ActivityMainBinding
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
class Look4SatActivity : AppCompatActivity() {
|
||||
class MainActivity : AppCompatActivity() {
|
||||
|
||||
private val mainViewModel: MainViewModel by viewModels()
|
||||
|
||||
@SuppressLint("SourceLockedOrientationActivity")
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
@@ -34,5 +37,6 @@ class Look4SatActivity : AppCompatActivity() {
|
||||
super.onCreate(savedInstanceState)
|
||||
installSplashScreen()
|
||||
setContentView(ActivityMainBinding.inflate(layoutInflater).root)
|
||||
mainViewModel.calculatePasses()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.rtbishop.look4sat.presentation
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.rtbishop.look4sat.domain.DataRepository
|
||||
import com.rtbishop.look4sat.domain.predict.Predictor
|
||||
import com.rtbishop.look4sat.framework.SettingsProvider
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class MainViewModel @Inject constructor(
|
||||
private val predictor: Predictor,
|
||||
private val preferences: SettingsProvider,
|
||||
private val dataRepository: DataRepository
|
||||
) : ViewModel() {
|
||||
|
||||
fun calculatePasses(
|
||||
hoursAhead: Int = preferences.getHoursAhead(),
|
||||
minElevation: Double = preferences.getMinElevation(),
|
||||
timeRef: Long = System.currentTimeMillis()
|
||||
) {
|
||||
viewModelScope.launch {
|
||||
val satellites = dataRepository.getSelectedSatellites()
|
||||
val stationPos = preferences.loadStationPosition()
|
||||
predictor.forceCalculation(satellites, stationPos, timeRef, hoursAhead, minElevation)
|
||||
}
|
||||
}
|
||||
}
|
||||
+9
-7
@@ -24,8 +24,8 @@ import androidx.core.widget.doOnTextChanged
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.SimpleItemAnimator
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.databinding.FragmentEntriesBinding
|
||||
@@ -44,14 +44,16 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
|
||||
}
|
||||
|
||||
private fun setupComponents(view: View) {
|
||||
val entriesAdapter = EntriesAdapter(viewModel)
|
||||
val context = requireContext()
|
||||
val adapter = EntriesAdapter(viewModel)
|
||||
val layoutManager = GridLayoutManager(context, 2)
|
||||
val itemDecoration = DividerItemDecoration(context, layoutManager.orientation)
|
||||
val binding = FragmentEntriesBinding.bind(view).apply {
|
||||
entriesRecycler.apply {
|
||||
setHasFixedSize(true)
|
||||
adapter = entriesAdapter
|
||||
layoutManager = GridLayoutManager(requireContext(), 2)
|
||||
(itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false
|
||||
// addItemDecoration(ItemDivider(R.drawable.divider_dark))
|
||||
this.adapter = adapter
|
||||
this.layoutManager = layoutManager
|
||||
addItemDecoration(itemDecoration)
|
||||
}
|
||||
entriesBack.setOnClickListener { findNavController().navigateUp() }
|
||||
entriesSearch.doOnTextChanged { text, _, _, _ -> viewModel.setQuery(text.toString()) }
|
||||
@@ -59,7 +61,7 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
|
||||
entriesSelectAll.setOnClickListener { viewModel.selectCurrentItems() }
|
||||
}
|
||||
viewModel.satData.observe(viewLifecycleOwner, { satData ->
|
||||
handleSatData(satData, binding, entriesAdapter)
|
||||
handleSatData(satData, binding, adapter)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -23,9 +23,9 @@ import androidx.core.os.bundleOf
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.recyclerview.widget.SimpleItemAnimator
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.databinding.FragmentPassesBinding
|
||||
import com.rtbishop.look4sat.domain.model.DataState
|
||||
@@ -47,14 +47,16 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
|
||||
}
|
||||
|
||||
private fun setupComponents(view: View) {
|
||||
val passesAdapter = PassesAdapter(passesViewModel.shouldUseUTC(), this)
|
||||
val context = requireContext()
|
||||
val adapter = PassesAdapter(passesViewModel.shouldUseUTC(), this)
|
||||
val layoutManager = LinearLayoutManager(context)
|
||||
val itemDecoration = DividerItemDecoration(context, layoutManager.orientation)
|
||||
val binding = FragmentPassesBinding.bind(view).apply {
|
||||
passesList.apply {
|
||||
setHasFixedSize(true)
|
||||
adapter = passesAdapter
|
||||
isVerticalScrollBarEnabled = false
|
||||
layoutManager = LinearLayoutManager(context)
|
||||
(itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false
|
||||
this.adapter = adapter
|
||||
this.layoutManager = layoutManager
|
||||
addItemDecoration(itemDecoration)
|
||||
addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||
if (dy > 0 && passesFab.visibility == View.VISIBLE) passesFab.hide()
|
||||
@@ -72,7 +74,7 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
|
||||
passesFab.setOnClickListener { findNavController().navigate(R.id.nav_satellites) }
|
||||
}
|
||||
passesViewModel.passes.observe(viewLifecycleOwner, { passesResult ->
|
||||
handleNewPasses(passesResult, passesAdapter, binding)
|
||||
handleNewPasses(passesResult, adapter, binding)
|
||||
})
|
||||
getNavResult<Pair<Int, Double>>(R.id.nav_passes, "prefs") { prefs ->
|
||||
passesViewModel.forceCalculation(prefs.first, prefs.second)
|
||||
|
||||
@@ -23,8 +23,8 @@ import androidx.core.os.bundleOf
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.SimpleItemAnimator
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.databinding.FragmentRadarBinding
|
||||
import com.rtbishop.look4sat.domain.predict.SatPass
|
||||
@@ -45,30 +45,25 @@ class RadarFragment : Fragment(R.layout.fragment_radar) {
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
setupComponents(view)
|
||||
}
|
||||
|
||||
private fun setupComponents(view: View) {
|
||||
val context = requireContext()
|
||||
val adapter = TransmittersAdapter()
|
||||
val layoutManager = LinearLayoutManager(context)
|
||||
val itemDecoration = DividerItemDecoration(context, layoutManager.orientation)
|
||||
FragmentRadarBinding.bind(view).apply {
|
||||
val transAdapter = TransmittersAdapter()
|
||||
radarRecycler.apply {
|
||||
setHasFixedSize(true)
|
||||
adapter = transAdapter
|
||||
isVerticalScrollBarEnabled = false
|
||||
layoutManager = LinearLayoutManager(context)
|
||||
(itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false
|
||||
// addItemDecoration(ItemDivider(R.drawable.divider_dark))
|
||||
this.adapter = adapter
|
||||
this.layoutManager = LinearLayoutManager(context)
|
||||
addItemDecoration(itemDecoration)
|
||||
}
|
||||
setupObservers(transAdapter, this)
|
||||
setupObservers(adapter, this)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
viewModel.enableSensor()
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
viewModel.disableSensor()
|
||||
}
|
||||
|
||||
private fun setupObservers(
|
||||
transmittersAdapter: TransmittersAdapter,
|
||||
binding: FragmentRadarBinding
|
||||
@@ -80,7 +75,7 @@ class RadarFragment : Fragment(R.layout.fragment_radar) {
|
||||
setShowAim(preferences.getUseCompass())
|
||||
setScanning(preferences.getShowSweep())
|
||||
}
|
||||
binding.radarFrame.addView(radarView)
|
||||
binding.radarCard.addView(radarView)
|
||||
viewModel.radarData.observe(viewLifecycleOwner, { passData ->
|
||||
radarView?.setPosition(passData.satPos)
|
||||
radarView?.setPositions(passData.satTrack)
|
||||
@@ -139,4 +134,14 @@ class RadarFragment : Fragment(R.layout.fragment_radar) {
|
||||
binding.radarTimer.text = 0L.toTimerString()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
viewModel.enableSensor()
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
viewModel.disableSensor()
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user