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

Commit 7cf5bb50 authored by Graciela Putri's avatar Graciela Putri Committed by Android (Google) Code Review
Browse files

Merge "Add accessible sequence for aspect ratio options" into udc-qpr-dev

parents c7757a00 392a8112
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -12165,6 +12165,8 @@
    <string name="user_aspect_ratio_3_2">3:2</string>
    <!-- [CHAR LIMIT=NONE] 4:3 aspect ratio entry -->
    <string name="user_aspect_ratio_4_3">4:3</string>
    <!-- [CHAR LIMIT=NONE] Aspect ratio a11y message announced to replace colon in aspect ratio entry e.g. 3 by 2 -->
    <string name="user_aspect_ratio_option_a11y"><xliff:g id="numerator">%1$s</xliff:g> by <xliff:g id="denominator">%2$s</xliff:g></string>
    <!-- [CHAR LIMIT=NONE] Warning description for app info aspect ratio page -->
    <string name="app_aspect_ratio_footer">The app will restart when you change aspect ratio. You may lose unsaved changes. Some apps may not be optimized for certain aspect ratios.</string>
+0 −3
Original line number Diff line number Diff line
@@ -45,17 +45,14 @@

    <com.android.settings.applications.appcompat.RadioWithImagePreference
        android:key="16_9_pref"
        android:title="@string/user_aspect_ratio_16_9"
        android:icon="@drawable/ic_app_aspect_ratio_16_9"/>

    <com.android.settings.applications.appcompat.RadioWithImagePreference
        android:key="4_3_pref"
        android:title="@string/user_aspect_ratio_4_3"
        android:icon="@drawable/ic_app_aspect_ratio_4_3"/>

    <com.android.settings.applications.appcompat.RadioWithImagePreference
        android:key="3_2_pref"
        android:title="@string/user_aspect_ratio_3_2"
        android:icon="@drawable/ic_app_aspect_ratio_3_2"/>

    <com.android.settingslib.widget.FooterPreference
+1 −2
Original line number Diff line number Diff line
@@ -227,8 +227,7 @@ public class UserAspectRatioDetails extends AppInfoBase implements
            pref.setVisible(false);
            return;
        }
        pref.setTitle(mUserAspectRatioManager.getUserMinAspectRatioEntry(aspectRatio,
                mPackageName));
        pref.setTitle(mUserAspectRatioManager.getAccessibleEntry(aspectRatio, mPackageName));
        pref.setOnClickListener(this);
        mAspectRatioPreferences.add(pref);
    }
+28 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.settings.R;
import com.android.settings.Utils;

import com.google.common.annotations.VisibleForTesting;

@@ -64,12 +65,14 @@ public class UserAspectRatioManager {
    /** Apps that have launcher entry defined in manifest */
    private final List<ResolveInfo> mInfoHasLauncherEntryList;
    private final Map<Integer, String> mUserAspectRatioMap;
    private final Map<Integer, CharSequence> mUserAspectRatioA11yMap;

    public UserAspectRatioManager(@NonNull Context context) {
        mContext = context;
        mIPm = AppGlobals.getPackageManager();
        mInfoHasLauncherEntryList = mContext.getPackageManager().queryIntentActivities(
                UserAspectRatioManager.LAUNCHER_ENTRY_INTENT, PackageManager.GET_META_DATA);
        mUserAspectRatioA11yMap = new ArrayMap<>();
        mUserAspectRatioMap = getUserMinAspectRatioMapping();
    }

@@ -106,6 +109,16 @@ public class UserAspectRatioManager {
        return mUserAspectRatioMap.get(aspectRatio);
    }

    /**
     * @return corresponding accessible string for {@link PackageManager.UserMinAspectRatio} value
     */
    @NonNull
    public CharSequence getAccessibleEntry(@PackageManager.UserMinAspectRatio int aspectRatio,
            String packageName) {
        return mUserAspectRatioA11yMap.getOrDefault(aspectRatio,
                getUserMinAspectRatioEntry(aspectRatio, packageName));
    }

    /**
     * @return corresponding aspect ratio string for package name and user
     */
@@ -185,6 +198,7 @@ public class UserAspectRatioManager {
            final int aspectRatioVal = userMinAspectRatioValues[i];
            final String aspectRatioString = getAspectRatioStringOrDefault(
                    userMinAspectRatioStrings[i], aspectRatioVal);
            boolean containsColon = aspectRatioString.contains(":");
            switch (aspectRatioVal) {
                // Only map known values of UserMinAspectRatio and ignore unknown entries
                case PackageManager.USER_MIN_ASPECT_RATIO_FULLSCREEN:
@@ -194,6 +208,14 @@ public class UserAspectRatioManager {
                case PackageManager.USER_MIN_ASPECT_RATIO_4_3:
                case PackageManager.USER_MIN_ASPECT_RATIO_16_9:
                case PackageManager.USER_MIN_ASPECT_RATIO_3_2:
                    if (containsColon) {
                        String[] aspectRatioDigits = aspectRatioString.split(":");
                        String accessibleString = getAccessibleOption(aspectRatioDigits[0],
                                aspectRatioDigits[1]);
                        final CharSequence accessibleSequence = Utils.createAccessibleSequence(
                                aspectRatioString, accessibleString);
                        mUserAspectRatioA11yMap.put(aspectRatioVal, accessibleSequence);
                    }
                    userMinAspectRatioMap.put(aspectRatioVal, aspectRatioString);
            }
        }
@@ -204,6 +226,12 @@ public class UserAspectRatioManager {
        return userMinAspectRatioMap;
    }

    @NonNull
    private String getAccessibleOption(String numerator, String denominator) {
        return mContext.getResources().getString(R.string.user_aspect_ratio_option_a11y,
                numerator, denominator);
    }

    @NonNull
    private String getAspectRatioStringOrDefault(@Nullable String aspectRatioString,
            @PackageManager.UserMinAspectRatio int aspectRatioVal) {