diff --git a/src/com/android/settings/accessibility/AccessibilityDialogUtils.java b/src/com/android/settings/accessibility/AccessibilityDialogUtils.java index ffe5d6db59b..a9ba14a7646 100644 --- a/src/com/android/settings/accessibility/AccessibilityDialogUtils.java +++ b/src/com/android/settings/accessibility/AccessibilityDialogUtils.java @@ -344,12 +344,11 @@ public class AccessibilityDialogUtils { private static void initSoftwareShortcut(Context context, View view) { 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 int lineHeight = summary.getLineHeight(); - setupShortcutWidget(dialogView, title, + setupShortcutWidget(dialogView, + retrieveTitle(context), retrieveSoftwareShortcutSummary(context, lineHeight), retrieveSoftwareShortcutImageResId(context)); } @@ -398,20 +397,49 @@ public class AccessibilityDialogUtils { 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) { 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("\n\n"); + sb.append(getCustomizeAccessibilityButtonLink(context)); } - sb.append(getCustomizeAccessibilityButtonLink(context)); return sb; } private static int retrieveSoftwareShortcutImageResId(Context context) { - return AccessibilityUtil.isFloatingMenuEnabled(context) - ? R.drawable.accessibility_shortcut_type_software_floating - : R.drawable.accessibility_shortcut_type_software; + int resId; + if (AccessibilityUtil.isFloatingMenuEnabled(context)) { + 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) { @@ -422,7 +450,6 @@ public class AccessibilityDialogUtils { .launch(); final AnnotationSpan.LinkInfo linkInfo = new AnnotationSpan.LinkInfo( AnnotationSpan.LinkInfo.DEFAULT_ANNOTATION, linkListener); - return AnnotationSpan.linkify(context.getText( R.string.accessibility_shortcut_edit_dialog_summary_software_floating), linkInfo); } diff --git a/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorial.java b/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorial.java index f8cdcb3388a..bc2e05d3258 100644 --- a/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorial.java +++ b/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorial.java @@ -27,6 +27,7 @@ import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.text.Spannable; import android.text.SpannableString; +import android.text.SpannableStringBuilder; import android.text.style.ImageSpan; import android.view.Gravity; import android.view.LayoutInflater; @@ -323,8 +324,7 @@ public final class AccessibilityGestureNavigationTutorial { } private static TutorialPage createSoftwareTutorialPage(@NonNull Context context) { - final CharSequence title = context.getText( - R.string.accessibility_tutorial_dialog_title_button); + final CharSequence title = getSoftwareTitle(context); final ImageView image = createSoftwareImage(context); final CharSequence instruction = getSoftwareInstruction(context); final ImageView indicatorIcon = @@ -382,18 +382,46 @@ public final class AccessibilityGestureNavigationTutorial { } private static ImageView createSoftwareImage(Context context) { - final int resId = AccessibilityUtil.isFloatingMenuEnabled(context) - ? R.drawable.accessibility_shortcut_type_software_floating - : R.drawable.accessibility_shortcut_type_software; - + int resId; + if (AccessibilityUtil.isFloatingMenuEnabled(context)) { + 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); } + 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) { - return AccessibilityUtil.isFloatingMenuEnabled(context) - ? context.getText(R.string.accessibility_tutorial_dialog_message_floating_button) - : getSoftwareInstructionWithIcon(context, - context.getText(R.string.accessibility_tutorial_dialog_message_button)); + final SpannableStringBuilder sb = new SpannableStringBuilder(); + if (AccessibilityUtil.isFloatingMenuEnabled(context)) { + final int resId = R.string.accessibility_tutorial_dialog_message_floating_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) { diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java index 640ae532161..afff3f5e8a2 100644 --- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java @@ -612,6 +612,18 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference 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) { if (!mShortcutPreference.isSettingsEditable()) { 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); final List list = new ArrayList<>(); - final CharSequence softwareTitle = context.getText( - R.string.accessibility_shortcut_edit_summary_software); - if (hasShortcutType(shortcutTypes, UserShortcutType.SOFTWARE)) { - list.add(softwareTitle); + list.add(getSoftwareShortcutTypeSummary(context)); } if (hasShortcutType(shortcutTypes, UserShortcutType.HARDWARE)) { final CharSequence hardwareTitle = context.getText( @@ -639,7 +648,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference // Show software shortcut if first time to use. if (list.isEmpty()) { - list.add(softwareTitle); + list.add(getSoftwareShortcutTypeSummary(context)); } return CaseMap.toTitle().wholeString().noLowercase().apply(Locale.getDefault(), /* iter= */ diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java index 9266f720ca2..28475a5630b 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -252,6 +252,18 @@ public class ToggleScreenMagnificationPreferenceFragment extends 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 protected CharSequence getShortcutTypeSummary(Context context) { if (!mShortcutPreference.isChecked()) { @@ -262,18 +274,14 @@ public class ToggleScreenMagnificationPreferenceFragment extends MAGNIFICATION_CONTROLLER_NAME, UserShortcutType.SOFTWARE); final List list = new ArrayList<>(); - final CharSequence softwareTitle = context.getText( - R.string.accessibility_shortcut_edit_summary_software); - if (hasShortcutType(shortcutTypes, UserShortcutType.SOFTWARE)) { - list.add(softwareTitle); + list.add(getSoftwareShortcutTypeSummary(context)); } if (hasShortcutType(shortcutTypes, UserShortcutType.HARDWARE)) { final CharSequence hardwareTitle = context.getText( R.string.accessibility_shortcut_hardware_keyword); list.add(hardwareTitle); } - if (hasShortcutType(shortcutTypes, UserShortcutType.TRIPLETAP)) { final CharSequence tripleTapTitle = context.getText( R.string.accessibility_shortcut_triple_tap_keyword); @@ -282,7 +290,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends // Show software shortcut if first time to use. if (list.isEmpty()) { - list.add(softwareTitle); + list.add(getSoftwareShortcutTypeSummary(context)); } return CaseMap.toTitle().wholeString().noLowercase().apply(Locale.getDefault(), /* iter= */