Showing entries and radios numbers in SettingsFragment.kt

pull/87/head
Arty Bishop 2022-02-19 13:52:45 +00:00
rodzic 0404f7be90
commit 567200cfe4
7 zmienionych plików z 34 dodań i 7 usunięć

Wyświetl plik

@ -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 -> {

Wyświetl plik

@ -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 {

Wyświetl plik

@ -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)
}

Wyświetl plik

@ -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)
}

Wyświetl plik

@ -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>

Wyświetl plik

@ -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>

Wyświetl plik

@ -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)
}
}