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