SleepFragment.kt 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package fr.riff_app.riff.preferences
  2. import android.content.Context
  3. import android.os.Bundle
  4. import androidx.preference.*
  5. import fr.riff_app.riff.R
  6. import android.text.InputType
  7. import androidx.appcompat.app.AppCompatActivity
  8. import fr.riff_app.riff.alarm.RadioSleeper
  9. class SleepFragment : PreferenceFragmentCompat() {
  10. override fun onAttach(context: Context) {
  11. (activity as AppCompatActivity).supportActionBar?.title = context.getString(R.string.setSleepTimer)
  12. super.onAttach(context)
  13. }
  14. override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
  15. setPreferencesFromResource(R.xml.sleep_preference, rootKey)
  16. val durationBeforeSleep = findPreference<EditTextPreference>("sleepDuration")
  17. val isSleeping = findPreference<SwitchPreferenceCompat>("isSleeping")
  18. isSleeping?.setOnPreferenceChangeListener { _, newValue ->
  19. if (!(newValue as Boolean))
  20. RadioSleeper.instance.cancelSleep(context!!)
  21. else
  22. RadioSleeper.instance.setSleep(context!!, isForce = true)
  23. true
  24. }
  25. durationBeforeSleep?.setOnBindEditTextListener {
  26. it.inputType = InputType.TYPE_CLASS_NUMBER
  27. }
  28. durationBeforeSleep?.summaryProvider = EditTextPreference.SimpleSummaryProvider.getInstance()
  29. durationBeforeSleep?.setOnPreferenceChangeListener {_, newValue ->
  30. val time = Integer.parseInt(newValue as String)
  31. if (time > 0)
  32. {
  33. RadioSleeper.instance.setSleep(context!!, isForce = true, forceDuration = time.toLong())
  34. isSleeping?.isChecked = true
  35. true
  36. } else {
  37. false
  38. }
  39. }
  40. }
  41. }