Enable Sonos cache invalidation

This commit is contained in:
2020-05-15 19:30:26 +02:00
parent 5f6418ca5b
commit e5c00b4cc9
4 changed files with 24 additions and 2 deletions

View File

@@ -7,4 +7,5 @@ object PreferenceKey {
const val ENABLE_WAVE_ENDPOINT = "preference_enable_wave_endpoint"
const val ENABLE_SONOS_ENDPOINT = "preference_enable_sonos_endpoint"
const val TTS = "preference_tts"
const val INVALIDATE_SONOS_CACHE = "preference_invalidate_sonos_cache"
}

View File

@@ -6,6 +6,7 @@ import android.content.Intent
import android.content.IntentFilter
import android.os.Bundle
import android.text.InputType
import android.widget.Toast
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
@@ -19,6 +20,7 @@ class PreferencesFragment : PreferenceFragmentCompat() {
private lateinit var sayEndpointPreference: SwitchPreference
private lateinit var waveEndpointPreference: SwitchPreference
private lateinit var ttsEnginePreference: Preference
private lateinit var clearSonosCachePreference: Preference
private val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
@@ -35,14 +37,14 @@ class PreferencesFragment : PreferenceFragmentCompat() {
override fun onResume() {
super.onResume()
LocalBroadcastManager
.getInstance(context!!)
.getInstance(requireContext())
.registerReceiver(receiver, IntentFilter(ForegroundService.CHANGE_STATE))
updateViewAccordingToServiceState(ForegroundService.state)
}
override fun onPause() {
LocalBroadcastManager
.getInstance(context!!)
.getInstance(requireContext())
.unregisterReceiver(receiver)
super.onPause()
}
@@ -58,6 +60,12 @@ class PreferencesFragment : PreferenceFragmentCompat() {
startActivity(Intent(ANDROID_TTS_SETTINGS))
true
}
clearSonosCachePreference = findPreference(PreferenceKey.INVALIDATE_SONOS_CACHE)!!
clearSonosCachePreference.setOnPreferenceClickListener {
context?.cacheDir?.listFiles() ?. forEach { it.delete() }
Toast.makeText(context, getString(R.string.preference_invalidate_sonos_cache_toast), Toast.LENGTH_SHORT).show()
true
}
updateViewAccordingToServiceState(ForegroundService.state)
}

View File

@@ -25,8 +25,13 @@
<string name="preference_enable_sonos_endpoint_title">Enable /sonos endpoint</string>
<string name="preference_tts_summary">Go to platform\'s TTS engine settings and adjust its parameters</string>
<string name="preference_tts_title">TTS engine settings</string>
<string name="preference_invalidate_sonos_cache_summary">Clear application cache directory from already generated Sonos TTS data for given sentences. You typically want to do it when you change the TTS engine\'s voice settings.</string>
<string name="preference_invalidate_sonos_cache_title">Invalidate Sonos cache</string>
<string name="preference_category_tts">TTS engine</string>
<string name="preference_category_server">Server</string>
<string name="preference_category_sonos">Sonos</string>
<string name="preference_invalidate_sonos_cache_toast">Sonos cache has been invalidated</string>
<string name="menu_settings">Settings</string>
<string name="menu_help">Help</string>
</resources>

View File

@@ -41,5 +41,13 @@
app:iconSpaceReserved="false" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/preference_category_sonos" app:iconSpaceReserved="false">
<Preference
android:key="preference_invalidate_sonos_cache"
android:summary="@string/preference_invalidate_sonos_cache_summary"
app:title="@string/preference_invalidate_sonos_cache_title"
app:iconSpaceReserved="false" />
</PreferenceCategory>
</androidx.preference.PreferenceScreen>