mirror of
https://github.com/rt-bishop/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Minor fixes and code cleanup
This commit is contained in:
1 parent
f559c60154
commit
148104880e
9 files changed
+14
-67
No files matched your search
@@ -23,6 +23,7 @@ import android.content.pm.PackageManager
|
|||||||
import android.location.Location
|
import android.location.Location
|
||||||
import android.location.LocationListener
|
import android.location.LocationListener
|
||||||
import android.location.LocationManager
|
import android.location.LocationManager
|
||||||
|
import android.os.Bundle
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import com.rtbishop.look4sat.R
|
import com.rtbishop.look4sat.R
|
||||||
import com.rtbishop.look4sat.domain.LocationHandler
|
import com.rtbishop.look4sat.domain.LocationHandler
|
||||||
@@ -105,4 +106,10 @@ class LocationProvider @Inject constructor(
|
|||||||
manager.removeUpdates(this)
|
manager.removeUpdates(this)
|
||||||
setStationPosition(location.latitude, location.longitude)
|
setStationPosition(location.latitude, location.longitude)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onProviderEnabled(provider: String) {}
|
||||||
|
|
||||||
|
override fun onProviderDisabled(provider: String) {}
|
||||||
|
|
||||||
|
override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) {}
|
||||||
}
|
}
|
||||||
@@ -53,7 +53,7 @@ object CoreModule {
|
|||||||
@DefaultDispatcher defaultDispatcher: CoroutineDispatcher
|
@DefaultDispatcher defaultDispatcher: CoroutineDispatcher
|
||||||
): DataRepository {
|
): DataRepository {
|
||||||
val dataParser = DataParser(defaultDispatcher)
|
val dataParser = DataParser(defaultDispatcher)
|
||||||
val db = Room.databaseBuilder(context, SatelliteDb::class.java, "SatelliteDb")
|
val db = Room.databaseBuilder(context, SatelliteDb::class.java, "Look4SatDB")
|
||||||
.fallbackToDestructiveMigration().build()
|
.fallbackToDestructiveMigration().build()
|
||||||
val localSource = LocalSource(db.entriesDao(), db.transmittersDao())
|
val localSource = LocalSource(db.entriesDao(), db.transmittersDao())
|
||||||
val remoteSource = RemoteSource(ioDispatcher)
|
val remoteSource = RemoteSource(ioDispatcher)
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ import com.rtbishop.look4sat.databinding.FragmentEntriesBinding
|
|||||||
import com.rtbishop.look4sat.domain.model.DataState
|
import com.rtbishop.look4sat.domain.model.DataState
|
||||||
import com.rtbishop.look4sat.domain.model.SatItem
|
import com.rtbishop.look4sat.domain.model.SatItem
|
||||||
import com.rtbishop.look4sat.presentation.ItemDivider
|
import com.rtbishop.look4sat.presentation.ItemDivider
|
||||||
import com.rtbishop.look4sat.presentation.getNavResult
|
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
|
|
||||||
@AndroidEntryPoint
|
@AndroidEntryPoint
|
||||||
@@ -63,9 +62,6 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
|
|||||||
viewModel.satData.observe(viewLifecycleOwner, { satData ->
|
viewModel.satData.observe(viewLifecycleOwner, { satData ->
|
||||||
handleSatData(satData, binding, entriesAdapter)
|
handleSatData(satData, binding, entriesAdapter)
|
||||||
})
|
})
|
||||||
getNavResult<List<String>>(R.id.nav_satellites, "sources") { sources ->
|
|
||||||
viewModel.updateDataFromWeb(sources)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleSatData(
|
private fun handleSatData(
|
||||||
|
|||||||
+1
-27
@@ -17,8 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
package com.rtbishop.look4sat.presentation.entriesScreen
|
package com.rtbishop.look4sat.presentation.entriesScreen
|
||||||
|
|
||||||
import android.content.ContentResolver
|
|
||||||
import android.net.Uri
|
|
||||||
import android.widget.SearchView
|
import android.widget.SearchView
|
||||||
import androidx.lifecycle.*
|
import androidx.lifecycle.*
|
||||||
import com.rtbishop.look4sat.domain.DataRepository
|
import com.rtbishop.look4sat.domain.DataRepository
|
||||||
@@ -26,23 +24,16 @@ import com.rtbishop.look4sat.domain.model.DataState
|
|||||||
import com.rtbishop.look4sat.domain.model.SatItem
|
import com.rtbishop.look4sat.domain.model.SatItem
|
||||||
import com.rtbishop.look4sat.framework.SettingsProvider
|
import com.rtbishop.look4sat.framework.SettingsProvider
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import kotlinx.coroutines.CoroutineExceptionHandler
|
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import timber.log.Timber
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class EntriesViewModel @Inject constructor(
|
class EntriesViewModel @Inject constructor(
|
||||||
private val preferences: SettingsProvider,
|
private val preferences: SettingsProvider,
|
||||||
private val resolver: ContentResolver,
|
|
||||||
private val dataRepository: DataRepository
|
private val dataRepository: DataRepository
|
||||||
) : ViewModel(), SearchView.OnQueryTextListener, EntriesAdapter.EntriesClickListener {
|
) : ViewModel(), SearchView.OnQueryTextListener, EntriesAdapter.EntriesClickListener {
|
||||||
|
|
||||||
private val coroutineHandler = CoroutineExceptionHandler { _, throwable ->
|
|
||||||
Timber.d(throwable)
|
|
||||||
_satData.value = DataState.Error(null)
|
|
||||||
}
|
|
||||||
private val transModes = MutableLiveData(preferences.loadModesSelection())
|
private val transModes = MutableLiveData(preferences.loadModesSelection())
|
||||||
private val currentQuery = MutableLiveData(String())
|
private val currentQuery = MutableLiveData(String())
|
||||||
private val itemsWithModes = transModes.switchMap { modes ->
|
private val itemsWithModes = transModes.switchMap { modes ->
|
||||||
@@ -57,24 +48,6 @@ class EntriesViewModel @Inject constructor(
|
|||||||
private var shouldSelectAll = true
|
private var shouldSelectAll = true
|
||||||
val satData: LiveData<DataState<List<SatItem>>> = _satData
|
val satData: LiveData<DataState<List<SatItem>>> = _satData
|
||||||
|
|
||||||
fun updateDataFromFile(uri: Uri) {
|
|
||||||
viewModelScope.launch(coroutineHandler) {
|
|
||||||
_satData.value = DataState.Loading
|
|
||||||
runCatching {
|
|
||||||
resolver.openInputStream(uri)?.use { stream ->
|
|
||||||
dataRepository.updateDataFromFile(stream)
|
|
||||||
}
|
|
||||||
}.onFailure { _satData.value = DataState.Error(null) }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun updateDataFromWeb(sources: List<String>) {
|
|
||||||
viewModelScope.launch(coroutineHandler) {
|
|
||||||
_satData.value = DataState.Loading
|
|
||||||
dataRepository.updateDataFromWeb(sources)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun selectCurrentItems() {
|
fun selectCurrentItems() {
|
||||||
val currentValue = _satData.value
|
val currentValue = _satData.value
|
||||||
if (currentValue is DataState.Success) {
|
if (currentValue is DataState.Success) {
|
||||||
@@ -93,6 +66,7 @@ class EntriesViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun setQuery(query: String) {
|
fun setQuery(query: String) {
|
||||||
|
shouldSelectAll = true
|
||||||
currentQuery.value = query
|
currentQuery.value = query
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import android.view.View
|
|||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
|
import androidx.navigation.fragment.findNavController
|
||||||
import com.rtbishop.look4sat.R
|
import com.rtbishop.look4sat.R
|
||||||
import com.rtbishop.look4sat.databinding.FragmentMapBinding
|
import com.rtbishop.look4sat.databinding.FragmentMapBinding
|
||||||
import com.rtbishop.look4sat.domain.predict.GeoPos
|
import com.rtbishop.look4sat.domain.predict.GeoPos
|
||||||
@@ -82,6 +83,7 @@ class MapFragment : Fragment(R.layout.fragment_map) {
|
|||||||
overlays.addAll(Array(4) { FolderOverlay() })
|
overlays.addAll(Array(4) { FolderOverlay() })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
binding.mapBack.setOnClickListener { findNavController().navigateUp() }
|
||||||
binding.mapBtnPrev.setOnClickListener { viewModel.scrollSelection(true) }
|
binding.mapBtnPrev.setOnClickListener { viewModel.scrollSelection(true) }
|
||||||
binding.mapBtnNext.setOnClickListener { viewModel.scrollSelection(false) }
|
binding.mapBtnNext.setOnClickListener { viewModel.scrollSelection(false) }
|
||||||
setupObservers(binding)
|
setupObservers(binding)
|
||||||
|
|||||||
@@ -41,15 +41,6 @@ import java.util.*
|
|||||||
class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesClickListener {
|
class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesClickListener {
|
||||||
|
|
||||||
private val passesViewModel: PassesViewModel by viewModels()
|
private val passesViewModel: PassesViewModel by viewModels()
|
||||||
// private val permReqContract = ActivityResultContracts.RequestMultiplePermissions()
|
|
||||||
// private val locPermFine = Manifest.permission.ACCESS_FINE_LOCATION
|
|
||||||
// private val locPermCoarse = Manifest.permission.ACCESS_COARSE_LOCATION
|
|
||||||
// private val locPermReq = registerForActivityResult(permReqContract) { permissions ->
|
|
||||||
// when {
|
|
||||||
// permissions[locPermFine] == true -> passesViewModel.triggerInitialSetup()
|
|
||||||
// permissions[locPermCoarse] == true -> passesViewModel.triggerInitialSetup()
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
@@ -85,9 +76,6 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
|
|||||||
passesViewModel.passes.observe(viewLifecycleOwner, { passesResult ->
|
passesViewModel.passes.observe(viewLifecycleOwner, { passesResult ->
|
||||||
handleNewPasses(passesResult, passesAdapter, binding)
|
handleNewPasses(passesResult, passesAdapter, binding)
|
||||||
})
|
})
|
||||||
passesViewModel.isFirstLaunchDone.observe(viewLifecycleOwner, { setupDone ->
|
|
||||||
// if (!setupDone) locPermReq.launch(arrayOf(locPermFine, locPermCoarse))
|
|
||||||
})
|
|
||||||
getNavResult<Pair<Int, Double>>(R.id.nav_passes, "prefs") { prefs ->
|
getNavResult<Pair<Int, Double>>(R.id.nav_passes, "prefs") { prefs ->
|
||||||
passesViewModel.forceCalculation(prefs.first, prefs.second)
|
passesViewModel.forceCalculation(prefs.first, prefs.second)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,10 +38,8 @@ class PassesViewModel @Inject constructor(
|
|||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
|
|
||||||
private val _passes = MutableLiveData<DataState<List<SatPass>>>()
|
private val _passes = MutableLiveData<DataState<List<SatPass>>>()
|
||||||
private val _isFirstLaunchDone = MutableLiveData<Boolean>()
|
|
||||||
private var passesProcessing: Job? = null
|
private var passesProcessing: Job? = null
|
||||||
val passes: LiveData<DataState<List<SatPass>>> = _passes
|
val passes: LiveData<DataState<List<SatPass>>> = _passes
|
||||||
val isFirstLaunchDone: LiveData<Boolean> = _isFirstLaunchDone
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
if (preferences.getSetupDone()) {
|
if (preferences.getSetupDone()) {
|
||||||
@@ -54,8 +52,6 @@ class PassesViewModel @Inject constructor(
|
|||||||
val minElev = preferences.getMinElevation()
|
val minElev = preferences.getMinElevation()
|
||||||
predictor.triggerCalculation(satellites, stationPos, timeNow, hoursAhead, minElev)
|
predictor.triggerCalculation(satellites, stationPos, timeNow, hoursAhead, minElev)
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
_isFirstLaunchDone.value = false
|
|
||||||
}
|
}
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
predictor.passes.collect { passes ->
|
predictor.passes.collect { passes ->
|
||||||
@@ -65,22 +61,6 @@ class PassesViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun triggerInitialSetup() {
|
|
||||||
// preferences.updatePositionFromGPS()
|
|
||||||
viewModelScope.launch {
|
|
||||||
// _passes.postValue(DataState.Loading)
|
|
||||||
// val satellites = dataRepository.getSelectedSatellites()
|
|
||||||
// val stationPos = preferences.loadStationPosition()
|
|
||||||
// val hoursAhead = preferences.getHoursAhead()
|
|
||||||
// val minElev = preferences.getMinElevation()
|
|
||||||
// dataRepository.updateDataFromWeb()
|
|
||||||
// dataRepository.updateSelection(isSelected = true)
|
|
||||||
// predictor.forceCalculation(satellites, stationPos, Date().time, hoursAhead, minElev)
|
|
||||||
// preferences.setSetupDone()
|
|
||||||
_isFirstLaunchDone.value = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun forceCalculation(
|
fun forceCalculation(
|
||||||
hoursAhead: Int = preferences.getHoursAhead(),
|
hoursAhead: Int = preferences.getHoursAhead(),
|
||||||
minElevation: Double = preferences.getMinElevation(),
|
minElevation: Double = preferences.getMinElevation(),
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
<item name="android:textColorPrimary">@color/themeLight</item>
|
<item name="android:textColorPrimary">@color/themeLight</item>
|
||||||
<item name="android:statusBarColor">@color/surfaceStatusbar</item>
|
<item name="android:statusBarColor">@color/surfaceStatusbar</item>
|
||||||
<item name="android:windowBackground">@color/surfaceBg</item>
|
<item name="android:windowBackground">@color/surfaceBg</item>
|
||||||
<item name="android:navigationBarColor">@color/surfaceToolbar</item>
|
<item name="android:navigationBarColor">@color/surfaceStatusbar</item>
|
||||||
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
|
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -8,14 +8,14 @@ buildscript {
|
|||||||
lifecycle_version = '2.4.0'
|
lifecycle_version = '2.4.0'
|
||||||
navigation_version = '2.3.5'
|
navigation_version = '2.3.5'
|
||||||
preference_version = '1.1.1'
|
preference_version = '1.1.1'
|
||||||
room_version = '2.4.0'
|
room_version = '2.4.1'
|
||||||
hilt_version = '2.40.5'
|
hilt_version = '2.40.5'
|
||||||
json_version = '20211205'
|
json_version = '20211205'
|
||||||
osmdroid_version = '6.1.11'
|
osmdroid_version = '6.1.11'
|
||||||
timber_version = '5.0.1'
|
timber_version = '5.0.1'
|
||||||
junit_version = '4.13.2'
|
junit_version = '4.13.2'
|
||||||
mockito_version = '4.2.0'
|
mockito_version = '4.2.0'
|
||||||
leak_canary_version = '2.8'
|
leak_canary_version = '2.8.1'
|
||||||
}
|
}
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
|
|||||||
Reference in new issue
Block a user