|
1 | 1 | package one.fable.fable |
2 | 2 |
|
3 | | -import android.content.SharedPreferences |
4 | 3 | import android.os.Bundle |
5 | 4 | import android.text.InputType |
6 | | -import android.text.TextUtils |
7 | 5 | import android.view.View |
| 6 | +import android.widget.Toast |
8 | 7 | import androidx.appcompat.app.AppCompatDelegate |
9 | 8 | import androidx.preference.* |
10 | | -import java.util.prefs.PreferenceChangeEvent |
11 | | -import java.util.prefs.PreferenceChangeListener |
| 9 | +import timber.log.Timber |
12 | 10 |
|
13 | 11 |
|
14 | 12 | class GlobalSettingsFragment : PreferenceFragmentCompat() { |
15 | | - lateinit var sharedPreferences: SharedPreferences |
16 | | - lateinit var seekbarListener: SharedPreferences.OnSharedPreferenceChangeListener |
17 | 13 | override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { |
18 | 14 | setPreferencesFromResource(R.xml.global_preferences, rootKey) |
19 | 15 | } |
20 | 16 |
|
21 | 17 | override fun onViewCreated(view: View, savedInstanceState: Bundle?) { |
22 | | - |
23 | 18 | super.onViewCreated(view, savedInstanceState) |
24 | | - sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context) |
25 | 19 |
|
26 | 20 | val rewindPreference : EditTextPreference? = findPreference("rewind_seconds") |
27 | 21 | val fastForwardPreference : EditTextPreference? = findPreference("fastforward_seconds") |
28 | 22 | val speedSeekBar : SeekBarPreference? = findPreference("playback_speed_seekbar") |
29 | 23 | val theme : ListPreference? = findPreference("theme") |
30 | 24 |
|
31 | | - val settingChangeEventListener: SharedPreferences.OnSharedPreferenceChangeListener |
32 | | - //val seekbar : SeekBarPreference? = findPreference("playback_speed") |
33 | | - |
34 | | - |
| 25 | + //--Rewind Preference-- |
35 | 26 | rewindPreference?.setOnBindEditTextListener { editText -> |
36 | | - editText.inputType = InputType.TYPE_CLASS_NUMBER |
| 27 | + editText.inputType = InputType.TYPE_CLASS_NUMBER //Show only numbers for the rewind preference editor |
37 | 28 | } |
| 29 | + //Add a listener to show a toast when the rewind speed changes |
| 30 | + //Don't add to the editTextListener above as it will show the toast when the keyboard appears |
| 31 | + rewindPreference?.setOnPreferenceChangeListener { _, _ -> |
| 32 | + Toast.makeText(context, "Preference will be reflected after app restart", Toast.LENGTH_LONG).show() |
| 33 | + true |
| 34 | + } |
| 35 | + |
38 | 36 |
|
| 37 | + //--Fast Forward Preference |
39 | 38 | fastForwardPreference?.setOnBindEditTextListener { editText -> |
40 | | - editText.inputType = InputType.TYPE_CLASS_NUMBER |
| 39 | + editText.inputType = InputType.TYPE_CLASS_NUMBER //Show only numbers for the fast forward preference editor |
| 40 | + } |
| 41 | + //Add a listener to show a toast when the fast forward speed changes |
| 42 | + //Don't add to the editTextListener above as it will show the toast when the keyboard appears |
| 43 | + fastForwardPreference?.setOnPreferenceChangeListener { _, _ -> |
| 44 | + Toast.makeText(context, "Preference will be reflected after app restart", Toast.LENGTH_LONG).show() |
| 45 | + true |
41 | 46 | } |
42 | 47 |
|
43 | | - theme?.setOnPreferenceChangeListener(object : Preference.OnPreferenceChangeListener{ |
44 | | - override fun onPreferenceChange(preference: Preference?, newValue: Any?): Boolean { |
45 | | - when (newValue){ |
46 | | - "1" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) |
47 | | - "2" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) |
48 | | - "-1" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) |
49 | | - } |
50 | | - return true |
| 48 | + //Theme preference listener |
| 49 | + theme?.setOnPreferenceChangeListener { _, newValue -> |
| 50 | + when (newValue){ |
| 51 | + "1" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) |
| 52 | + "2" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) |
| 53 | + "-1" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) |
51 | 54 | } |
52 | | - }) |
53 | | - //AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) |
54 | | - |
55 | | - speedSeekBar?.title = speedSeekBar?.value?.let { setSpeedSeekBarText(it) } |
| 55 | + true |
| 56 | + } |
56 | 57 |
|
57 | | - seekbarListener = SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key -> |
58 | | - if (key == "playback_speed_seekbar"){ |
59 | | - speedSeekBar?.title = setSpeedSeekBarText(sharedPreferences.getInt(key, 10)) |
| 58 | + //Speed Seekbar Preference |
| 59 | + speedSeekBar?.title = speedSeekBar?.value?.let { formatSpeedSeekBarText(it) } //This will initialize the speedseekbar with the applicable text |
| 60 | + speedSeekBar?.setOnPreferenceChangeListener { _, newValue -> |
| 61 | + try { |
| 62 | + speedSeekBar.title = formatSpeedSeekBarText(newValue as Int) //The new value should always be an Int, but just in case, catch it |
| 63 | + } catch (e : Exception) { |
| 64 | + Timber.e(e) |
60 | 65 | } |
| 66 | + true |
61 | 67 | } |
62 | | - |
63 | | - sharedPreferences.registerOnSharedPreferenceChangeListener(seekbarListener) |
64 | | - |
65 | 68 | } |
66 | 69 |
|
67 | | - fun setSpeedSeekBarText(speed: Int) : String{ |
| 70 | + private fun formatSpeedSeekBarText(speed: Int) : String{ |
68 | 71 | val playbackSpeedFloat = speed/10.0 |
69 | 72 | return "Default playback speed: " + playbackSpeedFloat + "x" |
70 | 73 | } |
|
0 commit comments