From 567200cfe4781d1ec78361b0d0640fdaa03d5a85 Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Sat, 19 Feb 2022 13:52:45 +0000 Subject: [PATCH] Showing entries and radios numbers in SettingsFragment.kt --- .../presentation/passesScreen/PassesFragment.kt | 11 +++++++++++ .../presentation/passesScreen/PassesViewModel.kt | 6 ++---- .../presentation/settingsScreen/SettingsFragment.kt | 8 ++++++++ .../presentation/settingsScreen/SettingsViewModel.kt | 4 ++++ app/src/main/res/values-ru/strings.xml | 3 +++ app/src/main/res/values/strings.xml | 3 +++ .../java/com/rtbishop/look4sat/data/DataRepository.kt | 6 +++--- 7 files changed, 34 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt index daef425a..f3185d2b 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesFragment.kt @@ -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>(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>, adapter: PassesAdapter) { when (state) { is DataState.Success -> { diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt index 561d88fb..72d28df2 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt @@ -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>>() val passes: LiveData>> = _passes + val entries: LiveData = repository.getEntriesNumber().asLiveData() init { viewModelScope.launch { diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsFragment.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsFragment.kt index acd5035c..58e54f20 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsFragment.kt @@ -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>(R.id.nav_settings, "sources") { sources -> viewModel.updateDataFromWeb(sources) } diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsViewModel.kt index 213e3fb9..2bf5a26c 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/settingsScreen/SettingsViewModel.kt @@ -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) } diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 8d2a60fe..48f6c72c 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -25,6 +25,9 @@ Поддержать F-Droid + Спутников: %s + Трансиверов: %s + Да Нет diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 38a0910b..35aee1ec 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -27,6 +27,9 @@ Support F-Droid + Satellites: %s + Transceivers: %s + Yes No diff --git a/core/src/main/java/com/rtbishop/look4sat/data/DataRepository.kt b/core/src/main/java/com/rtbishop/look4sat/data/DataRepository.kt index b34a0bf5..4972e245 100644 --- a/core/src/main/java/com/rtbishop/look4sat/data/DataRepository.kt +++ b/core/src/main/java/com/rtbishop/look4sat/data/DataRepository.kt @@ -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) } }