Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 55a27a41 authored by Edgar Wang's avatar Edgar Wang Committed by Android (Google) Code Review
Browse files

Merge "Allow dynamic injecting preference into specific preferenceCategory" into main

parents 0f4680e7 9ff8ddee
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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"
}
+22 −7
Original line number Diff line number Diff line
@@ -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());
        }