aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruno Martins <bgcngm@gmail.com>2017-12-03 22:03:02 +0000
committerBruno Martins <bgcngm@gmail.com>2017-12-06 12:31:48 +0000
commit9f648b7046d1f921707c749b02b911ae126fd0fa (patch)
treecd12b212fdcec9769819c4fdca30197c575addcf
parent8c4872f8013d8b34fabc0d1854b776d5a5bb229e (diff)
downloadlineage-sdk-lineage-15.0.tar.gz
lineage-sdk-lineage-15.0.tar.bz2
lineage-sdk-lineage-15.0.zip
Revert "lineage-sdk self-removing prefs: move reap from onBindViewHolder to onAttached"lineage-15.0
This reverts commit 027b615325092f7676a34c137248dc9fcd57cc35. While it served its original purpose, this was causing bad side-effects when using our constraints (verified at least with requiresConfig and requiresAction). Moving the reap to onAttached was rendering self-removing prefs useless because if the view isn't loaded yet, the preference (which also doesn't yet exists) can't really be hidden. Change-Id: Ic61fe4b9979412d89c55ea1543c494e69bf6eab7
-rw-r--r--sdk/src/java/lineageos/preference/ConstraintsHelper.java16
-rw-r--r--sdk/src/java/lineageos/preference/SelfRemovingDropDownPreference.java6
-rw-r--r--sdk/src/java/lineageos/preference/SelfRemovingListPreference.java6
-rw-r--r--sdk/src/java/lineageos/preference/SelfRemovingPreference.java6
-rw-r--r--sdk/src/java/lineageos/preference/SelfRemovingSwitchPreference.java6
5 files changed, 11 insertions, 29 deletions
diff --git a/sdk/src/java/lineageos/preference/ConstraintsHelper.java b/sdk/src/java/lineageos/preference/ConstraintsHelper.java
index b48b00ee..35e1d5d1 100644
--- a/sdk/src/java/lineageos/preference/ConstraintsHelper.java
+++ b/sdk/src/java/lineageos/preference/ConstraintsHelper.java
@@ -300,7 +300,7 @@ public class ConstraintsHelper {
return fallbackAttr;
}
- public void onAttached() {
+ public void onBindViewHolder(PreferenceViewHolder holder) {
checkIntent();
if (isAvailable() && mReplacesKey != null) {
@@ -308,9 +308,7 @@ public class ConstraintsHelper {
}
Graveyard.get(mContext).summonReaper(mPref.getPreferenceManager());
- }
- public void onBindViewHolder(PreferenceViewHolder holder) {
if (!isAvailable()) {
return;
}
@@ -327,7 +325,7 @@ public class ConstraintsHelper {
* If we want to keep this at the preference level vs the fragment level, we need to
* collate all the preferences that need to be removed when attached to the
* hierarchy, then purge them all when loading is complete. The Graveyard keeps track
- * of this, and will reap the dead when onAttached is called.
+ * of this, and will reap the dead during the first call to onBindViewHolder.
*/
private static class Graveyard {
@@ -372,12 +370,20 @@ public class ConstraintsHelper {
return null;
}
+ private void removePreference(PreferenceManager mgr, Preference pref) {
+ final PreferenceGroup group = getParent(pref, pref);
+ group.removePreference(pref);
+ if (group.getPreferenceCount() == 0) {
+ getParent(pref, group).removePreference(group);
+ }
+ }
+
public void summonReaper(PreferenceManager mgr) {
synchronized (mDeathRow) {
for (String dead : mDeathRow) {
Preference deadPref = mgr.findPreference(dead);
if (deadPref != null) {
- deadPref.setVisible(false);
+ removePreference(mgr, deadPref);
}
}
mDeathRow.clear();
diff --git a/sdk/src/java/lineageos/preference/SelfRemovingDropDownPreference.java b/sdk/src/java/lineageos/preference/SelfRemovingDropDownPreference.java
index 03097cfe..76e73461 100644
--- a/sdk/src/java/lineageos/preference/SelfRemovingDropDownPreference.java
+++ b/sdk/src/java/lineageos/preference/SelfRemovingDropDownPreference.java
@@ -44,12 +44,6 @@ public class SelfRemovingDropDownPreference extends DropDownPreference {
}
@Override
- public void onAttached() {
- super.onAttached();
- mConstraints.onAttached();
- }
-
- @Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
mConstraints.onBindViewHolder(holder);
diff --git a/sdk/src/java/lineageos/preference/SelfRemovingListPreference.java b/sdk/src/java/lineageos/preference/SelfRemovingListPreference.java
index 0b8c7985..d1d3ec5a 100644
--- a/sdk/src/java/lineageos/preference/SelfRemovingListPreference.java
+++ b/sdk/src/java/lineageos/preference/SelfRemovingListPreference.java
@@ -44,12 +44,6 @@ public class SelfRemovingListPreference extends ListPreference {
}
@Override
- public void onAttached() {
- super.onAttached();
- mConstraints.onAttached();
- }
-
- @Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
mConstraints.onBindViewHolder(holder);
diff --git a/sdk/src/java/lineageos/preference/SelfRemovingPreference.java b/sdk/src/java/lineageos/preference/SelfRemovingPreference.java
index 5271f561..a148a09c 100644
--- a/sdk/src/java/lineageos/preference/SelfRemovingPreference.java
+++ b/sdk/src/java/lineageos/preference/SelfRemovingPreference.java
@@ -49,12 +49,6 @@ public class SelfRemovingPreference extends Preference {
}
@Override
- public void onAttached() {
- super.onAttached();
- mConstraints.onAttached();
- }
-
- @Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
mConstraints.onBindViewHolder(holder);
diff --git a/sdk/src/java/lineageos/preference/SelfRemovingSwitchPreference.java b/sdk/src/java/lineageos/preference/SelfRemovingSwitchPreference.java
index a637f220..c8663227 100644
--- a/sdk/src/java/lineageos/preference/SelfRemovingSwitchPreference.java
+++ b/sdk/src/java/lineageos/preference/SelfRemovingSwitchPreference.java
@@ -44,12 +44,6 @@ public class SelfRemovingSwitchPreference extends SwitchPreference {
}
@Override
- public void onAttached() {
- super.onAttached();
- mConstraints.onAttached();
- }
-
- @Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
mConstraints.onBindViewHolder(holder);