From 1824cd8af059565a272143e9ec4a7482f921098b Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Sat, 25 Apr 2020 15:39:40 +0100 Subject: [PATCH] Further cleanup and refactoring --- .../java/com/rtbishop/look4sat/data/Result.kt | 7 ++ .../look4sat/network/RemoteDataSource.kt | 16 ++--- .../look4sat/repo/DefaultRepository.kt | 23 ++---- .../com/rtbishop/look4sat/ui/MainActivity.kt | 44 +++++++++--- .../rtbishop/look4sat/ui/SharedViewModel.kt | 72 +++++++++++-------- .../look4sat/ui/adapters/SatPassAdapter.kt | 21 ++---- .../look4sat/ui/fragments/MapViewFragment.kt | 29 ++++++-- .../look4sat/ui/fragments/PassListFragment.kt | 34 +++++---- .../ui/fragments/PolarViewFragment.kt | 54 +++++++++----- .../rtbishop/look4sat/utility/PrefsManager.kt | 20 +----- app/src/main/res/values-ru/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 12 files changed, 184 insertions(+), 138 deletions(-) create mode 100644 app/src/main/java/com/rtbishop/look4sat/data/Result.kt diff --git a/app/src/main/java/com/rtbishop/look4sat/data/Result.kt b/app/src/main/java/com/rtbishop/look4sat/data/Result.kt new file mode 100644 index 00000000..099f0ad7 --- /dev/null +++ b/app/src/main/java/com/rtbishop/look4sat/data/Result.kt @@ -0,0 +1,7 @@ +package com.rtbishop.look4sat.data + +sealed class Result { + data class Success(val data: T) : Result() + data class Error(val exception: Exception) : Result() + object InProgress : Result() +} \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/look4sat/network/RemoteDataSource.kt b/app/src/main/java/com/rtbishop/look4sat/network/RemoteDataSource.kt index 259548c4..1c949d8f 100644 --- a/app/src/main/java/com/rtbishop/look4sat/network/RemoteDataSource.kt +++ b/app/src/main/java/com/rtbishop/look4sat/network/RemoteDataSource.kt @@ -19,13 +19,11 @@ package com.rtbishop.look4sat.network -import android.util.Log import com.rtbishop.look4sat.data.Transmitter import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import okhttp3.OkHttpClient import okhttp3.Request -import java.io.IOException import java.io.InputStream import java.io.SequenceInputStream import java.util.* @@ -38,16 +36,12 @@ class RemoteDataSource @Inject constructor( override suspend fun fetchTleStream(urlList: List): InputStream { val streamTable = Hashtable() - try { - withContext(Dispatchers.IO) { - urlList.forEach { - val request = Request.Builder().url(it).build() - val stream = client.newCall(request).execute().body()?.byteStream() - streamTable[it] = stream - } + withContext(Dispatchers.IO) { + urlList.forEach { + val request = Request.Builder().url(it).build() + val stream = client.newCall(request).execute().body()?.byteStream() + streamTable[it] = stream } - } catch (e: IOException) { - Log.w("remoteDataSource", e.toString()) } return SequenceInputStream(streamTable.elements()) } diff --git a/app/src/main/java/com/rtbishop/look4sat/repo/DefaultRepository.kt b/app/src/main/java/com/rtbishop/look4sat/repo/DefaultRepository.kt index 67e0a6c7..fd9ce80a 100644 --- a/app/src/main/java/com/rtbishop/look4sat/repo/DefaultRepository.kt +++ b/app/src/main/java/com/rtbishop/look4sat/repo/DefaultRepository.kt @@ -19,7 +19,6 @@ package com.rtbishop.look4sat.repo -import android.util.Log import com.github.amsacode.predict4java.TLE import com.rtbishop.look4sat.data.SatEntry import com.rtbishop.look4sat.data.Transmitter @@ -27,7 +26,6 @@ import com.rtbishop.look4sat.network.RemoteSource import com.rtbishop.look4sat.persistence.LocalSource import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext -import java.io.IOException import javax.inject.Inject class DefaultRepository @Inject constructor( @@ -35,18 +33,12 @@ class DefaultRepository @Inject constructor( private val remoteSource: RemoteSource ) : Repository { - private val tag = "defaultRepository" - override suspend fun updateEntriesFrom(urlList: List) { val stream = remoteSource.fetchTleStream(urlList) - try { - withContext(Dispatchers.IO) { - val tleList = TLE.importSat(stream) - val entries = tleList.map { SatEntry(it) } - localSource.insertEntries(entries) - } - } catch (e: Exception) { - Log.w(tag, e.toString()) + withContext(Dispatchers.IO) { + val tleList = TLE.importSat(stream) + val entries = tleList.map { SatEntry(it) } + localSource.insertEntries(entries) } } @@ -65,12 +57,7 @@ class DefaultRepository @Inject constructor( //////////////////////////////////////////////////////////////////////////////////////////////// override suspend fun updateTransmitters() { - try { - val list = remoteSource.fetchTransmitters() - localSource.insertTransmitters(list) - } catch (e: IOException) { - Log.w(tag, e.toString()) - } + localSource.insertTransmitters(remoteSource.fetchTransmitters()) } override suspend fun getTransmittersByCatNum(catNum: Int): List { diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt b/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt index 6ce5dea3..fde42c16 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt @@ -43,6 +43,7 @@ import androidx.navigation.ui.setupWithNavController import com.rtbishop.look4sat.Look4SatApp import com.rtbishop.look4sat.R import com.rtbishop.look4sat.dagger.ViewModelFactory +import com.rtbishop.look4sat.data.Result import com.rtbishop.look4sat.databinding.ActivityMainBinding import com.rtbishop.look4sat.databinding.DrawerHeaderBinding import kotlinx.coroutines.delay @@ -54,7 +55,6 @@ class MainActivity : AppCompatActivity() { private val permLocationCode = 101 private val permLocation = Manifest.permission.ACCESS_FINE_LOCATION private val permGranted = PackageManager.PERMISSION_GRANTED - private val githubUrl = "https://github.com/rt-bishop/LookingSat" @Inject lateinit var viewModelFactory: ViewModelFactory @@ -116,14 +116,32 @@ class MainActivity : AppCompatActivity() { } private fun setupObservers() { - viewModel.getGSP().observe(this, Observer { gsp -> - drawerBinding.drawerLatValue.text = - String.format(getString(R.string.pat_location), gsp.latitude) - drawerBinding.drawerLonValue.text = - String.format(getString(R.string.pat_location), gsp.longitude) + viewModel.getGSP().observe(this, Observer { result -> + when (result) { + is Result.Success -> { + drawerBinding.drawerLatValue.text = + String.format(getString(R.string.pat_location), result.data.latitude) + drawerBinding.drawerLonValue.text = + String.format(getString(R.string.pat_location), result.data.longitude) + } + is Result.Error -> { + when (result.exception) { + is SecurityException -> toast(getString(R.string.err_no_permissions)) + is IllegalArgumentException -> toast(getString(R.string.update_loc_failure)) + } + } + } }) - viewModel.getDebugMessage().observe(this, Observer { message -> - Toast.makeText(this, message, Toast.LENGTH_SHORT).show() + viewModel.getUpdateStatus().observe(this, Observer { result -> + when (result) { + is Result.Success -> { + when (result.data) { + 0 -> toast(getString(R.string.update_tle_success)) + 1 -> toast(getString(R.string.update_trans_success)) + } + } + is Result.Error -> toast(getString(R.string.update_failure)) + } }) } @@ -141,12 +159,17 @@ class MainActivity : AppCompatActivity() { it.lockButton() } drawerBinding.drawerBtnGithub.setOnClickListener { - val githubIntent = Intent(Intent.ACTION_VIEW, Uri.parse(githubUrl)) + val gitHubUrl = "https://github.com/rt-bishop/LookingSat" + val githubIntent = Intent(Intent.ACTION_VIEW, Uri.parse(gitHubUrl)) startActivity(githubIntent) } drawerBinding.drawerBtnExit.setOnClickListener { finish() } } + private fun toast(message: String) { + Toast.makeText(this, message, Toast.LENGTH_SHORT).show() + } + private fun View.lockButton() { lifecycleScope.launch { this@lockButton.isEnabled = false @@ -158,8 +181,7 @@ class MainActivity : AppCompatActivity() { private fun requestLocationUpdate() { if (ContextCompat.checkSelfPermission(this, permLocation) != permGranted) { if (ActivityCompat.shouldShowRequestPermissionRationale(this, permLocation)) { - Toast.makeText(this, getString(R.string.err_no_permissions), Toast.LENGTH_LONG) - .show() + toast(getString(R.string.err_no_permissions)) } else { ActivityCompat.requestPermissions(this, arrayOf(permLocation), permLocationCode) } diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt index c2b2ee82..281d7e9a 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt @@ -19,8 +19,10 @@ package com.rtbishop.look4sat.ui +import android.location.LocationManager import androidx.lifecycle.* import com.github.amsacode.predict4java.GroundStationPosition +import com.rtbishop.look4sat.data.Result import com.rtbishop.look4sat.data.SatEntry import com.rtbishop.look4sat.data.SatPass import com.rtbishop.look4sat.repo.Repository @@ -39,55 +41,70 @@ class SharedViewModel @Inject constructor( private val repository: Repository ) : ViewModel() { + private val _satPassList = MutableLiveData>>() + private val _updateStatus = MutableLiveData>() + private val _gsp = MutableLiveData>().apply { + value = Result.Success(prefsManager.getPosition()) + } private val urlList = listOf("https://celestrak.com/NORAD/elements/active.txt") - private val _gsp = MutableLiveData(prefsManager.getPosition()) - private val _satPassList = MutableLiveData>() - private val _isListRefreshing = MutableLiveData() - private val _debugMessage = MutableLiveData() private var calculationJob: Job? = null var isFirstLaunch = true fun getTransmittersForSat(id: Int) = liveData { emit(repository.getTransmittersByCatNum(id)) } - fun getGSP(): LiveData = _gsp - fun getSatPassList(): LiveData> = _satPassList - fun getRefreshing(): LiveData = _isListRefreshing - fun getDebugMessage(): LiveData = _debugMessage + fun getPassList(): LiveData>> = _satPassList + fun getUpdateStatus(): LiveData> = _updateStatus + fun getGSP(): LiveData> = _gsp + fun getRefreshRate() = prefsManager.getRefreshRate() fun getHoursAhead() = prefsManager.getHoursAhead() fun getMinElevation() = prefsManager.getMinElevation() - - suspend fun getAllEntries(): List { - return repository.getAllEntries() - } + fun setPositionFromPref() = _gsp.postValue(Result.Success(prefsManager.getPosition())) + suspend fun getAllEntries() = repository.getAllEntries() fun setPassPrefs(hoursAhead: Int, minEl: Double) { prefsManager.setHoursAhead(hoursAhead) prefsManager.setMinElevation(minEl) } - fun setPositionFromPref() = _gsp.postValue(prefsManager.getPosition()) - fun updatePosition() { - prefsManager.getLastKnownPosition().let { - prefsManager.setPosition(it) - _gsp.postValue(it) - _debugMessage.postValue("Location was updated") + val provider = LocationManager.PASSIVE_PROVIDER + try { + val location = prefsManager.locationManager.getLastKnownLocation(provider) + location.let { + if (it == null) { + _gsp.postValue(Result.Error(IllegalArgumentException())) + } else { + val gsp = GroundStationPosition(it.latitude, it.longitude, it.altitude) + prefsManager.setPosition(gsp) + _gsp.postValue(Result.Success(gsp)) + } + } + } catch (e: SecurityException) { + _gsp.postValue(Result.Error(e)) } } fun updateEntries() { viewModelScope.launch(Dispatchers.IO) { - val selected = repository.getSelectedEntries().map { it.catNum } - repository.updateEntriesFrom(urlList) - repository.updateEntriesSelection(selected) - _debugMessage.postValue("TLE file was updated") + try { + val selected = repository.getSelectedEntries().map { it.catNum } + repository.updateEntriesFrom(urlList) + repository.updateEntriesSelection(selected) + _updateStatus.postValue(Result.Success(0)) + } catch (e: Exception) { + _updateStatus.postValue(Result.Error(e)) + } } } fun updateTransmitters() { viewModelScope.launch(Dispatchers.IO) { - repository.updateTransmitters() - _debugMessage.postValue("Transceivers database was updated") + try { + repository.updateTransmitters() + _updateStatus.postValue(Result.Success(1)) + } catch (e: Exception) { + _updateStatus.postValue(Result.Error(e)) + } } } @@ -99,18 +116,17 @@ class SharedViewModel @Inject constructor( } fun calculatePasses() { - _isListRefreshing.postValue(true) + _satPassList.postValue(Result.InProgress) calculationJob?.cancel() var passList = mutableListOf() val dateNow = Date() - val gsp = getGSP().value ?: GroundStationPosition(0.0, 0.0, 0.0) + val gsp = prefsManager.getPosition() calculationJob = viewModelScope.launch(Dispatchers.Default) { repository.getSelectedEntries().forEach { passList.addAll(getPassesForEntries(it, dateNow, gsp)) } passList = filterAndSortPasses(passList, dateNow, getHoursAhead()) - _satPassList.postValue(passList) - _isListRefreshing.postValue(false) + _satPassList.postValue(Result.Success(passList)) } } diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/adapters/SatPassAdapter.kt b/app/src/main/java/com/rtbishop/look4sat/ui/adapters/SatPassAdapter.kt index 27c73824..682582df 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/adapters/SatPassAdapter.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/adapters/SatPassAdapter.kt @@ -29,16 +29,13 @@ import com.rtbishop.look4sat.R import com.rtbishop.look4sat.data.SatPass import com.rtbishop.look4sat.databinding.ItemPassGeoBinding import com.rtbishop.look4sat.databinding.ItemPassLeoBinding -import com.rtbishop.look4sat.ui.SharedViewModel import com.rtbishop.look4sat.ui.fragments.PassListFragmentDirections import java.text.SimpleDateFormat import java.util.* -class SatPassAdapter(val viewModel: SharedViewModel) : +class SatPassAdapter(private var satPassList: MutableList) : RecyclerView.Adapter() { - private var satPassList = mutableListOf() - fun setList(list: MutableList) { satPassList = list notifyDataSetChanged() @@ -123,11 +120,9 @@ class SatPassAdapter(val viewModel: SharedViewModel) : binding.passLeoProgress.progress = satPass.progress itemView.setOnClickListener { - viewModel.getSatPassList().value?.let { - val satPassIndex = it.indexOf(satPass) - val action = PassListFragmentDirections.actionPassToPolar(satPassIndex) - itemView.findNavController().navigate(action) - } + val passIndex = satPassList.indexOf(satPass) + val action = PassListFragmentDirections.actionPassToPolar(passIndex) + itemView.findNavController().navigate(action) } } } @@ -148,11 +143,9 @@ class SatPassAdapter(val viewModel: SharedViewModel) : String.format(context.getString(R.string.pat_elevation), satPass.pass.maxEl) itemView.setOnClickListener { - viewModel.getSatPassList().value?.let { - val satPassIndex = it.indexOf(satPass) - val action = PassListFragmentDirections.actionPassToPolar(satPassIndex) - itemView.findNavController().navigate(action) - } + val passIndex = satPassList.indexOf(satPass) + val action = PassListFragmentDirections.actionPassToPolar(passIndex) + itemView.findNavController().navigate(action) } } } diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/MapViewFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/MapViewFragment.kt index 7b5890a3..e3de7d2d 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/MapViewFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/MapViewFragment.kt @@ -36,6 +36,7 @@ import com.github.amsacode.predict4java.TLE import com.rtbishop.look4sat.Look4SatApp import com.rtbishop.look4sat.R import com.rtbishop.look4sat.dagger.ViewModelFactory +import com.rtbishop.look4sat.data.Result import com.rtbishop.look4sat.data.SatPass import com.rtbishop.look4sat.databinding.FragmentMapViewBinding import com.rtbishop.look4sat.ui.MainActivity @@ -56,8 +57,8 @@ class MapViewFragment : Fragment(R.layout.fragment_map_view) { private lateinit var mapView: MapView private lateinit var predictor: PassPredictor private lateinit var selectedSat: TLE - private lateinit var gsp: GroundStationPosition - private lateinit var satPassList: List + private var gsp = GroundStationPosition(0.0, 0.0, 0.0) + private var satPassList = emptyList() private var checkedItem = 0 override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -66,9 +67,29 @@ class MapViewFragment : Fragment(R.layout.fragment_map_view) { mainActivity = activity as MainActivity (mainActivity.application as Look4SatApp).appComponent.inject(this) viewModel = ViewModelProvider(mainActivity, modelFactory).get(SharedViewModel::class.java) - gsp = viewModel.getGSP().value ?: GroundStationPosition(0.0, 0.0, 0.0) - satPassList = viewModel.getSatPassList().value ?: emptyList() + setupObservers(binding) + } + private fun setupObservers(binding: FragmentMapViewBinding) { + viewModel.getGSP().observe(viewLifecycleOwner, androidx.lifecycle.Observer { result -> + when (result) { + is Result.Success -> { + gsp = result.data + } + } + }) + + viewModel.getPassList().observe(viewLifecycleOwner, androidx.lifecycle.Observer { result -> + when (result) { + is Result.Success -> { + satPassList = result.data + setupMapView(binding) + } + } + }) + } + + private fun setupMapView(binding: FragmentMapViewBinding) { if (satPassList.isNotEmpty()) { satPassList = satPassList.distinctBy { it.tle } satPassList = satPassList.sortedBy { it.tle.name } diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassListFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassListFragment.kt index 04721e59..e941ac0b 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassListFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PassListFragment.kt @@ -36,6 +36,7 @@ import androidx.recyclerview.widget.SimpleItemAnimator import com.rtbishop.look4sat.Look4SatApp import com.rtbishop.look4sat.R import com.rtbishop.look4sat.dagger.ViewModelFactory +import com.rtbishop.look4sat.data.Result import com.rtbishop.look4sat.data.SatEntry import com.rtbishop.look4sat.data.SatPass import com.rtbishop.look4sat.databinding.FragmentPassListBinding @@ -66,7 +67,7 @@ class PassListFragment : Fragment(R.layout.fragment_pass_list) { mainActivity = activity as MainActivity (mainActivity.application as Look4SatApp).appComponent.inject(this) viewModel = ViewModelProvider(mainActivity, modelFactory).get(SharedViewModel::class.java) - satPassAdapter = SatPassAdapter(viewModel) + satPassAdapter = SatPassAdapter(satPassList) aosTimerText = mainActivity.findViewById(R.id.toolbar_timer) btnPassPrefs = mainActivity.findViewById(R.id.toolbar_filter) @@ -80,20 +81,25 @@ class PassListFragment : Fragment(R.layout.fragment_pass_list) { } private fun setupObservers(binding: FragmentPassListBinding) { - viewModel.getSatPassList().observe(viewLifecycleOwner, Observer { - satPassList = it - satPassAdapter.setList(satPassList) - if (satPassList.isNotEmpty()) { - binding.layoutInfo.visibility = View.INVISIBLE - binding.recPassList.visibility = View.VISIBLE - } else { - binding.layoutInfo.visibility = View.VISIBLE - binding.recPassList.visibility = View.INVISIBLE + viewModel.getPassList().observe(viewLifecycleOwner, Observer { result -> + when (result) { + is Result.Success -> { + satPassList = result.data + satPassAdapter.setList(satPassList) + if (satPassList.isNotEmpty()) { + binding.layoutInfo.visibility = View.INVISIBLE + binding.recPassList.visibility = View.VISIBLE + } else { + binding.layoutInfo.visibility = View.VISIBLE + binding.recPassList.visibility = View.INVISIBLE + } + setTimer() + binding.refLayoutPassList.isRefreshing = false + } + is Result.InProgress -> { + binding.refLayoutPassList.isRefreshing = true + } } - setTimer() - }) - viewModel.getRefreshing().observe(viewLifecycleOwner, Observer { - binding.refLayoutPassList.isRefreshing = it }) } diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PolarViewFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PolarViewFragment.kt index 2c60db66..45918ff1 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PolarViewFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PolarViewFragment.kt @@ -35,6 +35,7 @@ import com.github.amsacode.predict4java.SatPos import com.rtbishop.look4sat.Look4SatApp import com.rtbishop.look4sat.R import com.rtbishop.look4sat.dagger.ViewModelFactory +import com.rtbishop.look4sat.data.Result import com.rtbishop.look4sat.data.SatPass import com.rtbishop.look4sat.databinding.FragmentPolarViewBinding import com.rtbishop.look4sat.ui.MainActivity @@ -71,25 +72,40 @@ class PolarViewFragment : Fragment(R.layout.fragment_polar_view) { adapter = transmitterAdapter } - viewModel.getSatPassList() - .observe(viewLifecycleOwner, androidx.lifecycle.Observer { mutableList -> - satPass = mutableList[args.satPassIndex] - mainActivity.supportActionBar?.title = satPass.tle.name - polarView = PolarView(mainActivity, refreshRate, binding) - binding.framePolar.addView(polarView) - refreshView() - viewModel.getTransmittersForSat(satPass.tle.catnum) - .observe(viewLifecycleOwner, androidx.lifecycle.Observer { - if (it.isNotEmpty()) { - transmitterAdapter.setList(it) - transmitterAdapter.notifyDataSetChanged() - binding.recPolar.visibility = View.VISIBLE - binding.tvPolarNoTrans.visibility = View.INVISIBLE - } else { - binding.recPolar.visibility = View.INVISIBLE - binding.tvPolarNoTrans.visibility = View.VISIBLE - } - }) + observePasses(refreshRate, binding) + } + + private fun observePasses( + refreshRate: Long, + binding: FragmentPolarViewBinding + ) { + viewModel.getPassList() + .observe(viewLifecycleOwner, androidx.lifecycle.Observer { result -> + when (result) { + is Result.Success -> { + satPass = result.data[args.satPassIndex] + mainActivity.supportActionBar?.title = satPass.tle.name + polarView = PolarView(mainActivity, refreshRate, binding) + binding.framePolar.addView(polarView) + observeTransmitters(binding) + refreshView() + } + } + }) + } + + private fun observeTransmitters(binding: FragmentPolarViewBinding) { + viewModel.getTransmittersForSat(satPass.tle.catnum) + .observe(viewLifecycleOwner, androidx.lifecycle.Observer { + if (it.isNotEmpty()) { + transmitterAdapter.setList(it) + transmitterAdapter.notifyDataSetChanged() + binding.recPolar.visibility = View.VISIBLE + binding.tvPolarNoTrans.visibility = View.INVISIBLE + } else { + binding.recPolar.visibility = View.INVISIBLE + binding.tvPolarNoTrans.visibility = View.VISIBLE + } }) } diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt b/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt index c43d2e6f..9a49b509 100644 --- a/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt +++ b/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt @@ -21,16 +21,14 @@ package com.rtbishop.look4sat.utility import android.content.SharedPreferences import android.location.LocationManager -import android.util.Log import androidx.core.content.edit import com.github.amsacode.predict4java.GroundStationPosition import javax.inject.Inject class PrefsManager @Inject constructor( private val preferences: SharedPreferences, - private val locationManager: LocationManager + val locationManager: LocationManager ) { - private val tag = "prefsManager" private val keyHoursAhead = "hoursAhead" private val keyMinElevation = "minEl" private val keyLatitude = "latitude" @@ -91,22 +89,6 @@ class PrefsManager @Inject constructor( } } - fun getLastKnownPosition(): GroundStationPosition { - val provider = LocationManager.PASSIVE_PROVIDER - var gsp = GroundStationPosition(0.0, 0.0, 0.0) - return try { - val location = locationManager.getLastKnownLocation(provider) - location?.let { - gsp = - GroundStationPosition(it.latitude, it.longitude, it.altitude) - } - gsp - } catch (e: SecurityException) { - Log.w(tag, "No permissions") - gsp - } - } - private fun SharedPreferences.Editor.putDouble(key: String, double: Double) { putLong(key, double.toRawBits()) } diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 849bfe1c..4e573830 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -145,4 +145,5 @@ Все/Нет СТЦ + Проверьте ваши настройки GPS diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 530af984..bc8f1b54 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -27,6 +27,7 @@ Update location Location was updated + Check your Location settings Update TLE file TLE file was updated Update transceivers