From e27224d9a8fc7520f2432fbecbd1aff0d0da4394 Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Sun, 18 Apr 2021 18:40:23 +0100 Subject: [PATCH] Added rotator ip address and port checks and error messages --- .../look4sat/ui/prefsScreen/PrefsFragment.kt | 27 +++++++++++++++++++ app/src/main/res/values-ru/strings.xml | 8 +++--- app/src/main/res/values/strings.xml | 2 ++ 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/prefsScreen/PrefsFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/prefsScreen/PrefsFragment.kt index 54a409cc..8ef263c6 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/prefsScreen/PrefsFragment.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/prefsScreen/PrefsFragment.kt @@ -21,9 +21,12 @@ import android.Manifest import android.content.pm.PackageManager import android.location.LocationManager import android.os.Bundle +import android.text.InputType +import android.util.Patterns import android.view.View import androidx.activity.result.contract.ActivityResultContracts import androidx.core.content.ContextCompat +import androidx.preference.EditTextPreference import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import com.google.android.material.snackbar.Snackbar @@ -72,6 +75,30 @@ class PrefsFragment : PreferenceFragmentCompat() { setPositionFromQth(newValue.toString()) } } + + findPreference(PrefsManager.keyRotatorAddress)?.apply { + setOnPreferenceChangeListener { _, newValue -> + if (Patterns.IP_ADDRESS.matcher(newValue.toString()).matches()) { + return@setOnPreferenceChangeListener true + } else { + showSnack(getString(R.string.tracking_rotator_address_invalid)) + return@setOnPreferenceChangeListener false + } + } + } + + findPreference(PrefsManager.keyRotatorPort)?.apply { + setOnBindEditTextListener { it.inputType = InputType.TYPE_CLASS_NUMBER } + setOnPreferenceChangeListener { _, newValue -> + val portValue = newValue.toString() + if (portValue.isNotEmpty() && portValue.toInt() in 1024..65535) { + return@setOnPreferenceChangeListener true + } else { + showSnack(getString(R.string.tracking_rotator_port_invalid)) + return@setOnPreferenceChangeListener false + } + } + } } private fun setPositionFromQth(qthString: String): Boolean { diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 7bb548af..abc37dc3 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -65,9 +65,11 @@ установите позицию наземной станции через меню Настройки Настройки слежения - Управление вращателем антенны - IP адрес вращателя - Порт вращателя + Управление поворотным устройством + IP адрес поворотного устройства + Введён неправильный IP адрес + Порт поворотного устройства + Введите порт в диапазоне от 1024 до 65535 Версия: %s Трекер спутников для Android diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bd5592bd..3f772a31 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -83,7 +83,9 @@ Tracking preferences Antenna rotator control Rotator IP address + Please enter a valid IP address Rotator port + Please enter a port between 1024 to 65535 Version: %s Satellite tracker and pass predictor