diff --git a/res/values/strings.xml b/res/values/strings.xml index 291a7d5f800..9e22f9d7277 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -4950,6 +4950,8 @@ Display Text and display + + Turn screen darker Interaction controls diff --git a/res/xml/accessibility_text_and_display.xml b/res/xml/accessibility_text_and_display.xml index 7dce82636b7..bd30e61928d 100644 --- a/res/xml/accessibility_text_and_display.xml +++ b/res/xml/accessibility_text_and_display.xml @@ -21,18 +21,33 @@ android:persistent="false" android:title="@string/accessibility_text_and_display_title"> - + android:title="@string/title_font_size" + settings:controller="com.android.settings.display.FontSizePreferenceController" + settings:searchable="false"/> + + + android:title="@string/force_bold_text" + settings:controller="com.android.settings.accessibility.FontWeightAdjustmentPreferenceController"/> + + - - - - + android:title="@string/accessibility_toggle_high_text_contrast_preference_title" + settings:controller="com.android.settings.accessibility.HighTextContrastPreferenceController"/> - - - - - - + android:title="@string/experimental_category_title"> \ No newline at end of file diff --git a/res/xml/accessibility_turn_screen_darker.xml b/res/xml/accessibility_turn_screen_darker.xml new file mode 100644 index 00000000000..d87f23bf2bb --- /dev/null +++ b/res/xml/accessibility_turn_screen_darker.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/com/android/settings/accessibility/TextAndDisplayFragment.java b/src/com/android/settings/accessibility/TextAndDisplayFragment.java index b496e3d4395..e81dded9fbd 100644 --- a/src/com/android/settings/accessibility/TextAndDisplayFragment.java +++ b/src/com/android/settings/accessibility/TextAndDisplayFragment.java @@ -17,7 +17,6 @@ package com.android.settings.accessibility; import android.app.settings.SettingsEnums; -import android.content.Context; import android.hardware.display.ColorDisplayManager; import android.os.Bundle; import android.provider.Settings; @@ -28,7 +27,6 @@ import androidx.preference.SwitchPreference; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; -import com.android.settings.display.DarkUIPreferenceController; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.search.SearchIndexable; @@ -42,15 +40,10 @@ public class TextAndDisplayFragment extends DashboardFragment { // Preferences private static final String DISPLAY_DALTONIZER_PREFERENCE_SCREEN = "daltonizer_preference"; - private static final String TOGGLE_INVERSION_PREFERENCE = "toggle_inversion_preference"; - private static final String DISPLAY_REDUCE_BRIGHT_COLORS_PREFERENCE_SCREEN = - "reduce_bright_colors_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 Preference mToggleInversionPreference; - private Preference mReduceBrightColorsPreference; private SwitchPreference mToggleDisableAnimationsPreference; private SwitchPreference mToggleLargePointerIconPreference; @@ -67,12 +60,6 @@ public class TextAndDisplayFragment extends DashboardFragment { updateSystemPreferences(); } - @Override - public void onAttach(Context context) { - super.onAttach(context); - use(DarkUIPreferenceController.class).setParentFragment(this); - } - @Override protected int getPreferenceScreenResId() { return R.xml.accessibility_text_and_display; @@ -87,13 +74,6 @@ public class TextAndDisplayFragment extends DashboardFragment { // Display color adjustments. mDisplayDaltonizerPreferenceScreen = findPreference(DISPLAY_DALTONIZER_PREFERENCE_SCREEN); - // Display inversion. - mToggleInversionPreference = findPreference(TOGGLE_INVERSION_PREFERENCE); - - // Reduce brightness. - mReduceBrightColorsPreference = - findPreference(DISPLAY_REDUCE_BRIGHT_COLORS_PREFERENCE_SCREEN); - // Disable animation. mToggleDisableAnimationsPreference = findPreference(TOGGLE_DISABLE_ANIMATIONS); @@ -110,22 +90,14 @@ public class TextAndDisplayFragment extends DashboardFragment { if (ColorDisplayManager.isColorTransformAccelerated(getContext())) { mDisplayDaltonizerPreferenceScreen.setSummary(AccessibilityUtil.getSummary( getContext(), Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED)); - mToggleInversionPreference.setSummary(AccessibilityUtil.getSummary( - getContext(), Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED)); - mReduceBrightColorsPreference.setSummary(AccessibilityUtil.getSummary( - getContext(), Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED)); 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(mToggleInversionPreference); - getPreferenceScreen().removePreference(mReduceBrightColorsPreference); getPreferenceScreen().removePreference(mToggleDisableAnimationsPreference); getPreferenceScreen().removePreference(mToggleLargePointerIconPreference); experimentalCategory.addPreference(mDisplayDaltonizerPreferenceScreen); - experimentalCategory.addPreference(mToggleInversionPreference); - experimentalCategory.addPreference(mReduceBrightColorsPreference); experimentalCategory.addPreference(mToggleDisableAnimationsPreference); experimentalCategory.addPreference(mToggleLargePointerIconPreference); } diff --git a/src/com/android/settings/accessibility/TurnScreenDarkerFragment.java b/src/com/android/settings/accessibility/TurnScreenDarkerFragment.java new file mode 100644 index 00000000000..ad4bd56ccca --- /dev/null +++ b/src/com/android/settings/accessibility/TurnScreenDarkerFragment.java @@ -0,0 +1,112 @@ +/* + * 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.content.Context; +import android.hardware.display.ColorDisplayManager; +import android.os.Bundle; +import android.provider.Settings; + +import androidx.preference.Preference; +import androidx.preference.PreferenceCategory; + +import com.android.settings.R; +import com.android.settings.dashboard.DashboardFragment; +import com.android.settings.display.DarkUIPreferenceController; +import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settingslib.search.SearchIndexable; + +/** Accessibility settings for turning screen darker. */ +@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) +public class TurnScreenDarkerFragment extends DashboardFragment { + + private static final String TAG = "TurnDarkerFragment"; + + private static final String CATEGORY_EXPERIMENTAL = "experimental_category"; + + // Preferences + private static final String TOGGLE_INVERSION_PREFERENCE = "toggle_inversion_preference"; + private static final String DISPLAY_REDUCE_BRIGHT_COLORS_PREFERENCE_SCREEN = + "reduce_bright_colors_preference"; + + private Preference mToggleInversionPreference; + private Preference mReduceBrightColorsPreference; + + @Override + public int getMetricsCategory() { + return SettingsEnums.ACCESSIBILITY_TURN_SCREEN_DARKER; + } + + + @Override + public void onCreate(Bundle icicle) { + super.onCreate(icicle); + initializeAllPreferences(); + updateSystemPreferences(); + } + + @Override + public void onAttach(Context context) { + super.onAttach(context); + use(DarkUIPreferenceController.class).setParentFragment(this); + } + + @Override + protected int getPreferenceScreenResId() { + return R.xml.accessibility_turn_screen_darker; + } + + @Override + protected String getLogTag() { + return TAG; + } + + private void initializeAllPreferences() { + // Display inversion. + mToggleInversionPreference = findPreference(TOGGLE_INVERSION_PREFERENCE); + + // Reduce brightness. + mReduceBrightColorsPreference = + findPreference(DISPLAY_REDUCE_BRIGHT_COLORS_PREFERENCE_SCREEN); + } + + /** + * Updates preferences related to system configurations. + */ + private void updateSystemPreferences() { + final PreferenceCategory experimentalCategory = getPreferenceScreen().findPreference( + CATEGORY_EXPERIMENTAL); + if (ColorDisplayManager.isColorTransformAccelerated(getContext())) { + mToggleInversionPreference.setSummary(AccessibilityUtil.getSummary( + getContext(), Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED)); + mReduceBrightColorsPreference.setSummary(AccessibilityUtil.getSummary( + getContext(), Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED)); + getPreferenceScreen().removePreference(experimentalCategory); + } else { + // Move following preferences to experimental category if device don't supports HWC + // hardware-accelerated color transform. + getPreferenceScreen().removePreference(mToggleInversionPreference); + getPreferenceScreen().removePreference(mReduceBrightColorsPreference); + experimentalCategory.addPreference(mToggleInversionPreference); + experimentalCategory.addPreference(mReduceBrightColorsPreference); + } + } + + public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = + new BaseSearchIndexProvider(R.xml.accessibility_turn_screen_darker); +} diff --git a/tests/robotests/src/com/android/settings/accessibility/TurnScreenDarkerFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/TurnScreenDarkerFragmentTest.java new file mode 100644 index 00000000000..f2562011709 --- /dev/null +++ b/tests/robotests/src/com/android/settings/accessibility/TurnScreenDarkerFragmentTest.java @@ -0,0 +1,50 @@ +/* + * 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 static com.google.common.truth.Truth.assertThat; + +import android.content.Context; + +import androidx.test.core.app.ApplicationProvider; + +import com.android.settings.R; +import com.android.settings.testutils.XmlTestUtils; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; + +import java.util.List; + +/** Tests for {@link TurnScreenDarkerFragment}. */ +@RunWith(RobolectricTestRunner.class) +public class TurnScreenDarkerFragmentTest { + + private Context mContext = ApplicationProvider.getApplicationContext(); + + @Test + public void getNonIndexableKeys_existInXmlLayout() { + final List niks = TurnScreenDarkerFragment.SEARCH_INDEX_DATA_PROVIDER + .getNonIndexableKeys(mContext); + final List keys = + XmlTestUtils.getKeysFromPreferenceXml(mContext, + R.xml.accessibility_turn_screen_darker); + + assertThat(keys).containsAtLeastElementsIn(niks); + } +}