diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt index c3bc7a662f..f10ec9b29f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt @@ -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() + 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() + 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) } }