Loading res/values/styles.xml +2 −2 Original line number Diff line number Diff line Loading @@ -715,8 +715,8 @@ parent="@*android:style/Widget.DeviceDefault.Button.ButtonBar.AlertDialog"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">56dp</item> <item name="android:paddingLeft">8dp</item> <item name="android:paddingRight">8dp</item> <item name="android:paddingEnd">8dp</item> <item name="android:paddingStart">8dp</item> <item name="android:background">?android:attr/selectableItemBackground</item> </style> Loading src/com/android/settings/accessibility/AccessibilityEditDialogUtils.java +3 −3 Original line number Diff line number Diff line Loading @@ -118,16 +118,16 @@ public class AccessibilityEditDialogUtils { * Method to show the magnification edit shortcut dialog in Magnification. * * @param context A valid context * @param dialogTitle The title of magnify edit shortcut dialog * @param positiveBtnListener The positive button listener * @return A magnification edit shortcut dialog in Magnification */ public static Dialog createMagnificationSwitchShortcutDialog(Context context, CharSequence dialogTitle, CustomButtonsClickListener positiveBtnListener) { CustomButtonsClickListener positiveBtnListener) { final View contentView = createSwitchShortcutDialogContentView(context); final AlertDialog alertDialog = new AlertDialog.Builder(context) .setView(contentView) .setTitle(dialogTitle) .setTitle(context.getString( R.string.accessibility_magnification_switch_shortcut_title)) .create(); setCustomButtonsClickListener(alertDialog, contentView, positiveBtnListener, /* negativeBtnListener= */ null); Loading src/com/android/settings/accessibility/MagnificationModePreferenceController.java +28 −9 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ import com.android.settings.accessibility.MagnificationCapabilities.Magnificatio import com.android.settings.core.BasePreferenceController; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnCreate; import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState; import java.util.ArrayList; Loading @@ -55,8 +56,9 @@ import java.util.StringJoiner; /** Controller that shows the magnification area mode summary and the preference click behavior. */ public class MagnificationModePreferenceController extends BasePreferenceController implements DialogCreatable, LifecycleObserver, OnCreate, OnSaveInstanceState { DialogCreatable, LifecycleObserver, OnCreate, OnResume, OnSaveInstanceState { static final String PREF_KEY = "screen_magnification_mode"; private static final int DIALOG_ID_BASE = 10; @VisibleForTesting static final int DIALOG_MAGNIFICATION_MODE = DIALOG_ID_BASE + 1; Loading @@ -68,7 +70,7 @@ public class MagnificationModePreferenceController extends BasePreferenceControl private static final String TAG = "MagnificationModePreferenceController"; private static final char COMPONENT_NAME_SEPARATOR = ':'; private MagnificationSettingsFragment mParentFragment; private DialogHelper mDialogHelper; // The magnification mode in the dialog. private int mMode = MagnificationMode.NONE; private Preference mModePreference; Loading Loading @@ -121,7 +123,7 @@ public class MagnificationModePreferenceController extends BasePreferenceControl mModePreference = screen.findPreference(getPreferenceKey()); mModePreference.setOnPreferenceClickListener(preference -> { mMode = MagnificationCapabilities.getCapabilities(mContext); mParentFragment.showDialog(DIALOG_MAGNIFICATION_MODE); mDialogHelper.showDialog(DIALOG_MAGNIFICATION_MODE); return true; }); } Loading @@ -131,8 +133,12 @@ public class MagnificationModePreferenceController extends BasePreferenceControl outState.putInt(EXTRA_MODE, mMode); } public void setParentFragment(MagnificationSettingsFragment parentFragment) { mParentFragment = parentFragment; /** * Sets {@link DialogHelper} used to show the dialog. */ public void setDialogHelper(DialogHelper dialogHelper) { mDialogHelper = dialogHelper; mDialogHelper.setDialogDelegate(this); } @Override Loading Loading @@ -207,7 +213,7 @@ public class MagnificationModePreferenceController extends BasePreferenceControl } mMode = modeInfo.mMagnificationMode; if (isTripleTapEnabled(mContext) && mMode != MagnificationMode.FULLSCREEN) { mParentFragment.showDialog(DIALOG_MAGNIFICATION_SWITCH_SHORTCUT); mDialogHelper.showDialog(DIALOG_MAGNIFICATION_SWITCH_SHORTCUT); } } Loading @@ -229,9 +235,7 @@ public class MagnificationModePreferenceController extends BasePreferenceControl } private Dialog createMagnificationShortCutConfirmDialog() { final String title = mContext.getString( R.string.accessibility_magnification_switch_shortcut_title); return AccessibilityEditDialogUtils.createMagnificationSwitchShortcutDialog(mContext, title, return AccessibilityEditDialogUtils.createMagnificationSwitchShortcutDialog(mContext, this::onSwitchShortcutDialogButtonClicked); } Loading Loading @@ -267,6 +271,21 @@ public class MagnificationModePreferenceController extends BasePreferenceControl joiner.toString()); } // TODO(b/186731461): Remove it when this controller is used in DashBoardFragment only. @Override public void onResume() { updateState(mModePreference); } /** * An interface to help the delegate to show the dialog. It will be injected to the delegate. */ interface DialogHelper extends DialogCreatable { void showDialog(int dialogId); void setDialogDelegate(DialogCreatable delegate); } @VisibleForTesting static class MagnificationModeInfo extends ItemInfoArrayAdapter.ItemInfo { @MagnificationMode Loading src/com/android/settings/accessibility/MagnificationSettingsFragment.java +16 −9 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.app.Dialog; import android.app.settings.SettingsEnums; import android.content.Context; import com.android.settings.DialogCreatable; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.search.BaseSearchIndexProvider; Loading @@ -27,11 +28,13 @@ import com.android.settingslib.search.SearchIndexable; /** Settings page for magnification. */ @SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public class MagnificationSettingsFragment extends DashboardFragment { public class MagnificationSettingsFragment extends DashboardFragment implements MagnificationModePreferenceController.DialogHelper { private static final String TAG = "MagnificationSettingsFragment"; private MagnificationModePreferenceController mMagnificationModePreferenceController; private DialogCreatable mDialogDelegate; @Override public int getMetricsCategory() { Loading @@ -41,19 +44,23 @@ public class MagnificationSettingsFragment extends DashboardFragment { @Override public void onAttach(Context context) { super.onAttach(context); mMagnificationModePreferenceController = use(MagnificationModePreferenceController.class); mMagnificationModePreferenceController.setParentFragment(this); use(MagnificationModePreferenceController.class).setDialogHelper(this); } @Override protected void showDialog(int dialogId) { public void showDialog(int dialogId) { super.showDialog(dialogId); } @Override public void setDialogDelegate(DialogCreatable delegate) { mDialogDelegate = delegate; } @Override public int getDialogMetricsCategory(int dialogId) { if (mMagnificationModePreferenceController != null) { return mMagnificationModePreferenceController.getDialogMetricsCategory(dialogId); if (mDialogDelegate != null) { return mDialogDelegate.getDialogMetricsCategory(dialogId); } return 0; } Loading @@ -70,8 +77,8 @@ public class MagnificationSettingsFragment extends DashboardFragment { @Override public Dialog onCreateDialog(int dialogId) { if (mMagnificationModePreferenceController != null) { final Dialog dialog = mMagnificationModePreferenceController.onCreateDialog(dialogId); if (mDialogDelegate != null) { final Dialog dialog = mDialogDelegate.onCreateDialog(dialogId); if (dialog != null) { return dialog; } Loading src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +38 −5 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import androidx.preference.Preference; 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.AccessibilityUtil.UserShortcutType; Loading @@ -55,7 +56,8 @@ import java.util.StringJoiner; * and does not have toggle bar to turn on service to use. */ public class ToggleScreenMagnificationPreferenceFragment extends ToggleFeaturePreferenceFragment { ToggleFeaturePreferenceFragment implements MagnificationModePreferenceController.DialogHelper { // TODO(b/147021230): Move duplicated functions with android/internal/accessibility into util. private TouchExplorationStateChangeListener mTouchExplorationStateChangeListener; Loading @@ -67,6 +69,9 @@ public class ToggleScreenMagnificationPreferenceFragment extends private static final TextUtils.SimpleStringSplitter sStringColonSplitter = new TextUtils.SimpleStringSplitter(COMPONENT_NAME_SEPARATOR); private MagnificationModePreferenceController mModePreferenceController; private DialogCreatable mDialogDelegate; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Loading Loading @@ -108,6 +113,12 @@ public class ToggleScreenMagnificationPreferenceFragment extends @Override public Dialog onCreateDialog(int dialogId) { if (mDialogDelegate != null) { final Dialog dialog = mDialogDelegate.onCreateDialog(dialogId); if (dialog != null) { return dialog; } } final AlertDialog dialog; switch (dialogId) { case DialogEnums.GESTURE_NAVIGATION_TUTORIAL: Loading @@ -128,20 +139,35 @@ 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)) { return; } mSettingsPreference = new Preference(getPrefContext()); mSettingsPreference.setTitle(R.string.accessibility_menu_item_settings); // TODO(b/177371954): "magnification area" should be brought up to the highest level of the // settings UI so that it appears below "shortcut" to replace "settings. mSettingsPreference.setFragment(MagnificationSettingsFragment.class.getName()); mSettingsPreference.setTitle(R.string.accessibility_magnification_mode_title); mSettingsPreference.setKey(MagnificationModePreferenceController.PREF_KEY); mSettingsPreference.setPersistent(false); final PreferenceCategory generalCategory = findPreference(KEY_GENERAL_CATEGORY); generalCategory.addPreference(mSettingsPreference); mModePreferenceController = new MagnificationModePreferenceController(getContext(), MagnificationModePreferenceController.PREF_KEY); mModePreferenceController.setDialogHelper(this); getSettingsLifecycle().addObserver(mModePreferenceController); mModePreferenceController.displayPreference(getPreferenceScreen()); } @Override public void showDialog(int dialogId) { super.showDialog(dialogId); } @Override public void setDialogDelegate(DialogCreatable delegate) { mDialogDelegate = delegate; } @Override Loading Loading @@ -278,6 +304,13 @@ public class ToggleScreenMagnificationPreferenceFragment extends @Override public int getDialogMetricsCategory(int dialogId) { if (mDialogDelegate != null) { final int category = mDialogDelegate.getDialogMetricsCategory(dialogId); if (category != 0) { return category; } } switch (dialogId) { case DialogEnums.GESTURE_NAVIGATION_TUTORIAL: return SettingsEnums.DIALOG_TOGGLE_SCREEN_MAGNIFICATION_GESTURE_NAVIGATION; Loading Loading
res/values/styles.xml +2 −2 Original line number Diff line number Diff line Loading @@ -715,8 +715,8 @@ parent="@*android:style/Widget.DeviceDefault.Button.ButtonBar.AlertDialog"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">56dp</item> <item name="android:paddingLeft">8dp</item> <item name="android:paddingRight">8dp</item> <item name="android:paddingEnd">8dp</item> <item name="android:paddingStart">8dp</item> <item name="android:background">?android:attr/selectableItemBackground</item> </style> Loading
src/com/android/settings/accessibility/AccessibilityEditDialogUtils.java +3 −3 Original line number Diff line number Diff line Loading @@ -118,16 +118,16 @@ public class AccessibilityEditDialogUtils { * Method to show the magnification edit shortcut dialog in Magnification. * * @param context A valid context * @param dialogTitle The title of magnify edit shortcut dialog * @param positiveBtnListener The positive button listener * @return A magnification edit shortcut dialog in Magnification */ public static Dialog createMagnificationSwitchShortcutDialog(Context context, CharSequence dialogTitle, CustomButtonsClickListener positiveBtnListener) { CustomButtonsClickListener positiveBtnListener) { final View contentView = createSwitchShortcutDialogContentView(context); final AlertDialog alertDialog = new AlertDialog.Builder(context) .setView(contentView) .setTitle(dialogTitle) .setTitle(context.getString( R.string.accessibility_magnification_switch_shortcut_title)) .create(); setCustomButtonsClickListener(alertDialog, contentView, positiveBtnListener, /* negativeBtnListener= */ null); Loading
src/com/android/settings/accessibility/MagnificationModePreferenceController.java +28 −9 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ import com.android.settings.accessibility.MagnificationCapabilities.Magnificatio import com.android.settings.core.BasePreferenceController; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnCreate; import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState; import java.util.ArrayList; Loading @@ -55,8 +56,9 @@ import java.util.StringJoiner; /** Controller that shows the magnification area mode summary and the preference click behavior. */ public class MagnificationModePreferenceController extends BasePreferenceController implements DialogCreatable, LifecycleObserver, OnCreate, OnSaveInstanceState { DialogCreatable, LifecycleObserver, OnCreate, OnResume, OnSaveInstanceState { static final String PREF_KEY = "screen_magnification_mode"; private static final int DIALOG_ID_BASE = 10; @VisibleForTesting static final int DIALOG_MAGNIFICATION_MODE = DIALOG_ID_BASE + 1; Loading @@ -68,7 +70,7 @@ public class MagnificationModePreferenceController extends BasePreferenceControl private static final String TAG = "MagnificationModePreferenceController"; private static final char COMPONENT_NAME_SEPARATOR = ':'; private MagnificationSettingsFragment mParentFragment; private DialogHelper mDialogHelper; // The magnification mode in the dialog. private int mMode = MagnificationMode.NONE; private Preference mModePreference; Loading Loading @@ -121,7 +123,7 @@ public class MagnificationModePreferenceController extends BasePreferenceControl mModePreference = screen.findPreference(getPreferenceKey()); mModePreference.setOnPreferenceClickListener(preference -> { mMode = MagnificationCapabilities.getCapabilities(mContext); mParentFragment.showDialog(DIALOG_MAGNIFICATION_MODE); mDialogHelper.showDialog(DIALOG_MAGNIFICATION_MODE); return true; }); } Loading @@ -131,8 +133,12 @@ public class MagnificationModePreferenceController extends BasePreferenceControl outState.putInt(EXTRA_MODE, mMode); } public void setParentFragment(MagnificationSettingsFragment parentFragment) { mParentFragment = parentFragment; /** * Sets {@link DialogHelper} used to show the dialog. */ public void setDialogHelper(DialogHelper dialogHelper) { mDialogHelper = dialogHelper; mDialogHelper.setDialogDelegate(this); } @Override Loading Loading @@ -207,7 +213,7 @@ public class MagnificationModePreferenceController extends BasePreferenceControl } mMode = modeInfo.mMagnificationMode; if (isTripleTapEnabled(mContext) && mMode != MagnificationMode.FULLSCREEN) { mParentFragment.showDialog(DIALOG_MAGNIFICATION_SWITCH_SHORTCUT); mDialogHelper.showDialog(DIALOG_MAGNIFICATION_SWITCH_SHORTCUT); } } Loading @@ -229,9 +235,7 @@ public class MagnificationModePreferenceController extends BasePreferenceControl } private Dialog createMagnificationShortCutConfirmDialog() { final String title = mContext.getString( R.string.accessibility_magnification_switch_shortcut_title); return AccessibilityEditDialogUtils.createMagnificationSwitchShortcutDialog(mContext, title, return AccessibilityEditDialogUtils.createMagnificationSwitchShortcutDialog(mContext, this::onSwitchShortcutDialogButtonClicked); } Loading Loading @@ -267,6 +271,21 @@ public class MagnificationModePreferenceController extends BasePreferenceControl joiner.toString()); } // TODO(b/186731461): Remove it when this controller is used in DashBoardFragment only. @Override public void onResume() { updateState(mModePreference); } /** * An interface to help the delegate to show the dialog. It will be injected to the delegate. */ interface DialogHelper extends DialogCreatable { void showDialog(int dialogId); void setDialogDelegate(DialogCreatable delegate); } @VisibleForTesting static class MagnificationModeInfo extends ItemInfoArrayAdapter.ItemInfo { @MagnificationMode Loading
src/com/android/settings/accessibility/MagnificationSettingsFragment.java +16 −9 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.app.Dialog; import android.app.settings.SettingsEnums; import android.content.Context; import com.android.settings.DialogCreatable; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.search.BaseSearchIndexProvider; Loading @@ -27,11 +28,13 @@ import com.android.settingslib.search.SearchIndexable; /** Settings page for magnification. */ @SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public class MagnificationSettingsFragment extends DashboardFragment { public class MagnificationSettingsFragment extends DashboardFragment implements MagnificationModePreferenceController.DialogHelper { private static final String TAG = "MagnificationSettingsFragment"; private MagnificationModePreferenceController mMagnificationModePreferenceController; private DialogCreatable mDialogDelegate; @Override public int getMetricsCategory() { Loading @@ -41,19 +44,23 @@ public class MagnificationSettingsFragment extends DashboardFragment { @Override public void onAttach(Context context) { super.onAttach(context); mMagnificationModePreferenceController = use(MagnificationModePreferenceController.class); mMagnificationModePreferenceController.setParentFragment(this); use(MagnificationModePreferenceController.class).setDialogHelper(this); } @Override protected void showDialog(int dialogId) { public void showDialog(int dialogId) { super.showDialog(dialogId); } @Override public void setDialogDelegate(DialogCreatable delegate) { mDialogDelegate = delegate; } @Override public int getDialogMetricsCategory(int dialogId) { if (mMagnificationModePreferenceController != null) { return mMagnificationModePreferenceController.getDialogMetricsCategory(dialogId); if (mDialogDelegate != null) { return mDialogDelegate.getDialogMetricsCategory(dialogId); } return 0; } Loading @@ -70,8 +77,8 @@ public class MagnificationSettingsFragment extends DashboardFragment { @Override public Dialog onCreateDialog(int dialogId) { if (mMagnificationModePreferenceController != null) { final Dialog dialog = mMagnificationModePreferenceController.onCreateDialog(dialogId); if (mDialogDelegate != null) { final Dialog dialog = mDialogDelegate.onCreateDialog(dialogId); if (dialog != null) { return dialog; } Loading
src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +38 −5 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import androidx.preference.Preference; 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.AccessibilityUtil.UserShortcutType; Loading @@ -55,7 +56,8 @@ import java.util.StringJoiner; * and does not have toggle bar to turn on service to use. */ public class ToggleScreenMagnificationPreferenceFragment extends ToggleFeaturePreferenceFragment { ToggleFeaturePreferenceFragment implements MagnificationModePreferenceController.DialogHelper { // TODO(b/147021230): Move duplicated functions with android/internal/accessibility into util. private TouchExplorationStateChangeListener mTouchExplorationStateChangeListener; Loading @@ -67,6 +69,9 @@ public class ToggleScreenMagnificationPreferenceFragment extends private static final TextUtils.SimpleStringSplitter sStringColonSplitter = new TextUtils.SimpleStringSplitter(COMPONENT_NAME_SEPARATOR); private MagnificationModePreferenceController mModePreferenceController; private DialogCreatable mDialogDelegate; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Loading Loading @@ -108,6 +113,12 @@ public class ToggleScreenMagnificationPreferenceFragment extends @Override public Dialog onCreateDialog(int dialogId) { if (mDialogDelegate != null) { final Dialog dialog = mDialogDelegate.onCreateDialog(dialogId); if (dialog != null) { return dialog; } } final AlertDialog dialog; switch (dialogId) { case DialogEnums.GESTURE_NAVIGATION_TUTORIAL: Loading @@ -128,20 +139,35 @@ 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)) { return; } mSettingsPreference = new Preference(getPrefContext()); mSettingsPreference.setTitle(R.string.accessibility_menu_item_settings); // TODO(b/177371954): "magnification area" should be brought up to the highest level of the // settings UI so that it appears below "shortcut" to replace "settings. mSettingsPreference.setFragment(MagnificationSettingsFragment.class.getName()); mSettingsPreference.setTitle(R.string.accessibility_magnification_mode_title); mSettingsPreference.setKey(MagnificationModePreferenceController.PREF_KEY); mSettingsPreference.setPersistent(false); final PreferenceCategory generalCategory = findPreference(KEY_GENERAL_CATEGORY); generalCategory.addPreference(mSettingsPreference); mModePreferenceController = new MagnificationModePreferenceController(getContext(), MagnificationModePreferenceController.PREF_KEY); mModePreferenceController.setDialogHelper(this); getSettingsLifecycle().addObserver(mModePreferenceController); mModePreferenceController.displayPreference(getPreferenceScreen()); } @Override public void showDialog(int dialogId) { super.showDialog(dialogId); } @Override public void setDialogDelegate(DialogCreatable delegate) { mDialogDelegate = delegate; } @Override Loading Loading @@ -278,6 +304,13 @@ public class ToggleScreenMagnificationPreferenceFragment extends @Override public int getDialogMetricsCategory(int dialogId) { if (mDialogDelegate != null) { final int category = mDialogDelegate.getDialogMetricsCategory(dialogId); if (category != 0) { return category; } } switch (dialogId) { case DialogEnums.GESTURE_NAVIGATION_TUTORIAL: return SettingsEnums.DIALOG_TOGGLE_SCREEN_MAGNIFICATION_GESTURE_NAVIGATION; Loading