diff options
author | ryanlwlin <ryanlwlin@google.com> | 2021-04-27 20:03:21 +0800 |
---|---|---|
committer | ryanlwlin <ryanlwlin@google.com> | 2021-04-29 20:12:35 +0800 |
commit | 6269a92e162bb46bfd4c18d5760ab4a39bfd9782 (patch) | |
tree | 59928dea4a38deddf06519c6039756d8c699996d /src/com/android/settings/accessibility/MagnificationModePreferenceController.java | |
parent | 95b5d0393d18a656664591b9156a5619ee6906f8 (diff) | |
download | packages_apps_Settings-6269a92e162bb46bfd4c18d5760ab4a39bfd9782.tar.gz packages_apps_Settings-6269a92e162bb46bfd4c18d5760ab4a39bfd9782.tar.bz2 packages_apps_Settings-6269a92e162bb46bfd4c18d5760ab4a39bfd9782.zip |
Move Magnification Mode Settings to the main page
We move the mode settings because currently there is
only one item in the settings page. To fully test all logic,
we don't use fragament anymore in the controllerTest, and
test the interaction between the controller and the fragment
in the test of these two fragments.
Bug: 182992338
Test: atest ToggleScreenMagnificationPreferenceFragmentTest
atest MagnificationModePreferenceControllerTest
atest MagnificationSettingsFragmentTest
manually test
Change-Id: Ia6b0ea4f116f3215407637d7aeaddb8d8196d8fb
Diffstat (limited to 'src/com/android/settings/accessibility/MagnificationModePreferenceController.java')
-rw-r--r-- | src/com/android/settings/accessibility/MagnificationModePreferenceController.java | 37 |
1 files changed, 28 insertions, 9 deletions
diff --git a/src/com/android/settings/accessibility/MagnificationModePreferenceController.java b/src/com/android/settings/accessibility/MagnificationModePreferenceController.java index 67b68ccb93..ef858345ce 100644 --- a/src/com/android/settings/accessibility/MagnificationModePreferenceController.java +++ b/src/com/android/settings/accessibility/MagnificationModePreferenceController.java @@ -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; @@ -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; @@ -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; @@ -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; }); } @@ -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 @@ -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); } } @@ -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); } @@ -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 |