BasePreferenceFragment.kt raw

   1  package io.github.domi04151309.alwayson.custom
   2  
   3  import android.content.SharedPreferences
   4  import androidx.preference.Preference
   5  import androidx.preference.PreferenceFragmentCompat
   6  import androidx.preference.SwitchPreference
   7  import io.github.domi04151309.alwayson.R
   8  import io.github.domi04151309.alwayson.actions.alwayson.AlwaysOn
   9  import io.github.domi04151309.alwayson.helpers.Permissions
  10  
  11  abstract class BasePreferenceFragment :
  12      PreferenceFragmentCompat(),
  13      SharedPreferences.OnSharedPreferenceChangeListener {
  14      private fun setSummary(
  15          key: String,
  16          resId: Int,
  17      ) {
  18          val pref: Preference? = findPreference(key)
  19          pref?.apply {
  20              isEnabled = false
  21              setSummary(resId)
  22          }
  23          (pref as? SwitchPreference)?.apply {
  24              setSummaryOff(resId)
  25              setSummaryOn(resId)
  26          }
  27      }
  28  
  29      protected fun checkPermissions() {
  30          if (!Permissions.isNotificationServiceEnabled(requireContext())) {
  31              Permissions.NOTIFICATION_PERMISSION_PREFS.forEach {
  32                  setSummary(it, R.string.permissions_notification_access)
  33              }
  34          }
  35          if (!Permissions.isDeviceAdminOrRoot(requireContext())) {
  36              Permissions.DEVICE_ADMIN_OR_ROOT_PERMISSION_PREFS.forEach {
  37                  setSummary(it, R.string.permissions_device_admin_or_root)
  38              }
  39          }
  40      }
  41  
  42      override fun onStart() {
  43          super.onStart()
  44          preferenceManager.sharedPreferences?.registerOnSharedPreferenceChangeListener(this)
  45      }
  46  
  47      override fun onStop() {
  48          super.onStop()
  49          preferenceManager.sharedPreferences?.unregisterOnSharedPreferenceChangeListener(this)
  50      }
  51  
  52      override fun onSharedPreferenceChanged(
  53          preferences: SharedPreferences,
  54          key: String?,
  55      ) {
  56          AlwaysOn.finish()
  57      }
  58  }
  59