diff --git a/src/com/android/settings/accessibility/AccessibilityEditDialogUtils.java b/src/com/android/settings/accessibility/AccessibilityEditDialogUtils.java index 803550b8cc4..6a9d0cf3e7f 100644 --- a/src/com/android/settings/accessibility/AccessibilityEditDialogUtils.java +++ b/src/com/android/settings/accessibility/AccessibilityEditDialogUtils.java @@ -70,45 +70,32 @@ public class AccessibilityEditDialogUtils { @Retention(RetentionPolicy.SOURCE) @IntDef({ DialogType.EDIT_SHORTCUT_GENERIC, + DialogType.EDIT_SHORTCUT_GENERIC_SUW, DialogType.EDIT_SHORTCUT_MAGNIFICATION, + DialogType.EDIT_SHORTCUT_MAGNIFICATION_SUW, DialogType.EDIT_MAGNIFICATION_SWITCH_SHORTCUT, }) - private @interface DialogType { + public @interface DialogType { int EDIT_SHORTCUT_GENERIC = 0; - int EDIT_SHORTCUT_MAGNIFICATION = 1; - int EDIT_MAGNIFICATION_SWITCH_SHORTCUT = 2; + int EDIT_SHORTCUT_GENERIC_SUW = 1; + int EDIT_SHORTCUT_MAGNIFICATION = 2; + int EDIT_SHORTCUT_MAGNIFICATION_SUW = 3; + int EDIT_MAGNIFICATION_SWITCH_SHORTCUT = 4; } /** * Method to show the edit shortcut dialog. * * @param context A valid context + * @param dialogType The type of edit shortcut dialog * @param dialogTitle The title of edit shortcut dialog * @param listener The listener to determine the action of edit shortcut dialog * @return A edit shortcut dialog for showing */ - public static AlertDialog showEditShortcutDialog(Context context, CharSequence dialogTitle, - DialogInterface.OnClickListener listener) { - final AlertDialog alertDialog = createDialog(context, DialogType.EDIT_SHORTCUT_GENERIC, - dialogTitle, listener); - alertDialog.show(); - setScrollIndicators(alertDialog); - return alertDialog; - } - - /** - * Method to show the edit shortcut dialog in Magnification. - * - * @param context A valid context - * @param dialogTitle The title of edit shortcut dialog - * @param listener The listener to determine the action of edit shortcut dialog - * @return A edit shortcut dialog for showing in Magnification - */ - public static AlertDialog showMagnificationEditShortcutDialog(Context context, + public static AlertDialog showEditShortcutDialog(Context context, int dialogType, CharSequence dialogTitle, DialogInterface.OnClickListener listener) { - final AlertDialog alertDialog = createDialog(context, - DialogType.EDIT_SHORTCUT_MAGNIFICATION, dialogTitle, listener); + final AlertDialog alertDialog = createDialog(context, dialogType, dialogTitle, listener); alertDialog.show(); setScrollIndicators(alertDialog); return alertDialog; @@ -241,6 +228,12 @@ public class AccessibilityEditDialogUtils { initSoftwareShortcut(context, contentView); initHardwareShortcut(context, contentView); break; + case DialogType.EDIT_SHORTCUT_GENERIC_SUW: + contentView = inflater.inflate( + R.layout.accessibility_edit_shortcut, null); + initSoftwareShortcutForSUW(context, contentView); + initHardwareShortcut(context, contentView); + break; case DialogType.EDIT_SHORTCUT_MAGNIFICATION: contentView = inflater.inflate( R.layout.accessibility_edit_shortcut_magnification, null); @@ -249,6 +242,14 @@ public class AccessibilityEditDialogUtils { initMagnifyShortcut(context, contentView); initAdvancedWidget(contentView); break; + case DialogType.EDIT_SHORTCUT_MAGNIFICATION_SUW: + contentView = inflater.inflate( + R.layout.accessibility_edit_shortcut_magnification, null); + initSoftwareShortcutForSUW(context, contentView); + initHardwareShortcut(context, contentView); + initMagnifyShortcut(context, contentView); + initAdvancedWidget(contentView); + break; case DialogType.EDIT_MAGNIFICATION_SWITCH_SHORTCUT: contentView = inflater.inflate( R.layout.accessibility_edit_magnification_shortcut, null); @@ -278,6 +279,18 @@ public class AccessibilityEditDialogUtils { image.setImageResource(imageResId); } + private static void initSoftwareShortcutForSUW(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, + retrieveSoftwareShortcutSummaryForSUW(context, lineHeight), + retrieveSoftwareShortcutImageResId(context)); + } + private static void initSoftwareShortcut(Context context, View view) { final View dialogView = view.findViewById(R.id.software_shortcut); final CharSequence title = context.getText( @@ -285,7 +298,8 @@ public class AccessibilityEditDialogUtils { final TextView summary = dialogView.findViewById(R.id.summary); final int lineHeight = summary.getLineHeight(); - setupShortcutWidget(dialogView, title, retrieveSummary(context, lineHeight), + setupShortcutWidget(dialogView, title, + retrieveSoftwareShortcutSummary(context, lineHeight), retrieveSoftwareShortcutImageResId(context)); } @@ -320,7 +334,16 @@ public class AccessibilityEditDialogUtils { }); } - private static CharSequence retrieveSummary(Context context, int lineHeight) { + private static CharSequence retrieveSoftwareShortcutSummaryForSUW(Context context, + int lineHeight) { + final SpannableStringBuilder sb = new SpannableStringBuilder(); + if (!AccessibilityUtil.isFloatingMenuEnabled(context)) { + sb.append(getSummaryStringWithIcon(context, lineHeight)); + } + return sb; + } + + private static CharSequence retrieveSoftwareShortcutSummary(Context context, int lineHeight) { final SpannableStringBuilder sb = new SpannableStringBuilder(); if (!AccessibilityUtil.isFloatingMenuEnabled(context)) { sb.append(getSummaryStringWithIcon(context, lineHeight)); diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java index 231a492776c..b0f0462b77d 100644 --- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java @@ -50,12 +50,15 @@ import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.SettingsPreferenceFragment; +import com.android.settings.accessibility.AccessibilityEditDialogUtils.DialogType; import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType; import com.android.settings.widget.SettingsMainSwitchBar; import com.android.settings.widget.SettingsMainSwitchPreference; import com.android.settingslib.accessibility.AccessibilityUtils; import com.android.settingslib.widget.OnMainSwitchChangeListener; +import com.google.android.setupcompat.util.WizardManagerHelper; + import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; @@ -221,8 +224,11 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference case DialogEnums.EDIT_SHORTCUT: final CharSequence dialogTitle = getPrefContext().getString( R.string.accessibility_shortcut_title, mPackageName); + final int dialogType = WizardManagerHelper.isAnySetupWizard(getIntent()) + ? DialogType.EDIT_SHORTCUT_GENERIC_SUW : DialogType.EDIT_SHORTCUT_GENERIC; dialog = AccessibilityEditDialogUtils.showEditShortcutDialog( - getPrefContext(), dialogTitle, this::callOnAlertDialogCheckboxClicked); + getPrefContext(), dialogType, dialogTitle, + this::callOnAlertDialogCheckboxClicked); setupEditShortcutDialog(dialog); return dialog; case DialogEnums.LAUNCH_ACCESSIBILITY_TUTORIAL: diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java index 7c03ba9e9a8..dd289e37025 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -44,8 +44,11 @@ import androidx.preference.PreferenceCategory; import com.android.internal.annotations.VisibleForTesting; import com.android.settings.DialogCreatable; import com.android.settings.R; +import com.android.settings.accessibility.AccessibilityEditDialogUtils.DialogType; import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType; +import com.google.android.setupcompat.util.WizardManagerHelper; + import java.util.ArrayList; import java.util.List; import java.util.Locale; @@ -127,9 +130,11 @@ public class ToggleScreenMagnificationPreferenceFragment extends case DialogEnums.MAGNIFICATION_EDIT_SHORTCUT: final CharSequence dialogTitle = getPrefContext().getString( R.string.accessibility_shortcut_title, mPackageName); - dialog = AccessibilityEditDialogUtils.showMagnificationEditShortcutDialog( - getPrefContext(), dialogTitle, - this::callOnAlertDialogCheckboxClicked); + final int dialogType = WizardManagerHelper.isAnySetupWizard(getIntent()) + ? DialogType.EDIT_SHORTCUT_MAGNIFICATION_SUW + : DialogType.EDIT_SHORTCUT_MAGNIFICATION; + dialog = AccessibilityEditDialogUtils.showEditShortcutDialog(getPrefContext(), + dialogType, dialogTitle, this::callOnAlertDialogCheckboxClicked); setupMagnificationEditShortcutDialog(dialog); return dialog; default: @@ -139,7 +144,6 @@ public class ToggleScreenMagnificationPreferenceFragment extends @Override protected void initSettingsPreference() { - // If the device doesn't support magnification area, it should hide the settings preference. if (!getContext().getResources().getBoolean( com.android.internal.R.bool.config_magnification_area)) { diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java index 4b378c0efab..01e9b38440d 100644 --- a/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java @@ -43,6 +43,7 @@ import androidx.preference.PreferenceScreen; import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; +import com.android.settings.accessibility.AccessibilityEditDialogUtils.DialogType; import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType; import com.android.settings.testutils.shadow.ShadowFragment; @@ -145,7 +146,8 @@ public class ToggleFeaturePreferenceFragmentTest { public void setupEditShortcutDialog_shortcutPreferenceOff_checkboxIsEmptyValue() { mContext.setTheme(R.style.Theme_AppCompat); final AlertDialog dialog = AccessibilityEditDialogUtils.showEditShortcutDialog( - mContext, PLACEHOLDER_DIALOG_TITLE, this::callEmptyOnClicked); + mContext, DialogType.EDIT_SHORTCUT_GENERIC, PLACEHOLDER_DIALOG_TITLE, + this::callEmptyOnClicked); final ShortcutPreference shortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null); mFragment.mComponentName = PLACEHOLDER_COMPONENT_NAME; @@ -162,7 +164,8 @@ public class ToggleFeaturePreferenceFragmentTest { public void setupEditShortcutDialog_shortcutPreferenceOn_checkboxIsSavedValue() { mContext.setTheme(R.style.Theme_AppCompat); final AlertDialog dialog = AccessibilityEditDialogUtils.showEditShortcutDialog( - mContext, PLACEHOLDER_DIALOG_TITLE, this::callEmptyOnClicked); + mContext, DialogType.EDIT_SHORTCUT_GENERIC, PLACEHOLDER_DIALOG_TITLE, + this::callEmptyOnClicked); final ShortcutPreference shortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null); final PreferredShortcut hardwareShortcut = new PreferredShortcut( @@ -183,7 +186,8 @@ public class ToggleFeaturePreferenceFragmentTest { public void restoreValueFromSavedInstanceState_assignToVariable() { mContext.setTheme(R.style.Theme_AppCompat); final AlertDialog dialog = AccessibilityEditDialogUtils.showEditShortcutDialog( - mContext, PLACEHOLDER_DIALOG_TITLE, this::callEmptyOnClicked); + mContext, DialogType.EDIT_SHORTCUT_GENERIC, PLACEHOLDER_DIALOG_TITLE, + this::callEmptyOnClicked); final Bundle savedInstanceState = new Bundle(); final ShortcutPreference shortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null); diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java index c8ad94faecb..43f691e2005 100644 --- a/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragmentTest.java @@ -53,6 +53,7 @@ import androidx.test.core.app.ApplicationProvider; import com.android.settings.DialogCreatable; import com.android.settings.R; +import com.android.settings.accessibility.AccessibilityEditDialogUtils.DialogType; import com.android.settings.testutils.shadow.ShadowFragment; import com.android.settings.testutils.shadow.ShadowSettingsPreferenceFragment; import com.android.settingslib.core.lifecycle.Lifecycle; @@ -208,8 +209,9 @@ public class ToggleScreenMagnificationPreferenceFragmentTest { @Test public void setupMagnificationEditShortcutDialog_shortcutPreferenceOff_checkboxIsEmptyValue() { mContext.setTheme(R.style.Theme_AppCompat); - final AlertDialog dialog = AccessibilityEditDialogUtils.showMagnificationEditShortcutDialog( - mContext, PLACEHOLDER_DIALOG_TITLE, this::callEmptyOnClicked); + final AlertDialog dialog = AccessibilityEditDialogUtils.showEditShortcutDialog( + mContext, DialogType.EDIT_SHORTCUT_MAGNIFICATION, PLACEHOLDER_DIALOG_TITLE, + this::callEmptyOnClicked); final ShortcutPreference shortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null); mFragment.mShortcutPreference = shortcutPreference; @@ -224,8 +226,9 @@ public class ToggleScreenMagnificationPreferenceFragmentTest { @Test public void setupMagnificationEditShortcutDialog_shortcutPreferenceOn_checkboxIsSavedValue() { mContext.setTheme(R.style.Theme_AppCompat); - final AlertDialog dialog = AccessibilityEditDialogUtils.showMagnificationEditShortcutDialog( - mContext, PLACEHOLDER_DIALOG_TITLE, this::callEmptyOnClicked); + final AlertDialog dialog = AccessibilityEditDialogUtils.showEditShortcutDialog( + mContext, DialogType.EDIT_SHORTCUT_MAGNIFICATION, PLACEHOLDER_DIALOG_TITLE, + this::callEmptyOnClicked); final ShortcutPreference shortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null); final PreferredShortcut tripletapShortcut = new PreferredShortcut( @@ -244,8 +247,9 @@ public class ToggleScreenMagnificationPreferenceFragmentTest { @Config(shadows = ShadowFragment.class) public void restoreValueFromSavedInstanceState_assignToVariable() { mContext.setTheme(R.style.Theme_AppCompat); - final AlertDialog dialog = AccessibilityEditDialogUtils.showMagnificationEditShortcutDialog( - mContext, PLACEHOLDER_DIALOG_TITLE, this::callEmptyOnClicked); + final AlertDialog dialog = AccessibilityEditDialogUtils.showEditShortcutDialog( + mContext, DialogType.EDIT_SHORTCUT_MAGNIFICATION, PLACEHOLDER_DIALOG_TITLE, + this::callEmptyOnClicked); final Bundle savedInstanceState = new Bundle(); mFragment.mShortcutPreference = new ShortcutPreference(mContext, /* attrs= */ null);