Fix the summary of Color inversion or correction didn’t be updated after the content change.

Action:
Observe the settings content change and then update the corresponding preference state.

Bug: 245441772
Test: manual test
Change-Id: I6205c2ebe0d1eda141e9b3bd00e4a21dfdba1760
This commit is contained in:
Peter Liang
2022-12-09 20:42:47 +08:00
parent 513827c5d5
commit c0f4e11076

View File

@@ -19,6 +19,7 @@ package com.android.settings.accessibility;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.hardware.display.ColorDisplayManager; import android.hardware.display.ColorDisplayManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.provider.Settings; import android.provider.Settings;
import androidx.preference.Preference; import androidx.preference.Preference;
@@ -28,8 +29,12 @@ import androidx.preference.SwitchPreference;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.search.SearchIndexable; import com.android.settingslib.search.SearchIndexable;
import java.util.ArrayList;
import java.util.List;
/** Accessibility settings for color and motion. */ /** Accessibility settings for color and motion. */
@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) @SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
public class ColorAndMotionFragment extends DashboardFragment { public class ColorAndMotionFragment extends DashboardFragment {
@@ -46,18 +51,48 @@ public class ColorAndMotionFragment extends DashboardFragment {
private Preference mDisplayDaltonizerPreferenceScreen; private Preference mDisplayDaltonizerPreferenceScreen;
private SwitchPreference mToggleDisableAnimationsPreference; private SwitchPreference mToggleDisableAnimationsPreference;
private SwitchPreference mToggleLargePointerIconPreference; private SwitchPreference mToggleLargePointerIconPreference;
private AccessibilitySettingsContentObserver mSettingsContentObserver;
private final List<String> mShortcutFeatureKeys = new ArrayList<>();
@Override @Override
public int getMetricsCategory() { public int getMetricsCategory() {
return SettingsEnums.ACCESSIBILITY_COLOR_AND_MOTION; return SettingsEnums.ACCESSIBILITY_COLOR_AND_MOTION;
} }
@Override @Override
public void onCreate(Bundle icicle) { public void onCreate(Bundle icicle) {
super.onCreate(icicle); super.onCreate(icicle);
initializeAllPreferences(); initializeAllPreferences();
updateSystemPreferences(); updateSystemPreferences();
mShortcutFeatureKeys.add(Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED);
mShortcutFeatureKeys.add(Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED);
mSettingsContentObserver = new AccessibilitySettingsContentObserver(new Handler());
mSettingsContentObserver.registerKeysToObserverCallback(mShortcutFeatureKeys,
key -> updatePreferencesState());
}
private void updatePreferencesState() {
final List<AbstractPreferenceController> controllers = new ArrayList<>();
getPreferenceControllers().forEach(controllers::addAll);
controllers.forEach(controller -> controller.updateState(
findPreference(controller.getPreferenceKey())));
}
@Override
public void onStart() {
super.onStart();
mSettingsContentObserver.register(getContentResolver());
}
@Override
public void onStop() {
super.onStop();
mSettingsContentObserver.unregister(getContentResolver());
} }
@Override @Override