[6.7.0][状态栏改版] 优化代码逻辑
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user