mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-02 19:17:21 +00:00
Showing entries and radios numbers in SettingsFragment.kt
This commit is contained in:
1 parent
0404f7be90
commit
567200cfe4
7 files changed
+34
-7
No files matched your search
@@ -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 -> {
|
||||
|
||||
+2
-4
@@ -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 {
|
||||
|
||||
+8
@@ -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)
|
||||
}
|
||||
|
||||
+4
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user