Merge "Add back the shortcut dialog content for accessibility gesture" into sc-v2-dev

This commit is contained in:
TreeHugger Robot
2021-07-22 18:54:00 +00:00
committed by Android (Google) Code Review
4 changed files with 102 additions and 30 deletions

View File

@@ -344,12 +344,11 @@ public class AccessibilityDialogUtils {
private static void initSoftwareShortcut(Context context, View view) { private static void initSoftwareShortcut(Context context, View view) {
final View dialogView = view.findViewById(R.id.software_shortcut); final View dialogView = view.findViewById(R.id.software_shortcut);
final CharSequence title = context.getText(
R.string.accessibility_shortcut_edit_dialog_title_software);
final TextView summary = dialogView.findViewById(R.id.summary); final TextView summary = dialogView.findViewById(R.id.summary);
final int lineHeight = summary.getLineHeight(); final int lineHeight = summary.getLineHeight();
setupShortcutWidget(dialogView, title, setupShortcutWidget(dialogView,
retrieveTitle(context),
retrieveSoftwareShortcutSummary(context, lineHeight), retrieveSoftwareShortcutSummary(context, lineHeight),
retrieveSoftwareShortcutImageResId(context)); retrieveSoftwareShortcutImageResId(context));
} }
@@ -398,20 +397,49 @@ public class AccessibilityDialogUtils {
return sb; return sb;
} }
private static CharSequence retrieveTitle(Context context) {
int resId;
if (AccessibilityUtil.isFloatingMenuEnabled(context)) {
resId = R.string.accessibility_shortcut_edit_dialog_title_software;
} else if (AccessibilityUtil.isGestureNavigateEnabled(context)) {
resId = R.string.accessibility_shortcut_edit_dialog_title_software_by_gesture;
} else {
resId = R.string.accessibility_shortcut_edit_dialog_title_software;
}
return context.getText(resId);
}
private static CharSequence retrieveSoftwareShortcutSummary(Context context, int lineHeight) { private static CharSequence retrieveSoftwareShortcutSummary(Context context, int lineHeight) {
final SpannableStringBuilder sb = new SpannableStringBuilder(); final SpannableStringBuilder sb = new SpannableStringBuilder();
if (!AccessibilityUtil.isFloatingMenuEnabled(context)) { if (AccessibilityUtil.isFloatingMenuEnabled(context)) {
sb.append(getCustomizeAccessibilityButtonLink(context));
} else if (AccessibilityUtil.isGestureNavigateEnabled(context)) {
final int resId = AccessibilityUtil.isTouchExploreEnabled(context)
? R.string.accessibility_shortcut_edit_dialog_summary_software_gesture_talkback
: R.string.accessibility_shortcut_edit_dialog_summary_software_gesture;
sb.append(context.getText(resId));
sb.append("\n\n");
sb.append(getCustomizeAccessibilityButtonLink(context));
} else {
sb.append(getSummaryStringWithIcon(context, lineHeight)); sb.append(getSummaryStringWithIcon(context, lineHeight));
sb.append("\n\n"); sb.append("\n\n");
sb.append(getCustomizeAccessibilityButtonLink(context));
} }
sb.append(getCustomizeAccessibilityButtonLink(context));
return sb; return sb;
} }
private static int retrieveSoftwareShortcutImageResId(Context context) { private static int retrieveSoftwareShortcutImageResId(Context context) {
return AccessibilityUtil.isFloatingMenuEnabled(context) int resId;
? R.drawable.accessibility_shortcut_type_software_floating if (AccessibilityUtil.isFloatingMenuEnabled(context)) {
: R.drawable.accessibility_shortcut_type_software; resId = R.drawable.accessibility_shortcut_type_software_floating;
} else if (AccessibilityUtil.isGestureNavigateEnabled(context)) {
resId = AccessibilityUtil.isTouchExploreEnabled(context)
? R.drawable.accessibility_shortcut_type_software_gesture_talkback
: R.drawable.accessibility_shortcut_type_software_gesture;
} else {
resId = R.drawable.accessibility_shortcut_type_software;
}
return resId;
} }
private static CharSequence getCustomizeAccessibilityButtonLink(Context context) { private static CharSequence getCustomizeAccessibilityButtonLink(Context context) {
@@ -422,7 +450,6 @@ public class AccessibilityDialogUtils {
.launch(); .launch();
final AnnotationSpan.LinkInfo linkInfo = new AnnotationSpan.LinkInfo( final AnnotationSpan.LinkInfo linkInfo = new AnnotationSpan.LinkInfo(
AnnotationSpan.LinkInfo.DEFAULT_ANNOTATION, linkListener); AnnotationSpan.LinkInfo.DEFAULT_ANNOTATION, linkListener);
return AnnotationSpan.linkify(context.getText( return AnnotationSpan.linkify(context.getText(
R.string.accessibility_shortcut_edit_dialog_summary_software_floating), linkInfo); R.string.accessibility_shortcut_edit_dialog_summary_software_floating), linkInfo);
} }

View File

@@ -27,6 +27,7 @@ import android.content.res.TypedArray;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.text.Spannable; import android.text.Spannable;
import android.text.SpannableString; import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.style.ImageSpan; import android.text.style.ImageSpan;
import android.view.Gravity; import android.view.Gravity;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@@ -323,8 +324,7 @@ public final class AccessibilityGestureNavigationTutorial {
} }
private static TutorialPage createSoftwareTutorialPage(@NonNull Context context) { private static TutorialPage createSoftwareTutorialPage(@NonNull Context context) {
final CharSequence title = context.getText( final CharSequence title = getSoftwareTitle(context);
R.string.accessibility_tutorial_dialog_title_button);
final ImageView image = createSoftwareImage(context); final ImageView image = createSoftwareImage(context);
final CharSequence instruction = getSoftwareInstruction(context); final CharSequence instruction = getSoftwareInstruction(context);
final ImageView indicatorIcon = final ImageView indicatorIcon =
@@ -382,18 +382,46 @@ public final class AccessibilityGestureNavigationTutorial {
} }
private static ImageView createSoftwareImage(Context context) { private static ImageView createSoftwareImage(Context context) {
final int resId = AccessibilityUtil.isFloatingMenuEnabled(context) int resId;
? R.drawable.accessibility_shortcut_type_software_floating if (AccessibilityUtil.isFloatingMenuEnabled(context)) {
: R.drawable.accessibility_shortcut_type_software; resId = R.drawable.accessibility_shortcut_type_software_floating;
} else if (AccessibilityUtil.isGestureNavigateEnabled(context)) {
resId = AccessibilityUtil.isTouchExploreEnabled(context)
? R.drawable.accessibility_shortcut_type_software_gesture_talkback
: R.drawable.accessibility_shortcut_type_software_gesture;
} else {
resId = R.drawable.accessibility_shortcut_type_software;
}
return createImageView(context, resId); return createImageView(context, resId);
} }
private static CharSequence getSoftwareTitle(Context context) {
int resId;
if (AccessibilityUtil.isFloatingMenuEnabled(context)) {
resId = R.string.accessibility_tutorial_dialog_title_button;
} else if (AccessibilityUtil.isGestureNavigateEnabled(context)) {
resId = R.string.accessibility_tutorial_dialog_title_gesture;
} else {
resId = R.string.accessibility_tutorial_dialog_title_button;
}
return context.getText(resId);
}
private static CharSequence getSoftwareInstruction(Context context) { private static CharSequence getSoftwareInstruction(Context context) {
return AccessibilityUtil.isFloatingMenuEnabled(context) final SpannableStringBuilder sb = new SpannableStringBuilder();
? context.getText(R.string.accessibility_tutorial_dialog_message_floating_button) if (AccessibilityUtil.isFloatingMenuEnabled(context)) {
: getSoftwareInstructionWithIcon(context, final int resId = R.string.accessibility_tutorial_dialog_message_floating_button;
context.getText(R.string.accessibility_tutorial_dialog_message_button)); sb.append(context.getText(resId));
} else if (AccessibilityUtil.isGestureNavigateEnabled(context)) {
final int resId = AccessibilityUtil.isTouchExploreEnabled(context)
? R.string.accessibility_tutorial_dialog_message_gesture_talkback
: R.string.accessibility_tutorial_dialog_message_gesture;
sb.append(context.getText(resId));
} else {
final int resId = R.string.accessibility_tutorial_dialog_message_button;
sb.append(getSoftwareInstructionWithIcon(context, context.getText(resId)));
}
return sb;
} }
private static CharSequence getSoftwareInstructionWithIcon(Context context, CharSequence text) { private static CharSequence getSoftwareInstructionWithIcon(Context context, CharSequence text) {

View File

@@ -584,6 +584,18 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
return value; return value;
} }
private static CharSequence getSoftwareShortcutTypeSummary(Context context) {
int resId;
if (AccessibilityUtil.isFloatingMenuEnabled(context)) {
resId = R.string.accessibility_shortcut_edit_summary_software;
} else if (AccessibilityUtil.isGestureNavigateEnabled(context)) {
resId = R.string.accessibility_shortcut_edit_summary_software_gesture;
} else {
resId = R.string.accessibility_shortcut_edit_summary_software;
}
return context.getText(resId);
}
protected CharSequence getShortcutTypeSummary(Context context) { protected CharSequence getShortcutTypeSummary(Context context) {
if (!mShortcutPreference.isSettingsEditable()) { if (!mShortcutPreference.isSettingsEditable()) {
return context.getText(R.string.accessibility_shortcut_edit_dialog_title_hardware); return context.getText(R.string.accessibility_shortcut_edit_dialog_title_hardware);
@@ -597,11 +609,8 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
mComponentName.flattenToString(), UserShortcutType.SOFTWARE); mComponentName.flattenToString(), UserShortcutType.SOFTWARE);
final List<CharSequence> list = new ArrayList<>(); final List<CharSequence> list = new ArrayList<>();
final CharSequence softwareTitle = context.getText(
R.string.accessibility_shortcut_edit_summary_software);
if (hasShortcutType(shortcutTypes, UserShortcutType.SOFTWARE)) { if (hasShortcutType(shortcutTypes, UserShortcutType.SOFTWARE)) {
list.add(softwareTitle); list.add(getSoftwareShortcutTypeSummary(context));
} }
if (hasShortcutType(shortcutTypes, UserShortcutType.HARDWARE)) { if (hasShortcutType(shortcutTypes, UserShortcutType.HARDWARE)) {
final CharSequence hardwareTitle = context.getText( final CharSequence hardwareTitle = context.getText(
@@ -611,7 +620,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
// Show software shortcut if first time to use. // Show software shortcut if first time to use.
if (list.isEmpty()) { if (list.isEmpty()) {
list.add(softwareTitle); list.add(getSoftwareShortcutTypeSummary(context));
} }
return CaseMap.toTitle().wholeString().noLowercase().apply(Locale.getDefault(), /* iter= */ return CaseMap.toTitle().wholeString().noLowercase().apply(Locale.getDefault(), /* iter= */

View File

@@ -265,6 +265,18 @@ public class ToggleScreenMagnificationPreferenceFragment extends
return (value & type) == type; return (value & type) == type;
} }
private static CharSequence getSoftwareShortcutTypeSummary(Context context) {
int resId;
if (AccessibilityUtil.isFloatingMenuEnabled(context)) {
resId = R.string.accessibility_shortcut_edit_summary_software;
} else if (AccessibilityUtil.isGestureNavigateEnabled(context)) {
resId = R.string.accessibility_shortcut_edit_summary_software_gesture;
} else {
resId = R.string.accessibility_shortcut_edit_summary_software;
}
return context.getText(resId);
}
@Override @Override
protected CharSequence getShortcutTypeSummary(Context context) { protected CharSequence getShortcutTypeSummary(Context context) {
if (!mShortcutPreference.isChecked()) { if (!mShortcutPreference.isChecked()) {
@@ -275,18 +287,14 @@ public class ToggleScreenMagnificationPreferenceFragment extends
MAGNIFICATION_CONTROLLER_NAME, UserShortcutType.SOFTWARE); MAGNIFICATION_CONTROLLER_NAME, UserShortcutType.SOFTWARE);
final List<CharSequence> list = new ArrayList<>(); final List<CharSequence> list = new ArrayList<>();
final CharSequence softwareTitle = context.getText(
R.string.accessibility_shortcut_edit_summary_software);
if (hasShortcutType(shortcutTypes, UserShortcutType.SOFTWARE)) { if (hasShortcutType(shortcutTypes, UserShortcutType.SOFTWARE)) {
list.add(softwareTitle); list.add(getSoftwareShortcutTypeSummary(context));
} }
if (hasShortcutType(shortcutTypes, UserShortcutType.HARDWARE)) { if (hasShortcutType(shortcutTypes, UserShortcutType.HARDWARE)) {
final CharSequence hardwareTitle = context.getText( final CharSequence hardwareTitle = context.getText(
R.string.accessibility_shortcut_hardware_keyword); R.string.accessibility_shortcut_hardware_keyword);
list.add(hardwareTitle); list.add(hardwareTitle);
} }
if (hasShortcutType(shortcutTypes, UserShortcutType.TRIPLETAP)) { if (hasShortcutType(shortcutTypes, UserShortcutType.TRIPLETAP)) {
final CharSequence tripleTapTitle = context.getText( final CharSequence tripleTapTitle = context.getText(
R.string.accessibility_shortcut_triple_tap_keyword); R.string.accessibility_shortcut_triple_tap_keyword);
@@ -295,7 +303,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends
// Show software shortcut if first time to use. // Show software shortcut if first time to use.
if (list.isEmpty()) { if (list.isEmpty()) {
list.add(softwareTitle); list.add(getSoftwareShortcutTypeSummary(context));
} }
return CaseMap.toTitle().wholeString().noLowercase().apply(Locale.getDefault(), /* iter= */ return CaseMap.toTitle().wholeString().noLowercase().apply(Locale.getDefault(), /* iter= */