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."
|
description: "Feature flag to enable new settings homepage UX."
|
||||||
bug: "321612737"
|
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.CategoryHandler;
|
||||||
import com.android.settings.core.CategoryMixin.CategoryListener;
|
import com.android.settings.core.CategoryMixin.CategoryListener;
|
||||||
import com.android.settings.core.PreferenceControllerListHelper;
|
import com.android.settings.core.PreferenceControllerListHelper;
|
||||||
|
import com.android.settings.flags.Flags;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.PrimarySwitchPreference;
|
import com.android.settingslib.PrimarySwitchPreference;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
@@ -543,14 +544,24 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
|||||||
observers = mDashboardFeatureProvider.bindPreferenceToTileAndGetObservers(
|
observers = mDashboardFeatureProvider.bindPreferenceToTileAndGetObservers(
|
||||||
getActivity(), this, forceRoundedIcons, pref, tile, key,
|
getActivity(), this, forceRoundedIcons, pref, tile, key,
|
||||||
mPlaceholderPreferenceController.getOrder());
|
mPlaceholderPreferenceController.getOrder());
|
||||||
if (tile.hasGroupKey() && mDashboardTilePrefKeys.containsKey(tile.getGroupKey())) {
|
if (Flags.dynamicInjectionCategory()) {
|
||||||
final Preference group = screen.findPreference(tile.getGroupKey());
|
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) {
|
if (group instanceof PreferenceCategory) {
|
||||||
((PreferenceCategory) group).addPreference(pref);
|
((PreferenceCategory) group).addPreference(pref);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
screen.addPreference(pref);
|
screen.addPreference(pref);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
registerDynamicDataObservers(observers);
|
registerDynamicDataObservers(observers);
|
||||||
mDashboardTilePrefKeys.put(key, observers);
|
mDashboardTilePrefKeys.put(key, observers);
|
||||||
}
|
}
|
||||||
@@ -564,10 +575,14 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
|||||||
for (Map.Entry<String, List<DynamicDataObserver>> entry : remove.entrySet()) {
|
for (Map.Entry<String, List<DynamicDataObserver>> entry : remove.entrySet()) {
|
||||||
final String key = entry.getKey();
|
final String key = entry.getKey();
|
||||||
mDashboardTilePrefKeys.remove(key);
|
mDashboardTilePrefKeys.remove(key);
|
||||||
final Preference preference = screen.findPreference(key);
|
if (Flags.dynamicInjectionCategory()) {
|
||||||
|
screen.removePreferenceRecursively(key);
|
||||||
|
} else {
|
||||||
|
Preference preference = screen.findPreference(key);
|
||||||
if (preference != null) {
|
if (preference != null) {
|
||||||
screen.removePreference(preference);
|
screen.removePreference(preference);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
unregisterDynamicDataObservers(entry.getValue());
|
unregisterDynamicDataObservers(entry.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user