diff options
Diffstat (limited to 'packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java')
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java index b40adaf..7ac7306 100644 --- a/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java +++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java @@ -26,11 +26,14 @@ import android.preference.Preference; import android.preference.Preference.OnPreferenceChangeListener; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceFragment; +import android.preference.PreferenceGroup; import android.preference.SwitchPreference; import android.provider.Settings.System; import android.view.MenuItem; import com.android.systemui.R; +import com.android.systemui.statusbar.phone.StatusBarIconController; +import com.android.systemui.tuner.TunerService.Tunable; public class TunerFragment extends PreferenceFragment { @@ -67,12 +70,42 @@ public class TunerFragment extends PreferenceFragment { updateBatteryPct(); getContext().getContentResolver().registerContentObserver( System.getUriFor(SHOW_PERCENT_SETTING), false, mSettingObserver); + + registerPrefs(getPreferenceScreen()); } @Override public void onPause() { super.onPause(); getContext().getContentResolver().unregisterContentObserver(mSettingObserver); + + unregisterPrefs(getPreferenceScreen()); + } + + private void registerPrefs(PreferenceGroup group) { + TunerService tunerService = TunerService.get(getContext()); + final int N = group.getPreferenceCount(); + for (int i = 0; i < N; i++) { + Preference pref = group.getPreference(i); + if (pref instanceof StatusBarSwitch) { + tunerService.addTunable((Tunable) pref, StatusBarIconController.ICON_BLACKLIST); + } else if (pref instanceof PreferenceGroup) { + registerPrefs((PreferenceGroup) pref); + } + } + } + + private void unregisterPrefs(PreferenceGroup group) { + TunerService tunerService = TunerService.get(getContext()); + final int N = group.getPreferenceCount(); + for (int i = 0; i < N; i++) { + Preference pref = group.getPreference(i); + if (pref instanceof Tunable) { + tunerService.removeTunable((Tunable) pref); + } else if (pref instanceof PreferenceGroup) { + registerPrefs((PreferenceGroup) pref); + } + } } @Override |