Allow dynamic injecting preference into specific preferenceCategory
Bug: 333547416 Test: robotest Change-Id: I443ec8c16afc6db334a6f16d857f69f293803979
This commit is contained in:
@@ -28,3 +28,10 @@ flag {
|
||||
description: "Feature flag to enable new settings homepage UX."
|
||||
bug: "321612737"
|
||||
}
|
||||
|
||||
flag {
|
||||
name: "dynamic_injection_category"
|
||||
namespace: "android_settings"
|
||||
description: "Feature flag to enable injection into PreferenceCategory."
|
||||
bug: "333547416"
|
||||
}
|
||||
|
@@ -46,6 +46,7 @@ import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settings.core.CategoryMixin.CategoryHandler;
|
||||
import com.android.settings.core.CategoryMixin.CategoryListener;
|
||||
import com.android.settings.core.PreferenceControllerListHelper;
|
||||
import com.android.settings.flags.Flags;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.PrimarySwitchPreference;
|
||||
import com.android.settingslib.core.AbstractPreferenceController;
|
||||
@@ -543,14 +544,24 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
||||
observers = mDashboardFeatureProvider.bindPreferenceToTileAndGetObservers(
|
||||
getActivity(), this, forceRoundedIcons, pref, tile, key,
|
||||
mPlaceholderPreferenceController.getOrder());
|
||||
if (tile.hasGroupKey() && mDashboardTilePrefKeys.containsKey(tile.getGroupKey())) {
|
||||
final Preference group = screen.findPreference(tile.getGroupKey());
|
||||
if (Flags.dynamicInjectionCategory()) {
|
||||
Preference group = screen.findPreference(tile.getGroupKey());
|
||||
if (tile.hasGroupKey() && group instanceof PreferenceCategory) {
|
||||
((PreferenceCategory) group).addPreference(pref);
|
||||
} else {
|
||||
screen.addPreference(pref);
|
||||
}
|
||||
} else {
|
||||
if (tile.hasGroupKey()
|
||||
&& mDashboardTilePrefKeys.containsKey(tile.getGroupKey())) {
|
||||
Preference group = screen.findPreference(tile.getGroupKey());
|
||||
if (group instanceof PreferenceCategory) {
|
||||
((PreferenceCategory) group).addPreference(pref);
|
||||
}
|
||||
} else {
|
||||
screen.addPreference(pref);
|
||||
}
|
||||
}
|
||||
registerDynamicDataObservers(observers);
|
||||
mDashboardTilePrefKeys.put(key, observers);
|
||||
}
|
||||
@@ -564,10 +575,14 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
||||
for (Map.Entry<String, List<DynamicDataObserver>> entry : remove.entrySet()) {
|
||||
final String key = entry.getKey();
|
||||
mDashboardTilePrefKeys.remove(key);
|
||||
final Preference preference = screen.findPreference(key);
|
||||
if (Flags.dynamicInjectionCategory()) {
|
||||
screen.removePreferenceRecursively(key);
|
||||
} else {
|
||||
Preference preference = screen.findPreference(key);
|
||||
if (preference != null) {
|
||||
screen.removePreference(preference);
|
||||
}
|
||||
}
|
||||
unregisterDynamicDataObservers(entry.getValue());
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user