/* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.accessibility; import android.app.settings.SettingsEnums; import android.hardware.display.ColorDisplayManager; import android.os.Bundle; import android.provider.Settings; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import androidx.preference.SwitchPreference; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.search.SearchIndexable; /** Accessibility settings for text and display. */ @SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public class TextAndDisplayFragment extends DashboardFragment { private static final String TAG = "TextAndDisplayFragment"; private static final String CATEGORY_EXPERIMENTAL = "experimental_category"; // Preferences private static final String DISPLAY_DALTONIZER_PREFERENCE_SCREEN = "daltonizer_preference"; private static final String TOGGLE_DISABLE_ANIMATIONS = "toggle_disable_animations"; private static final String TOGGLE_LARGE_POINTER_ICON = "toggle_large_pointer_icon"; private Preference mDisplayDaltonizerPreferenceScreen; private SwitchPreference mToggleDisableAnimationsPreference; private SwitchPreference mToggleLargePointerIconPreference; @Override public int getMetricsCategory() { return SettingsEnums.ACCESSIBILITY_TEXT_AND_DISPLAY; } @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); initializeAllPreferences(); updateSystemPreferences(); } @Override protected int getPreferenceScreenResId() { return R.xml.accessibility_text_and_display; } @Override protected String getLogTag() { return TAG; } private void initializeAllPreferences() { // Display color adjustments. mDisplayDaltonizerPreferenceScreen = findPreference(DISPLAY_DALTONIZER_PREFERENCE_SCREEN); // Disable animation. mToggleDisableAnimationsPreference = findPreference(TOGGLE_DISABLE_ANIMATIONS); // Large pointer icon. mToggleLargePointerIconPreference = findPreference(TOGGLE_LARGE_POINTER_ICON); } /** * Updates preferences related to system configurations. */ private void updateSystemPreferences() { final PreferenceCategory experimentalCategory = getPreferenceScreen().findPreference( CATEGORY_EXPERIMENTAL); if (ColorDisplayManager.isColorTransformAccelerated(getContext())) { mDisplayDaltonizerPreferenceScreen.setSummary(AccessibilityUtil.getSummary( getContext(), Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED)); getPreferenceScreen().removePreference(experimentalCategory); } else { // Move following preferences to experimental category if device don't supports HWC // hardware-accelerated color transform. getPreferenceScreen().removePreference(mDisplayDaltonizerPreferenceScreen); getPreferenceScreen().removePreference(mToggleDisableAnimationsPreference); getPreferenceScreen().removePreference(mToggleLargePointerIconPreference); experimentalCategory.addPreference(mDisplayDaltonizerPreferenceScreen); experimentalCategory.addPreference(mToggleDisableAnimationsPreference); experimentalCategory.addPreference(mToggleLargePointerIconPreference); } } public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider(R.xml.accessibility_text_and_display); }