Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f6040e12 authored by menghanli's avatar menghanli
Browse files

Polish humanize strings for Caption preferences page

- Add intro for usage
- Update footer description on limitations
- Update the default caption size to medium
- Update the caption size and style dynamically

Bug: 218409087
Test: make RunSettingsRoboTests
ROBOTEST_FILTER=CaptionAppearancePreferenceControllerTest

Change-Id: I6526250894cc6a3fd02e3d8c675280855b307a68
parent f8ba876f
Loading
Loading
Loading
Loading
+1 −10
Original line number Diff line number Diff line
@@ -816,20 +816,11 @@
    <string-array name="captioning_font_size_selector_titles">
        <item>Very small</item>
        <item>Small</item>
        <item>Default</item>
        <item>Medium</item>
        <item>Large</item>
        <item>Very large</item>
    </string-array>

    <!-- Summary for Captions settings, explaining important settings under it. [CHAR LIMIT=NONE] -->
    <string-array name="captioning_font_size_selector_summaries">
        <item>Very small text size</item>
        <item>Small text size</item>
        <item>Default text size</item>
        <item>Large text size</item>
        <item>Very large text size</item>
    </string-array>

    <!-- Values for captioning font size preference. -->
    <string-array name="captioning_font_size_selector_values" translatable="false" >
        <item>0.25</item>
+4 −2
Original line number Diff line number Diff line
@@ -5527,8 +5527,10 @@
    <string name="captioning_caption_appearance_summary"><xliff:g id="accessibility_font_size" example="Large">%1$s</xliff:g> text size</string>
    <!-- Title for Caption preference settings screen for configuring language. [CHAR LIMIT=NONE] -->
    <string name="captioning_more_options_title">More options</string>
    <!-- Used in the Captions preference to tell users that the setting doesn't support all apps. [CHAR LIMIT=NONE] -->
    <string name="accessibility_caption_preference_summary">Not all apps support these caption preferences</string>
    <!-- Introduction for the captions preference page. [CHAR LIMIT=NONE] -->
    <string name="accessibility_caption_preference_intro">Customize caption size and style to make them easier to read</string>
    <!-- Summary for the captions preference page. [CHAR LIMIT=NONE] -->
    <string name="accessibility_caption_preference_summary">These caption preferences aren\u2019t supported by all media apps</string>
    <!-- Summary for accessibility shortcut preference for software shortcut type. [CHAR LIMIT=NONE] -->
    <string name="accessibility_shortcut_type_software">Accessibility button</string>
    <!-- Summary for accessibility shortcut preference for software shortcut type when gesture mode is on. [CHAR LIMIT=NONE] -->
+7 −1
Original line number Diff line number Diff line
@@ -21,6 +21,11 @@
    android:persistent="false"
    android:title="@string/accessibility_captioning_title">

    <com.android.settingslib.widget.TopIntroPreference
        android:key="captions_intro"
        android:persistent="false"
        android:title="@string/accessibility_caption_preference_intro"/>

    <com.android.settingslib.widget.IllustrationPreference
        android:key="captions_preview"
        android:persistent="false"
@@ -38,7 +43,8 @@
        android:fragment="com.android.settings.accessibility.CaptionAppearanceFragment"
        android:key="captioning_caption_appearance"
        android:persistent="false"
        android:title="@string/captioning_caption_appearance_title" />
        android:title="@string/captioning_caption_appearance_title"
        settings:controller="com.android.settings.accessibility.CaptionAppearancePreferenceController" />

    <Preference
        android:fragment="com.android.settings.accessibility.CaptionMoreOptionsFragment"
+78 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2022 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.content.Context;
import android.view.accessibility.CaptioningManager;

import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;

import com.google.common.primitives.Floats;
import com.google.common.primitives.Ints;

/** Controller that shows the caption scale and style summary. */
public class CaptionAppearancePreferenceController extends BasePreferenceController {

    private final CaptioningManager mCaptioningManager;

    public CaptionAppearancePreferenceController(Context context, String preferenceKey) {
        super(context, preferenceKey);
        mCaptioningManager = context.getSystemService(CaptioningManager.class);
    }

    @Override
    public int getAvailabilityStatus() {
        return AVAILABLE;
    }

