aboutsummaryrefslogtreecommitdiffstats
path: root/sdk/src/java/lineageos/preference/ConstraintsHelper.java
diff options
context:
space:
mode:
authorSam Mortimer <sam@mortimer.me.uk>2017-10-20 17:24:54 -0700
committerSam Mortimer <sam@mortimer.me.uk>2017-10-24 22:52:07 -0700
commit3c54d586914d2d5c7354f1ccbe5c2327ac9954c6 (patch)
tree1c6904b33a2afa3f91ea3cff45af33d0408b7912 /sdk/src/java/lineageos/preference/ConstraintsHelper.java
parent3276a6baa3f83e5d4ca5e2b4efe165604a2102fe (diff)
downloadlineage-sdk-3c54d586914d2d5c7354f1ccbe5c2327ac9954c6.tar.gz
lineage-sdk-3c54d586914d2d5c7354f1ccbe5c2327ac9954c6.tar.bz2
lineage-sdk-3c54d586914d2d5c7354f1ccbe5c2327ac9954c6.zip
lineage-sdk: Support requiresConfig integers and add requiresConfigMask
*) Add support for integer requiresConfig resources (previously supported only strings and bools). Preference is removed if the int is 0. *) Add a new attribute requiresConfigMask that takes a string decimal int. If requiresConfig is an integer then the pref is removed if (requiresConfig resource value & requiresConfigMask value) == 0. If requiresConfig is not an integer type then requiresConfigMask is ignored. *) Code clean-up for the rest of checking requiresConfig. Change-Id: Ic2622809c02a94d9cecf6f59ed6e689fdb835458
Diffstat (limited to 'sdk/src/java/lineageos/preference/ConstraintsHelper.java')
-rw-r--r--sdk/src/java/lineageos/preference/ConstraintsHelper.java32
1 files changed, 18 insertions, 14 deletions
diff --git a/sdk/src/java/lineageos/preference/ConstraintsHelper.java b/sdk/src/java/lineageos/preference/ConstraintsHelper.java
index ac55fc66..35e1d5d1 100644
--- a/sdk/src/java/lineageos/preference/ConstraintsHelper.java
+++ b/sdk/src/java/lineageos/preference/ConstraintsHelper.java
@@ -201,21 +201,25 @@ public class ConstraintsHelper {
}
}
- // Check a config resource. This can be a bool or a string. A null string
- // fails the constraint.
+ // Check a config resource. This can be a bool, string or integer.
+ // The preference is removed if any of the following are true:
+ // * A bool resource is false.
+ // * A string resource is null.
+ // * An integer resource is zero.
+ // * An integer is non-zero and when bitwise logically ANDed with
+ // attribute requiresConfigMask, the result is zero.
TypedValue tv = a.peekValue(R.styleable.lineage_SelfRemovingPreference_requiresConfig);
- if (tv != null) {
- if (tv.type == TypedValue.TYPE_STRING) {
- if (tv.resourceId != 0) {
- if (mContext.getResources().getString(tv.resourceId) == null) {
- return false;
- }
- }
- } else if (tv.type == TypedValue.TYPE_INT_BOOLEAN) {
- if (tv.resourceId != 0) {
- if (tv.data == 0) {
- return false;
- }
+ if (tv != null && tv.resourceId != 0) {
+ if (tv.type == TypedValue.TYPE_STRING &&
+ mContext.getResources().getString(tv.resourceId) == null) {
+ return false;
+ } else if (tv.type == TypedValue.TYPE_INT_BOOLEAN && tv.data == 0) {
+ return false;
+ } else if (tv.type == TypedValue.TYPE_INT_DEC) {
+ int mask = a.getInt(
+ R.styleable.lineage_SelfRemovingPreference_requiresConfigMask, -1);
+ if (tv.data == 0 || (mask >= 0 && (tv.data & mask) == 0)) {
+ return false;
}
}
}