[6.7.0][状态栏改版] 优化代码逻辑

This commit is contained in:
renwj
2024-09-26 18:14:04 +08:00
parent d5166641b3
commit 56efc35eb7

View File

@@ -121,9 +121,47 @@ class OperatePanelLayout : LinearLayout {
class PreferenceHeader : PreferenceFragmentCompat() {
companion object {
private const val KEY_WELCOME_WORDS = "welcome_words"
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val toRemove = ArrayList<Preference>()
walk { pref ->
if (!isEnabled(pref)) {
toRemove.add(pref)
}
}
toRemove.forEach {
preferenceScreen.removePreferenceRecursively(it.key)
}
}
private fun isEnabled(pref: Preference): Boolean {
if (pref.key == KEY_WELCOME_WORDS) {
return AppIdentityModeUtils.isM1(FunctionBuildConfig.appIdentityMode) || AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)
}
return true
}
private fun walk(block: (Preference) -> Unit) {
fun inner(pref: Preference) {
if (pref is PreferenceGroup) {
pref.forEach {
inner(it)
}
} else {
block(pref)
}
}
inner(preferenceScreen)
}
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.operate_panel_preference_headers, rootKey)
}
}
abstract class OperatePanelDetailBase : PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener {
@@ -134,6 +172,28 @@ class OperatePanelLayout : LinearLayout {
setPreferenceClickListener(preferenceScreen)
setDefaultVal(preferenceScreen)
setEnabled(preferenceScreen)
val toRemove = ArrayList<Preference>()
walk { pref ->
if (!isEnabled(pref)) {
toRemove.add(pref)
}
}
toRemove.forEach {
preferenceScreen.removePreferenceRecursively(it.key)
}
}
private fun walk(block: (Preference) -> Unit) {
fun inner(pref: Preference) {
if (pref is PreferenceGroup) {
pref.forEach {
inner(it)
}
} else {
block(pref)
}
}
inner(preferenceScreen)
}
protected open fun getDefaultVal(pref: Preference): Any? {
@@ -660,6 +720,9 @@ class OperatePanelLayout : LinearLayout {
KEY_SWEEPER_CLOUD_CONTROL -> {
return AppIdentityModeUtils.isSweeper(FunctionBuildConfig.appIdentityMode) && (SweeperVehicleConfigUtils.isDefaultSweeperCanSwitchMode(FunctionBuildConfig.sweeperCanSwitchMode))
}
KEY_UNMANNED_DEMO_PULL_INTERVAL -> {
return AppIdentityModeUtils.isTaxiDriver(FunctionBuildConfig.appIdentityMode)
}
else -> super.isEnabled(pref)
}
}