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

Commit cba64589 authored by Filip Pavlis's avatar Filip Pavlis
Browse files

Add getParent() on Preference.

Preference class now keeps track of its PreferenceGroup parent which
makes it easier to remove it from the preference hierarchy.

This required a new API method.

Test: Separate CTS CL being submitted along this one, see the topic.
BUG: 30599046
Change-Id: Ia9f274ef0315cb09a8c558e781b10f57efd28406
parent d61cc80a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -30005,6 +30005,7 @@ package android.preference {
    method public android.preference.Preference.OnPreferenceChangeListener getOnPreferenceChangeListener();
    method public android.preference.Preference.OnPreferenceClickListener getOnPreferenceClickListener();
    method public int getOrder();
    method public android.preference.PreferenceGroup getParent();
    method protected boolean getPersistedBoolean(boolean);
    method protected float getPersistedFloat(float);
    method protected int getPersistedInt(int);
+1 −0
Original line number Diff line number Diff line
@@ -32639,6 +32639,7 @@ package android.preference {
    method public android.preference.Preference.OnPreferenceChangeListener getOnPreferenceChangeListener();
    method public android.preference.Preference.OnPreferenceClickListener getOnPreferenceClickListener();
    method public int getOrder();
    method public android.preference.PreferenceGroup getParent();
    method protected boolean getPersistedBoolean(boolean);
    method protected float getPersistedFloat(float);
    method protected int getPersistedInt(int);
+1 −0
Original line number Diff line number Diff line
@@ -30093,6 +30093,7 @@ package android.preference {
    method public android.preference.Preference.OnPreferenceChangeListener getOnPreferenceChangeListener();
    method public android.preference.Preference.OnPreferenceClickListener getOnPreferenceClickListener();
    method public int getOrder();
    method public android.preference.PreferenceGroup getParent();
    method protected boolean getPersistedBoolean(boolean);
    method protected float getPersistedFloat(float);
    method protected int getPersistedInt(int);
+23 −0
Original line number Diff line number Diff line
@@ -145,6 +145,8 @@ public class Preference implements Comparable<Preference> {

    private List<Preference> mDependents;

    private PreferenceGroup mParentGroup;

    private boolean mBaseMethodCalled;

    /**
@@ -1238,6 +1240,16 @@ public class Preference implements Comparable<Preference> {
        registerDependency();
    }

    /**
     * Assigns a {@link PreferenceGroup} as the parent of this Preference. Set null to remove
     * the current parent.
     *
     * @param parentGroup Parent preference group of this Preference or null if none.
     */
    void assignParent(@Nullable PreferenceGroup parentGroup) {
        mParentGroup = parentGroup;
    }

    private void registerDependency() {

        if (TextUtils.isEmpty(mDependencyKey)) return;
@@ -1400,6 +1412,17 @@ public class Preference implements Comparable<Preference> {
        return mDependencyKey;
    }

    /**
     * Returns the {@link PreferenceGroup} which is this Preference assigned to or null if this
     * preference is not assigned to any group or is a root Preference.
     *
     * @return The parent PreferenceGroup or null if not attached to any.
     */
    @Nullable
    public PreferenceGroup getParent() {
        return mParentGroup;
    }

    /**
     * Called when this Preference is being removed from the hierarchy. You
     * should remove any references to this Preference that you know about. Make
+25 −21
Original line number Diff line number Diff line
@@ -161,6 +161,7 @@ public abstract class PreferenceGroup extends Preference implements GenericInfla
        }

        preference.onAttachedToHierarchy(getPreferenceManager());
        preference.assignParent(this);

        if (mAttachedToActivity) {
            preference.onAttachedToActivity();
@@ -186,6 +187,9 @@ public abstract class PreferenceGroup extends Preference implements GenericInfla
    private boolean removePreferenceInt(Preference preference) {
        synchronized(this) {
            preference.onPrepareForRemoval();
            if (preference.getParent() == this) {
                preference.assignParent(null);
            }
            return mPreferenceList.remove(preference);
        }
    }