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

This commit is contained in:
Graciela Putri
2023-09-14 21:25:52 +00:00
committed by Android (Google) Code Review
4 changed files with 31 additions and 5 deletions

View File

@@ -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);
}

View File

@@ -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) {