summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/accessibility/MagnificationModePreferenceController.java
diff options
context:
space:
mode:
authorryanlwlin <ryanlwlin@google.com>2021-04-27 20:03:21 +0800
committerryanlwlin <ryanlwlin@google.com>2021-04-29 20:12:35 +0800
commit6269a92e162bb46bfd4c18d5760ab4a39bfd9782 (patch)
tree59928dea4a38deddf06519c6039756d8c699996d /src/com/android/settings/accessibility/MagnificationModePreferenceController.java
parent95b5d0393d18a656664591b9156a5619ee6906f8 (diff)
downloadpackages_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.java37
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