Allow to change server port only when server is down

This commit is contained in:
2020-05-09 15:29:23 +02:00
parent 75633a4f9f
commit 84449b573e

View File

@@ -1,12 +1,18 @@
package io.bartek.preference
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.Bundle
import android.text.InputType
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.SwitchPreference
import io.bartek.R
import io.bartek.service.ForegroundService
import io.bartek.service.ServiceState
class PreferencesFragment : PreferenceFragmentCompat() {
private lateinit var portPreference: IntEditTextPreference
@@ -14,6 +20,35 @@ class PreferencesFragment : PreferenceFragmentCompat() {
private lateinit var waveEndpointPreference: SwitchPreference
private lateinit var ttsEnginePreference: Preference
private val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
intent?.let {
updateViewAccordingToServiceState(
ServiceState.valueOf(it.getStringExtra("STATE") ?: "STOPPED")
)
}
}
}
private fun updateViewAccordingToServiceState(state: ServiceState) {
portPreference.isEnabled = state == ServiceState.STOPPED
}
override fun onResume() {
super.onResume()
LocalBroadcastManager
.getInstance(context!!)
.registerReceiver(receiver, IntentFilter("io.bartek.web.server.CHANGE_STATE"))
updateViewAccordingToServiceState(ForegroundService.state)
}
override fun onPause() {
LocalBroadcastManager
.getInstance(context!!)
.unregisterReceiver(receiver)
super.onPause()
}
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.preferences, rootKey)
portPreference = findPreference("preference_port")!!
@@ -25,5 +60,6 @@ class PreferencesFragment : PreferenceFragmentCompat() {
startActivity(Intent("com.android.settings.TTS_SETTINGS"))
true
}
updateViewAccordingToServiceState(ForegroundService.state)
}
}