Add back the shortcut dialog content for accessibility gesture

Below components are updated.
1. The dialog title, content, and customized link when edit shortcut.
2. The shortcut preference summary in Setting page.
3. The tutorial title and content when shortcut on.

Partial rollback from commit 5fe2cdcf87

Bug: 190563948
Test: Manual test
Change-Id: I5e39b46c9387b4bf5a10f14453be9988d8b7fc9c
This commit is contained in:
menghanli
2021-06-16 08:29:10 +08:00
committed by Menghan Li
parent a8d6dba649
commit f07aa0fa90
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

@@ -612,6 +612,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);
@@ -625,11 +637,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(
@@ -639,7 +648,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

@@ -252,6 +252,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()) {
@@ -262,18 +274,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);
@@ -282,7 +290,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= */