Add integer constraint to port preference

This commit is contained in:
2020-05-09 15:13:13 +02:00
parent 0850390635
commit 75633a4f9f
4 changed files with 37 additions and 4 deletions

View File

@@ -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"))
}

View File

@@ -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")!!

View File

@@ -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()

View File

@@ -2,7 +2,7 @@
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory android:title="@string/preference_category_server" app:iconSpaceReserved="false">
<EditTextPreference
<io.bartek.preference.IntEditTextPreference
android:defaultValue="8080"
android:inputType="number"
android:key="preference_port"