Merge "Add accessible sequence for aspect ratio options" into udc-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
7cf5bb509e
@@ -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>
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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) {
|
||||
|
Reference in New Issue
Block a user