You've already forked Magisk
mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-09-06 06:36:58 +00:00
57 lines
2.1 KiB
Kotlin
57 lines
2.1 KiB
Kotlin
package com.topjohnwu.magisk.base
|
|
|
|
import android.annotation.SuppressLint
|
|
import android.content.SharedPreferences
|
|
import android.os.Bundle
|
|
import android.view.LayoutInflater
|
|
import android.view.View
|
|
import android.view.ViewGroup
|
|
import androidx.preference.*
|
|
import androidx.recyclerview.widget.RecyclerView
|
|
import org.koin.android.ext.android.inject
|
|
|
|
abstract class BasePreferenceFragment : PreferenceFragmentCompat(),
|
|
SharedPreferences.OnSharedPreferenceChangeListener {
|
|
|
|
protected val prefs: SharedPreferences by inject()
|
|
protected val activity get() = requireActivity() as BaseActivity<*, *>
|
|
|
|
override fun onCreateView(
|
|
inflater: LayoutInflater,
|
|
container: ViewGroup?,
|
|
savedInstanceState: Bundle?
|
|
): View? {
|
|
val v = super.onCreateView(inflater, container, savedInstanceState)
|
|
prefs.registerOnSharedPreferenceChangeListener(this)
|
|
return v
|
|
}
|
|
|
|
override fun onDestroyView() {
|
|
prefs.unregisterOnSharedPreferenceChangeListener(this)
|
|
super.onDestroyView()
|
|
}
|
|
|
|
private fun setAllPreferencesToAvoidHavingExtraSpace(preference: Preference) {
|
|
preference.isIconSpaceReserved = false
|
|
if (preference is PreferenceGroup)
|
|
for (i in 0 until preference.preferenceCount)
|
|
setAllPreferencesToAvoidHavingExtraSpace(preference.getPreference(i))
|
|
}
|
|
|
|
override fun setPreferenceScreen(preferenceScreen: PreferenceScreen?) {
|
|
if (preferenceScreen != null)
|
|
setAllPreferencesToAvoidHavingExtraSpace(preferenceScreen)
|
|
super.setPreferenceScreen(preferenceScreen)
|
|
}
|
|
|
|
override fun onCreateAdapter(preferenceScreen: PreferenceScreen?): RecyclerView.Adapter<*> =
|
|
object : PreferenceGroupAdapter(preferenceScreen) {
|
|
@SuppressLint("RestrictedApi")
|
|
override fun onPreferenceHierarchyChange(preference: Preference?) {
|
|
if (preference != null)
|
|
setAllPreferencesToAvoidHavingExtraSpace(preference)
|
|
super.onPreferenceHierarchyChange(preference)
|
|
}
|
|
}
|
|
}
|