From 75633a4f9f6f2c55c4d7fb7502f4292ffc9e733c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Sat, 9 May 2020 15:13:13 +0200 Subject: [PATCH] Add integer constraint to port preference --- .../preference/IntEditTextPreference.kt | 32 +++++++++++++++++++ .../bartek/preference/PreferencesFragment.kt | 5 +-- .../io/bartek/service/ForegroundService.kt | 2 +- app/src/main/res/xml/preferences.xml | 2 +- 4 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/io/bartek/preference/IntEditTextPreference.kt diff --git a/app/src/main/java/io/bartek/preference/IntEditTextPreference.kt b/app/src/main/java/io/bartek/preference/IntEditTextPreference.kt new file mode 100644 index 0000000..bc8e68a --- /dev/null +++ b/app/src/main/java/io/bartek/preference/IntEditTextPreference.kt @@ -0,0 +1,32 @@ +package io.bartek.preference + +import android.content.Context +import android.util.AttributeSet +import androidx.preference.EditTextPreference +import java.lang.Integer.parseInt + +class IntEditTextPreference : EditTextPreference { + constructor( + context: Context?, + attrs: AttributeSet?, + defStyleAttr: Int, + defStyleRes: Int + ) : super(context, attrs, defStyleAttr, defStyleRes) + + constructor( + context: Context?, + attrs: AttributeSet?, + defStyleAttr: Int + ) : super(context, attrs, defStyleAttr) + + constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) + + constructor(context: Context?) : super(context) + + override fun getPersistedString(defaultReturnValue: String?) = + getPersistedInt(Integer.valueOf(defaultReturnValue ?: "-1")).toString() + + override fun persistString(value: String?) = persistInt(Integer.valueOf(value ?: "-1")) + + +} \ No newline at end of file diff --git a/app/src/main/java/io/bartek/preference/PreferencesFragment.kt b/app/src/main/java/io/bartek/preference/PreferencesFragment.kt index c1e11d7..55ebb44 100644 --- a/app/src/main/java/io/bartek/preference/PreferencesFragment.kt +++ b/app/src/main/java/io/bartek/preference/PreferencesFragment.kt @@ -2,14 +2,14 @@ package io.bartek.preference import android.content.Intent import android.os.Bundle -import androidx.preference.EditTextPreference +import android.text.InputType import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import androidx.preference.SwitchPreference import io.bartek.R class PreferencesFragment : PreferenceFragmentCompat() { - private lateinit var portPreference: EditTextPreference + private lateinit var portPreference: IntEditTextPreference private lateinit var sayEndpointPreference: SwitchPreference private lateinit var waveEndpointPreference: SwitchPreference private lateinit var ttsEnginePreference: Preference @@ -17,6 +17,7 @@ class PreferencesFragment : PreferenceFragmentCompat() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.preferences, rootKey) portPreference = findPreference("preference_port")!! + portPreference.setOnBindEditTextListener { it.inputType = InputType.TYPE_CLASS_NUMBER } sayEndpointPreference = findPreference("preference_enable_say_endpoint")!! waveEndpointPreference = findPreference("preference_enable_wave_endpoint")!! ttsEnginePreference = findPreference("preference_tts")!! diff --git a/app/src/main/java/io/bartek/service/ForegroundService.kt b/app/src/main/java/io/bartek/service/ForegroundService.kt index ee6bca6..9a5f8f3 100644 --- a/app/src/main/java/io/bartek/service/ForegroundService.kt +++ b/app/src/main/java/io/bartek/service/ForegroundService.kt @@ -22,7 +22,7 @@ class ForegroundService : Service() { private var isServiceStarted = false private var ttsServer: TTSServer? = null private val port: Int - get() = parseInt(preferences.getString("preference_port", "8080")!!) + get() = preferences.getInt("preference_port", 8080) override fun onCreate() { super.onCreate() diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index d3ecf68..3eb1787 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -2,7 +2,7 @@ -