lineage-sdk: Hide a pref group if all child prefs are themselves hidden

*) The change https://review.lineageos.org/#/c/193263/ knowingly removed
   the functionality where a pref group itself would be removed if all
   child prefs were removed (see comments around PS8/9).

*) bgcngm discovered cases where this is needed so add this
   functionality back.

Change-Id: Ibe684a6a21a2989623df71b08c2f5241682988ac
This commit is contained in:
Sam Mortimer
2017-12-20 23:02:47 -08:00
committed by Bruno Martins
parent 0991abb0c3
commit 211a874c39

View File

@@ -372,13 +372,29 @@ public class ConstraintsHelper {
return null;
}
private void hidePreference(PreferenceManager mgr, Preference pref) {
pref.setVisible(false);
// Hide the group if nothing is visible
final PreferenceGroup group = getParent(pref, pref);
boolean allHidden = true;
for (int i = 0; i < group.getPreferenceCount(); i++) {
if (group.getPreference(i).isVisible()) {
allHidden = false;
break;
}
}
if (allHidden) {
group.setVisible(false);
}
}
public void summonReaper(PreferenceManager mgr) {
synchronized (mDeathRow) {
Set<String> notReadyForReap = new ArraySet<>();
for (String dead : mDeathRow) {
Preference deadPref = mgr.findPreference(dead);
if (deadPref != null) {
deadPref.setVisible(false);
hidePreference(mgr, deadPref);
} else {
notReadyForReap.add(dead);
}