kopia lustrzana https://github.com/rt-bishop/Look4Sat
Showing entries and radios numbers in SettingsFragment.kt
rodzic
0404f7be90
commit
567200cfe4
|
@ -32,6 +32,7 @@ import com.rtbishop.look4sat.domain.model.DataState
|
|||
import com.rtbishop.look4sat.domain.predict.SatPass
|
||||
import com.rtbishop.look4sat.presentation.getNavResult
|
||||
import com.rtbishop.look4sat.presentation.toTimerString
|
||||
import com.rtbishop.look4sat.presentation.toast
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
|
@ -74,6 +75,9 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
|
|||
passesViewModel.passes.observe(viewLifecycleOwner) { passesResult ->
|
||||
handleNewPasses(passesResult, adapter)
|
||||
}
|
||||
passesViewModel.entries.observe(viewLifecycleOwner) { number ->
|
||||
handleEntriesNumber(number)
|
||||
}
|
||||
getNavResult<Pair<Int, Double>>(R.id.nav_passes, "prefs") { prefs ->
|
||||
passesViewModel.saveCalculationPrefs(prefs.first, prefs.second)
|
||||
passesViewModel.forceCalculation(prefs.first, prefs.second)
|
||||
|
@ -83,6 +87,13 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
|
|||
}
|
||||
}
|
||||
|
||||
private fun handleEntriesNumber(number: Int?) {
|
||||
number?.let { num ->
|
||||
if (num == 0) binding.passesFab.setOnClickListener { requireContext().toast("0") }
|
||||
else binding.passesFab.setOnClickListener { navigateToEntries() }
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleNewPasses(state: DataState<List<SatPass>>, adapter: PassesAdapter) {
|
||||
when (state) {
|
||||
is DataState.Success -> {
|
||||
|
|
|
@ -17,10 +17,7 @@
|
|||
*/
|
||||
package com.rtbishop.look4sat.presentation.passesScreen
|
||||
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import androidx.lifecycle.*
|
||||
import com.rtbishop.look4sat.data.ISettingsHandler
|
||||
import com.rtbishop.look4sat.domain.IDataRepository
|
||||
import com.rtbishop.look4sat.domain.model.DataState
|
||||
|
@ -40,6 +37,7 @@ class PassesViewModel @Inject constructor(
|
|||
private var passesProcessing: Job? = null
|
||||
private val _passes = MutableLiveData<DataState<List<SatPass>>>()
|
||||
val passes: LiveData<DataState<List<SatPass>>> = _passes
|
||||
val entries: LiveData<Int> = repository.getEntriesNumber().asLiveData()
|
||||
|
||||
init {
|
||||
viewModelScope.launch {
|
||||
|
|
|
@ -134,6 +134,14 @@ class SettingsFragment : Fragment(R.layout.fragment_settings) {
|
|||
findNavController().navigate(action)
|
||||
}
|
||||
binding.settingsData.dataBtnClear.setOnClickListener { viewModel.clearData() }
|
||||
viewModel.entries.observe(viewLifecycleOwner) { number ->
|
||||
val entriesFormat = getString(R.string.fmt_entries)
|
||||
binding.settingsData.dataSatellites.text = String.format(entriesFormat, number)
|
||||
}
|
||||
viewModel.radios.observe(viewLifecycleOwner) { number ->
|
||||
val radiosFormat = getString(R.string.fmt_radios)
|
||||
binding.settingsData.dataTransmitters.text = String.format(radiosFormat, number)
|
||||
}
|
||||
getNavResult<List<String>>(R.id.nav_settings, "sources") { sources ->
|
||||
viewModel.updateDataFromWeb(sources)
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.rtbishop.look4sat.presentation.settingsScreen
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.asLiveData
|
||||
import com.rtbishop.look4sat.data.ISettingsHandler
|
||||
import com.rtbishop.look4sat.domain.IDataRepository
|
||||
import com.rtbishop.look4sat.domain.ILocationHandler
|
||||
|
@ -17,6 +18,9 @@ class SettingsViewModel @Inject constructor(
|
|||
private val locationHandler: ILocationHandler
|
||||
) : ViewModel() {
|
||||
|
||||
val entries = repository.getEntriesNumber().asLiveData()
|
||||
val radios = repository.getRadiosNumber().asLiveData()
|
||||
|
||||
fun updateDataFromFile(uri: String) {
|
||||
repository.updateFromFile(uri)
|
||||
}
|
||||
|
|
|
@ -25,6 +25,9 @@
|
|||
<string name="btn_support">Поддержать</string>
|
||||
<string name="btn_fdroid">F-Droid</string>
|
||||
|
||||
<string name="fmt_entries">Спутников: %s</string>
|
||||
<string name="fmt_radios">Трансиверов: %s</string>
|
||||
|
||||
<string name="yes">Да</string>
|
||||
<string name="no">Нет</string>
|
||||
|
||||
|
|
|
@ -27,6 +27,9 @@
|
|||
<string name="btn_support">Support</string>
|
||||
<string name="btn_fdroid">F-Droid</string>
|
||||
|
||||
<string name="fmt_entries">Satellites: %s</string>
|
||||
<string name="fmt_radios">Transceivers: %s</string>
|
||||
|
||||
<string name="yes">Yes</string>
|
||||
<string name="no">No</string>
|
||||
|
||||
|
|
|
@ -59,8 +59,8 @@ class DataRepository(
|
|||
repositoryScope.launch(exceptionHandler) {
|
||||
_updateState.value = DataState.Loading
|
||||
localSource.getFileStream(uri)?.let { fileStream ->
|
||||
localSource.insertEntries(importSatellites(fileStream))
|
||||
delay(updateStateDelay)
|
||||
localSource.insertEntries(importSatellites(fileStream))
|
||||
}
|
||||
_updateState.value = DataState.Success(0L)
|
||||
}
|
||||
|
@ -94,11 +94,11 @@ class DataRepository(
|
|||
}
|
||||
streams.forEach { stream -> entries.addAll(importSatellites(stream)) }
|
||||
localSource.insertEntries(entries)
|
||||
_updateState.value = DataState.Success(0L)
|
||||
}
|
||||
repositoryScope.launch(exceptionHandler) {
|
||||
remoteSource.getFileStream(remoteSource.radioApi)?.let { stream ->
|
||||
localSource.insertRadios(dataParser.parseJSONStream(stream))
|
||||
_updateState.value = DataState.Success(0L)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -106,8 +106,8 @@ class DataRepository(
|
|||
override fun clearAllData() {
|
||||
repositoryScope.launch {
|
||||
_updateState.value = DataState.Loading
|
||||
localSource.clearAllData()
|
||||
delay(updateStateDelay)
|
||||
localSource.clearAllData()
|
||||
_updateState.value = DataState.Success(0L)
|
||||
}
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue