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.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.preference.EditTextPreference import android.text.InputType
import androidx.preference.Preference import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreference import androidx.preference.SwitchPreference
import io.bartek.R import io.bartek.R
class PreferencesFragment : PreferenceFragmentCompat() { class PreferencesFragment : PreferenceFragmentCompat() {
private lateinit var portPreference: EditTextPreference private lateinit var portPreference: IntEditTextPreference
private lateinit var sayEndpointPreference: SwitchPreference private lateinit var sayEndpointPreference: SwitchPreference
private lateinit var waveEndpointPreference: SwitchPreference private lateinit var waveEndpointPreference: SwitchPreference
private lateinit var ttsEnginePreference: Preference private lateinit var ttsEnginePreference: Preference
@@ -17,6 +17,7 @@ class PreferencesFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.preferences, rootKey) setPreferencesFromResource(R.xml.preferences, rootKey)
portPreference = findPreference("preference_port")!! portPreference = findPreference("preference_port")!!
portPreference.setOnBindEditTextListener { it.inputType = InputType.TYPE_CLASS_NUMBER }
sayEndpointPreference = findPreference("preference_enable_say_endpoint")!! sayEndpointPreference = findPreference("preference_enable_say_endpoint")!!
waveEndpointPreference = findPreference("preference_enable_wave_endpoint")!! waveEndpointPreference = findPreference("preference_enable_wave_endpoint")!!
ttsEnginePreference = findPreference("preference_tts")!! ttsEnginePreference = findPreference("preference_tts")!!

View File

@@ -22,7 +22,7 @@ class ForegroundService : Service() {
private var isServiceStarted = false private var isServiceStarted = false
private var ttsServer: TTSServer? = null private var ttsServer: TTSServer? = null
private val port: Int private val port: Int
get() = parseInt(preferences.getString("preference_port", "8080")!!) get() = preferences.getInt("preference_port", 8080)
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()

View File

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