From 84449b573ea49733fa05af936dfa95099fb9e5b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Sat, 9 May 2020 15:29:23 +0200 Subject: [PATCH] Allow to change server port only when server is down --- .../bartek/preference/PreferencesFragment.kt | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/app/src/main/java/io/bartek/preference/PreferencesFragment.kt b/app/src/main/java/io/bartek/preference/PreferencesFragment.kt index 55ebb44..ab41cb2 100644 --- a/app/src/main/java/io/bartek/preference/PreferencesFragment.kt +++ b/app/src/main/java/io/bartek/preference/PreferencesFragment.kt @@ -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) } } \ No newline at end of file