    @Override
    public CharSequence getSummary() {
        return mContext.getString(R.string.preference_summary_default_combination,
                geFontScaleSummary(), getPresetSummary());
    }

    private float[] getFontScaleValuesArray() {
        final String[] fontScaleValuesStrArray = mContext.getResources().getStringArray(
                R.array.captioning_font_size_selector_values);
        final int length = fontScaleValuesStrArray.length;
        final float[] fontScaleValuesArray = new float[length];
        for (int i = 0; i < length; ++i) {
            fontScaleValuesArray[i] = Float.parseFloat(fontScaleValuesStrArray[i]);
        }
        return fontScaleValuesArray;
    }

    private CharSequence geFontScaleSummary() {
        final float[] fontScaleValuesArray = getFontScaleValuesArray();
        final String[] fontScaleSummaries = mContext.getResources().getStringArray(
                R.array.captioning_font_size_selector_titles);
        final float fontScale = mCaptioningManager.getFontScale();
        final int idx = Floats.indexOf(fontScaleValuesArray, fontScale);
        return fontScaleSummaries[idx == /* not exist */ -1 ? 0 : idx];
    }

    private CharSequence getPresetSummary() {
        final int[] presetValuesArray = mContext.getResources().getIntArray(
                R.array.captioning_preset_selector_values);
        final String[] presetSummaries = mContext.getResources().getStringArray(
                R.array.captioning_preset_selector_titles);
        final int preset = mCaptioningManager.getRawUserStyle();
        final int idx = Ints.indexOf(presetValuesArray, preset);
        return presetSummaries[idx];
    }
}
+1 −30
Original line number Diff line number Diff line
@@ -34,8 +34,6 @@ import com.android.settings.widget.SettingsMainSwitchPreference;
import com.android.settingslib.search.SearchIndexable;
import com.android.settingslib.widget.OnMainSwitchChangeListener;

import com.google.common.primitives.Floats;

import java.util.ArrayList;
import java.util.List;

@@ -56,7 +54,6 @@ public class CaptionPropertiesFragment extends DashboardFragment
    private Preference mMoreOptions;

    private final List<Preference> mPreferenceList = new ArrayList<>();
    private float[] mFontSizeValuesArray;

    @Override
    public int getMetricsCategory() {
@@ -71,13 +68,12 @@ public class CaptionPropertiesFragment extends DashboardFragment

        initializeAllPreferences();
        installUpdateListeners();
        initFontSizeValuesArray();
    }

    @Override
    public void onResume() {
        super.onResume();
        updateAllPreferences();
        mSwitch.setChecked(mCaptioningManager.isEnabled());
    }

    @Override
@@ -105,21 +101,6 @@ public class CaptionPropertiesFragment extends DashboardFragment

    }

    private void initFontSizeValuesArray() {
        final String[] fontSizeValuesStrArray = getPrefContext().getResources().getStringArray(
                R.array.captioning_font_size_selector_values);
        final int length = fontSizeValuesStrArray.length;
        mFontSizeValuesArray = new float[length];
        for (int i = 0; i < length; ++i) {
            mFontSizeValuesArray[i] = Float.parseFloat(fontSizeValuesStrArray[i]);
        }
    }

    private void updateAllPreferences() {
        mSwitch.setChecked(mCaptioningManager.isEnabled());
        mTextAppearance.setSummary(geTextAppearanceSummary(getPrefContext()));
    }

    @Override
    public boolean onPreferenceChange(Preference preference, Object value) {
        final ContentResolver cr = getActivity().getContentResolver();
@@ -136,16 +117,6 @@ public class CaptionPropertiesFragment extends DashboardFragment
        return R.string.help_url_caption;
    }

    private CharSequence geTextAppearanceSummary(Context context) {
        final String[] fontSizeSummaries = context.getResources().getStringArray(
                R.array.captioning_font_size_selector_summaries);

        final float fontSize = mCaptioningManager.getFontScale();
        final int idx = Floats.indexOf(mFontSizeValuesArray, fontSize);

        return fontSizeSummaries[idx == /* not exist */ -1 ? 0 : idx];
    }

    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
            new BaseSearchIndexProvider(R.xml.captioning_settings);

Loading