diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/EntriesFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/EntriesFragment.kt index 75f53e8a..23fff787 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/EntriesFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/EntriesFragment.kt @@ -9,13 +9,13 @@ import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager +import com.google.android.material.snackbar.Snackbar import com.rtbishop.look4sat.R import com.rtbishop.look4sat.SharedViewModel import com.rtbishop.look4sat.data.SatEntry import com.rtbishop.look4sat.databinding.FragmentEntriesBinding import com.rtbishop.look4sat.ui.adapters.EntriesAdapter import com.rtbishop.look4sat.utility.RecyclerDivider -import com.rtbishop.look4sat.utility.Utilities.snack import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint @@ -68,7 +68,8 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) { event.getContentIfNotHandled()?.let { if (it == 0) setLoading() else if (it == 1) { - getString(R.string.entries_update_error).snack(requireView()) + val errorMsg = getString(R.string.entries_update_error) + Snackbar.make(requireView(), errorMsg, Snackbar.LENGTH_SHORT).show() setError() } } diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PrefsFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PrefsFragment.kt index 6d23ab25..47a46f42 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PrefsFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/fragments/PrefsFragment.kt @@ -19,21 +19,27 @@ package com.rtbishop.look4sat.ui.fragments +import android.Manifest +import android.content.pm.PackageManager import android.location.LocationManager import android.os.Bundle import android.view.View +import androidx.core.content.ContextCompat import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat +import com.google.android.material.snackbar.Snackbar import com.rtbishop.look4sat.R import com.rtbishop.look4sat.utility.PrefsManager import com.rtbishop.look4sat.utility.Utilities.round -import com.rtbishop.look4sat.utility.Utilities.snack import dagger.hilt.android.AndroidEntryPoint import javax.inject.Inject @AndroidEntryPoint class PrefsFragment : PreferenceFragmentCompat() { + private val locPermReqCode = 1000 + private val locPermString = Manifest.permission.ACCESS_FINE_LOCATION + @Inject lateinit var locationManager: LocationManager @@ -56,19 +62,30 @@ class PrefsFragment : PreferenceFragmentCompat() { } private fun setPositionFromGPS() { - try { + val locPermResult = ContextCompat.checkSelfPermission(requireContext(), locPermString) + if (locPermResult == PackageManager.PERMISSION_GRANTED) { val location = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER) if (location != null) { val latitude = location.latitude.round(4) val longitude = location.longitude.round(4) val altitude = location.altitude.round(1) prefsManager.setStationPosition(latitude, longitude, altitude) - getString(R.string.pref_pos_gps_success).snack(requireView()) - } else { - getString(R.string.pref_pos_gps_null).snack(requireView()) - } - } catch (e: SecurityException) { - getString(R.string.pref_pos_gps_error).snack(requireView()) + showSnack(getString(R.string.pref_pos_gps_success)) + } else showSnack(getString(R.string.pref_pos_gps_null)) + } else requestPermissions(arrayOf(locPermString), locPermReqCode) + } + + private fun showSnack(message: String) { + Snackbar.make(requireView(), message, Snackbar.LENGTH_SHORT) + .setAnchorView(R.id.nav_bottom) + .show() + } + + override fun onRequestPermissionsResult(code: Int, perms: Array, result: IntArray) { + if (code == locPermReqCode) { + if (result.isNotEmpty() && result[0] == PackageManager.PERMISSION_GRANTED) { + setPositionFromGPS() + } else showSnack(getString(R.string.pref_pos_gps_error)) } } } diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/splash/SplashActivity.kt b/app/src/main/java/com/rtbishop/look4sat/ui/splash/SplashActivity.kt index 269d4e8f..69512a1d 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/splash/SplashActivity.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/splash/SplashActivity.kt @@ -52,6 +52,7 @@ class SplashActivity : FragmentActivity() { private fun startMainActivity() { startActivity(Intent(this, MainActivity::class.java)) + finish() } private inner class SplashPagerAdapter(activity: FragmentActivity) : diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/Utilities.kt b/app/src/main/java/com/rtbishop/look4sat/utility/Utilities.kt index 764ddbed..dfb232d9 100644 --- a/app/src/main/java/com/rtbishop/look4sat/utility/Utilities.kt +++ b/app/src/main/java/com/rtbishop/look4sat/utility/Utilities.kt @@ -17,10 +17,6 @@ object Utilities { return String.format(format, hours, minutes, seconds) } - fun String.snack(view: View) { - Snackbar.make(view, this, Snackbar.LENGTH_SHORT).show() - } - fun Double.round(decimals: Int): Double { var multiplier = 1.0 repeat(decimals) { multiplier *= 10 } diff --git a/app/src/main/res/drawable/ic_check.xml b/app/src/main/res/drawable/ic_check.xml index 0432fa69..c0b2060a 100644 --- a/app/src/main/res/drawable/ic_check.xml +++ b/app/src/main/res/drawable/ic_check.xml @@ -2,9 +2,8 @@ android:width="24dp" android:height="24dp" android:viewportWidth="24" - android:viewportHeight="24" - android:tint="?attr/colorControlNormal"> - + android:viewportHeight="24"> +