am 59bbba7c: Merge "Add implicit parent dependency for Preferences" into klp-dev
* commit '59bbba7c37f2ce7b7fd00aef87b49d681b4a3a79': Add implicit parent dependency for Preferences
This commit is contained in:
@@ -18621,6 +18621,7 @@ package android.preference {
|
|||||||
method protected android.view.View onCreateView(android.view.ViewGroup);
|
method protected android.view.View onCreateView(android.view.ViewGroup);
|
||||||
method public void onDependencyChanged(android.preference.Preference, boolean);
|
method public void onDependencyChanged(android.preference.Preference, boolean);
|
||||||
method protected java.lang.Object onGetDefaultValue(android.content.res.TypedArray, int);
|
method protected java.lang.Object onGetDefaultValue(android.content.res.TypedArray, int);
|
||||||
|
method public void onParentChanged(android.preference.Preference, boolean);
|
||||||
method protected void onPrepareForRemoval();
|
method protected void onPrepareForRemoval();
|
||||||
method protected void onRestoreInstanceState(android.os.Parcelable);
|
method protected void onRestoreInstanceState(android.os.Parcelable);
|
||||||
method protected android.os.Parcelable onSaveInstanceState();
|
method protected android.os.Parcelable onSaveInstanceState();
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2007 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package android.preference;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Interface definition for a callback to be invoked when this
|
|
||||||
* {@link Preference} changes with respect to enabling/disabling
|
|
||||||
* dependents.
|
|
||||||
*/
|
|
||||||
interface OnDependencyChangeListener {
|
|
||||||
/**
|
|
||||||
* Called when this preference has changed in a way that dependents should
|
|
||||||
* care to change their state.
|
|
||||||
*
|
|
||||||
* @param disablesDependent Whether the dependent should be disabled.
|
|
||||||
*/
|
|
||||||
void onDependencyChanged(Preference dependency, boolean disablesDependent);
|
|
||||||
}
|
|
||||||
@@ -77,7 +77,7 @@ import java.util.Set;
|
|||||||
* @attr ref android.R.styleable#Preference_defaultValue
|
* @attr ref android.R.styleable#Preference_defaultValue
|
||||||
* @attr ref android.R.styleable#Preference_shouldDisableView
|
* @attr ref android.R.styleable#Preference_shouldDisableView
|
||||||
*/
|
*/
|
||||||
public class Preference implements Comparable<Preference>, OnDependencyChangeListener {
|
public class Preference implements Comparable<Preference> {
|
||||||
/**
|
/**
|
||||||
* Specify for {@link #setOrder(int)} if a specific order is not required.
|
* Specify for {@link #setOrder(int)} if a specific order is not required.
|
||||||
*/
|
*/
|
||||||
@@ -115,6 +115,7 @@ public class Preference implements Comparable<Preference>, OnDependencyChangeLis
|
|||||||
private String mDependencyKey;
|
private String mDependencyKey;
|
||||||
private Object mDefaultValue;
|
private Object mDefaultValue;
|
||||||
private boolean mDependencyMet = true;
|
private boolean mDependencyMet = true;
|
||||||
|
private boolean mParentDependencyMet = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see #setShouldDisableView(boolean)
|
* @see #setShouldDisableView(boolean)
|
||||||
@@ -733,7 +734,7 @@ public class Preference implements Comparable<Preference>, OnDependencyChangeLis
|
|||||||
* @return True if this Preference is enabled, false otherwise.
|
* @return True if this Preference is enabled, false otherwise.
|
||||||
*/
|
*/
|
||||||
public boolean isEnabled() {
|
public boolean isEnabled() {
|
||||||
return mEnabled && mDependencyMet;
|
return mEnabled && mDependencyMet && mParentDependencyMet;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1259,7 +1260,24 @@ public class Preference implements Comparable<Preference>, OnDependencyChangeLis
|
|||||||
notifyChanged();
|
notifyChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the implicit parent dependency changes.
|
||||||
|
*
|
||||||
|
* @param parent The Preference that this Preference depends on.
|
||||||
|
* @param disableChild Set true to disable this Preference.
|
||||||
|
*/
|
||||||
|
public void onParentChanged(Preference parent, boolean disableChild) {
|
||||||
|
if (mParentDependencyMet == disableChild) {
|
||||||
|
mParentDependencyMet = !disableChild;
|
||||||
|
|
||||||
|
// Enabled state can change dependent preferences' states, so notify
|
||||||
|
notifyDependencyChange(shouldDisableDependents());
|
||||||
|
|
||||||
|
notifyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether this preference's dependents should currently be
|
* Checks whether this preference's dependents should currently be
|
||||||
* disabled.
|
* disabled.
|
||||||
|
|||||||
@@ -62,4 +62,8 @@ public class PreferenceCategory extends PreferenceGroup {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldDisableDependents() {
|
||||||
|
return !super.isEnabled();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -290,13 +290,14 @@ public abstract class PreferenceGroup extends Preference implements GenericInfla
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setEnabled(boolean enabled) {
|
public void notifyDependencyChange(boolean disableDependents) {
|
||||||
super.setEnabled(enabled);
|
super.notifyDependencyChange(disableDependents);
|
||||||
|
|
||||||
// Dispatch to all contained preferences
|
// Child preferences have an implicit dependency on their containing
|
||||||
|
// group. Dispatch dependency change to all contained preferences.
|
||||||
final int preferenceCount = getPreferenceCount();
|
final int preferenceCount = getPreferenceCount();
|
||||||
for (int i = 0; i < preferenceCount; i++) {
|
for (int i = 0; i < preferenceCount; i++) {
|
||||||
getPreference(i).setEnabled(enabled);
|
getPreference(i).onParentChanged(this, disableDependents);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user