Added station location entry from QTH locator

This commit is contained in:
Arty Bishop committed 2020-11-20 12:37:15 +00:00
1 parent 328810fccf
commit e391ef6109
5 files changed
+35 -4

No files matched your search

@@ -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<Preference>(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)
}
@@ -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"
}
+3 -1
View File
@@ -54,9 +54,11 @@
<string name="pref_gsp_title">Местоположение наземной станции</string>
<string name="pref_pos_gps">Установить позицию по данным GPS</string>
<string name="pref_pos_gps_success">Позиция успешно обновлена</string>
<string name="pref_pos_gps_null">Местоположение отключено</string>
<string name="pref_pos_gps_error">Нет разрешения использовать геоданные</string>
<string name="pref_pos_qth">Установить позицию по локатору QTH</string>
<string name="pref_pos_qth_error">Неправильный локатор QTH</string>
<string name="pref_pos_success">Позиция успешно обновлена</string>
<string name="pref_pass_title">Настройки пролетов спутников</string>
<string name="pref_hours_title">Количество часов</string>
<string name="pref_elev_title">Минимальная элевация</string>
+4 -2
View File
@@ -72,10 +72,12 @@
<string name="pat_osm_vel">Vel: %.2f km/s</string>
<string name="pref_gsp_title">Ground station position</string>
<string name="pref_pos_gps">Set position from GPS</string>
<string name="pref_pos_gps_success">Position updated successfully</string>
<string name="pref_pos_gps">Set position from GPS data</string>
<string name="pref_pos_gps_null">Location is switched off</string>
<string name="pref_pos_gps_error">Check your location permissions</string>
<string name="pref_pos_qth">Set position from QTH locator</string>
<string name="pref_pos_qth_error">Invalid QTH locator</string>
<string name="pref_pos_success">Position updated successfully</string>
<string name="pref_pass_title">Satellite pass preferences</string>
<string name="pref_hours_title">Hours ahead</string>
<string name="pref_elev_title">Minimal elevation</string>
+4
View File
@@ -26,6 +26,10 @@
android:key="setPositionGPS"
android:title="@string/pref_pos_gps"
app:iconSpaceReserved="false" />
<EditTextPreference
android:key="setPositionQTH"
android:title="@string/pref_pos_qth"
app:iconSpaceReserved="false" />
</PreferenceCategory>
<PreferenceCategory
android:title="@string/pref_pass_title"