From e391ef61096385562b1987a0581f9bfd86844088 Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Fri, 20 Nov 2020 12:37:15 +0000 Subject: [PATCH] Added station location entry from QTH locator --- .../look4sat/ui/fragments/PrefsFragment.kt | 24 ++++++++++++++++++- .../rtbishop/look4sat/utility/PrefsManager.kt | 1 + app/src/main/res/values-ru/strings.xml | 4 +++- app/src/main/res/values/strings.xml | 6 +++-- app/src/main/res/xml/preference.xml | 4 ++++ 5 files changed, 35 insertions(+), 4 deletions(-) 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 47a46f42..82476430 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 @@ -30,6 +30,7 @@ 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 import com.rtbishop.look4sat.utility.Utilities.round import dagger.hilt.android.AndroidEntryPoint import javax.inject.Inject @@ -59,6 +60,27 @@ class PrefsFragment : PreferenceFragmentCompat() { return@setOnPreferenceClickListener true } } + + findPreference(PrefsManager.keyPositionQTH)?.apply { + setOnPreferenceChangeListener { _, newValue -> + setPositionFromQth(newValue.toString()) + } + } + } + + private fun setPositionFromQth(qthLocator: String): Boolean { + val qthPattern = "[A-X][A-X][0-9][0-9][a-x][a-x]".toRegex() + return if (qthLocator.matches(qthPattern)) { + val location = Utilities.qthToGSP(qthLocator) + val latitude = location.latitude.round(4) + val longitude = location.longitude.round(4) + prefsManager.setStationPosition(latitude, longitude, location.heightAMSL) + showSnack(getString(R.string.pref_pos_success)) + true + } else { + showSnack(getString(R.string.pref_pos_qth_error)) + false + } } private fun setPositionFromGPS() { @@ -70,7 +92,7 @@ class PrefsFragment : PreferenceFragmentCompat() { val longitude = location.longitude.round(4) val altitude = location.altitude.round(1) prefsManager.setStationPosition(latitude, longitude, altitude) - showSnack(getString(R.string.pref_pos_gps_success)) + showSnack(getString(R.string.pref_pos_success)) } else showSnack(getString(R.string.pref_pos_gps_null)) } else requestPermissions(arrayOf(locPermString), locPermReqCode) } 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 5450e4a8..d8b57f3e 100644 --- a/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt +++ b/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt @@ -36,6 +36,7 @@ class PrefsManager @Inject constructor(val preferences: SharedPreferences) { const val keyHoursAhead = "hoursAhead" const val keyMinElevation = "minElevation" const val keyPositionGPS = "setPositionGPS" + const val keyPositionQTH = "setPositionQTH" const val keyIsFirstLaunch = "isFirstLaunch" } diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 5c53f25f..e365f374 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -54,9 +54,11 @@ Местоположение наземной станции Установить позицию по данным GPS - Позиция успешно обновлена Местоположение отключено Нет разрешения использовать геоданные + Установить позицию по локатору QTH + Неправильный локатор QTH + Позиция успешно обновлена Настройки пролетов спутников Количество часов Минимальная элевация diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e15b8a62..ce49ea84 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -72,10 +72,12 @@ Vel: %.2f km/s Ground station position - Set position from GPS - Position updated successfully + Set position from GPS data Location is switched off Check your location permissions + Set position from QTH locator + Invalid QTH locator + Position updated successfully Satellite pass preferences Hours ahead Minimal elevation diff --git a/app/src/main/res/xml/preference.xml b/app/src/main/res/xml/preference.xml index c2089254..4eb97727 100644 --- a/app/src/main/res/xml/preference.xml +++ b/app/src/main/res/xml/preference.xml @@ -26,6 +26,10 @@ android:key="setPositionGPS" android:title="@string/pref_pos_gps" app:iconSpaceReserved="false" /> +