diff --git a/res/values/strings.xml b/res/values/strings.xml
index 28ad81b3224..6dc4a4d8e00 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4773,6 +4773,8 @@
Magnify
Magnification area
+
+ Magnification enable
Choose the magnification area(s) you want to use when magnifying the screen
@@ -4785,10 +4787,6 @@
Magnify entire screen
Magnify part of screen
-
- Show move controller
-
- Show a joystick-like controller to move the magnification area
Magnification settings
diff --git a/res/xml/accessibility_magnification_service_settings.xml b/res/xml/accessibility_magnification_service_settings.xml
index d67fc66c75c..74765b29857 100644
--- a/res/xml/accessibility_magnification_service_settings.xml
+++ b/res/xml/accessibility_magnification_service_settings.xml
@@ -28,9 +28,11 @@
settings:controller="com.android.settings.accessibility.MagnificationModePreferenceController" />
+ android:title="@string/accessibility_magnification_enable_mode_title"
+ android:summaryOn="@string/accessibility_magnification_area_settings_full_screen_summary"
+ android:summaryOff="@string/accessibility_magnification_area_settings_window_screen_summary"
+ settings:controller="com.android.settings.accessibility.MagnificationEnablePreferenceController" />
+
diff --git a/src/com/android/settings/accessibility/MagnificationEnablePreferenceController.java b/src/com/android/settings/accessibility/MagnificationEnablePreferenceController.java
new file mode 100644
index 00000000000..a21c024fccc
--- /dev/null
+++ b/src/com/android/settings/accessibility/MagnificationEnablePreferenceController.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.accessibility;
+
+import android.content.Context;
+import android.os.UserHandle;
+import android.provider.Settings;
+
+import androidx.preference.Preference;
+import androidx.preference.SwitchPreference;
+
+import com.android.settings.core.TogglePreferenceController;
+
+/** Controller that shows the magnification enable mode summary. */
+public class MagnificationEnablePreferenceController extends TogglePreferenceController {
+
+ private static final String KEY_ENABLE = Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE;
+
+ public MagnificationEnablePreferenceController(Context context, String preferenceKey) {
+ super(context, preferenceKey);
+ }
+
+ @Override
+ public boolean isChecked() {
+ final int enableMode = Settings.Secure.getIntForUser(mContext.getContentResolver(),
+ KEY_ENABLE,
+ Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN,
+ UserHandle.USER_CURRENT);
+ return enableMode == Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN;
+ }
+
+ @Override
+ public boolean setChecked(boolean isChecked) {
+ final int value = isChecked ? Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN
+ : Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
+ return Settings.Secure.putIntForUser(mContext.getContentResolver(), KEY_ENABLE, value,
+ UserHandle.USER_CURRENT);
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return AVAILABLE;
+ }
+}
diff --git a/src/com/android/settings/accessibility/MagnificationWindowControlPreferenceController.java b/src/com/android/settings/accessibility/MagnificationWindowControlPreferenceController.java
deleted file mode 100644
index 4badc3f4ecf..00000000000
--- a/src/com/android/settings/accessibility/MagnificationWindowControlPreferenceController.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.accessibility;
-
-import android.content.Context;
-import android.os.UserHandle;
-import android.provider.Settings;
-
-import com.android.settings.core.TogglePreferenceController;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/** Controller that shows and updates the magnification window control switch. */
-public class MagnificationWindowControlPreferenceController extends TogglePreferenceController {
-
- // TODO(b/146019459): Use magnification_window_control_enabled.
- private static final String KEY_CONTROL = Settings.System.MASTER_MONO;
-
- public MagnificationWindowControlPreferenceController(Context context, String preferenceKey) {
- super(context, preferenceKey);
- }
-
- @Override
- public boolean isChecked() {
- return Settings.System.getIntForUser(mContext.getContentResolver(),
- KEY_CONTROL, State.OFF, UserHandle.USER_CURRENT) == State.ON;
- }
-
- @Override
- public boolean setChecked(boolean isChecked) {
- return Settings.System.putIntForUser(mContext.getContentResolver(),
- KEY_CONTROL, isChecked ? State.ON : State.OFF, UserHandle.USER_CURRENT);
- }
-
- @Override
- public int getAvailabilityStatus() {
- return AVAILABLE;
- }
-
- @Retention(RetentionPolicy.SOURCE)
- private @interface State {
- int OFF = 0;
- int ON = 1;
- }
-}
diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
index ac4a961a6f1..c0f6493b058 100644
--- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
@@ -257,6 +257,11 @@ public class ToggleScreenMagnificationPreferenceFragment extends
updateAlertDialogCheckState();
updateAlertDialogEnableState();
+ // Window magnification mode doesn't support advancedView.
+ if (isWindowMagnification(getPrefContext())) {
+ advancedView.setVisibility(View.GONE);
+ return;
+ }
// Shows the triple tap checkbox directly if clicked.
if (mTripleTapTypeCheckBox.isChecked()) {
advancedView.setVisibility(View.GONE);
@@ -614,4 +619,13 @@ public class ToggleScreenMagnificationPreferenceFragment extends
}
return false;
}
+
+ private boolean isWindowMagnification(Context context) {
+ final int mode = Settings.Secure.getIntForUser(
+ context.getContentResolver(),
+ Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE,
+ Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN,
+ context.getContentResolver().getUserId());
+ return mode == Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW;
+ }
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/MagnificationWindowControlPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/MagnificationEnablePreferenceControllerTest.java
similarity index 53%
rename from tests/robotests/src/com/android/settings/accessibility/MagnificationWindowControlPreferenceControllerTest.java
rename to tests/robotests/src/com/android/settings/accessibility/MagnificationEnablePreferenceControllerTest.java
index 05dbb57ead0..a34e04a4e40 100644
--- a/tests/robotests/src/com/android/settings/accessibility/MagnificationWindowControlPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/MagnificationEnablePreferenceControllerTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2019 The Android Open Source Project
+ * Copyright (C) 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -30,29 +30,27 @@ import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
@RunWith(RobolectricTestRunner.class)
-public class MagnificationWindowControlPreferenceControllerTest {
- private static final String PREF_KEY = "screen_magnification_window_control_switch";
- // TODO(b/146019459): Use magnification_window_control_enabled.
- private static final String KEY_CONTROL = Settings.System.MASTER_MONO;
+public class MagnificationEnablePreferenceControllerTest {
+ private static final String PREF_KEY = "screen_magnification_enable";
+ private static final String KEY_ENABLE = Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE;
+ private static final int UNKNOWN = -1;
private Context mContext;
private SwitchPreference mPreference;
- private MagnificationWindowControlPreferenceController mController;
+ private MagnificationEnablePreferenceController mController;
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
mPreference = new SwitchPreference(mContext);
- mController = new MagnificationWindowControlPreferenceController(mContext, PREF_KEY);
+ mController = new MagnificationEnablePreferenceController(mContext, PREF_KEY);
}
@Test
- public void isChecked_enabledWindowControl_shouldReturnTrue() {
- Settings.System.putIntForUser(mContext.getContentResolver(),
- KEY_CONTROL, State.ON, UserHandle.USER_CURRENT);
+ public void isChecked_enabledFullscreenMagnificationMode_shouldReturnTrue() {
+ Settings.Secure.putIntForUser(mContext.getContentResolver(),
+ KEY_ENABLE, Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN,
+ UserHandle.USER_CURRENT);
mController.updateState(mPreference);
@@ -61,9 +59,10 @@ public class MagnificationWindowControlPreferenceControllerTest {
}
@Test
- public void isChecked_disabledWindowControl_shouldReturnFalse() {
- Settings.System.putIntForUser(mContext.getContentResolver(),
- KEY_CONTROL, State.OFF, UserHandle.USER_CURRENT);
+ public void isChecked_enabledWindowMagnificationMode_shouldReturnFalse() {
+ Settings.Secure.putIntForUser(mContext.getContentResolver(),
+ KEY_ENABLE, Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW,
+ UserHandle.USER_CURRENT);
mController.updateState(mPreference);
@@ -71,26 +70,24 @@ public class MagnificationWindowControlPreferenceControllerTest {
assertThat(mPreference.isChecked()).isFalse();
}
+
@Test
- public void setChecked_setTrue_shouldEnableWindowControl() {
+ public void setChecked_setTrue_shouldEnableFullscreenMagnificationMode() {
mController.setChecked(true);
- assertThat(Settings.System.getIntForUser(mContext.getContentResolver(),
- KEY_CONTROL, State.UNKNOWN, UserHandle.USER_CURRENT)).isEqualTo(State.ON);
+ assertThat(Settings.Secure.getIntForUser(mContext.getContentResolver(),
+ KEY_ENABLE, UNKNOWN,
+ UserHandle.USER_CURRENT)).isEqualTo(
+ Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN);
}
@Test
- public void setChecked_setFalse_shouldDisableWindowControl() {
+ public void setChecked_setFalse_shouldEnableWindowMagnificationMode() {
mController.setChecked(false);
- assertThat(Settings.System.getIntForUser(mContext.getContentResolver(),
- KEY_CONTROL, State.UNKNOWN, UserHandle.USER_CURRENT)).isEqualTo(State.OFF);
- }
-
- @Retention(RetentionPolicy.SOURCE)
- private @interface State {
- int UNKNOWN = -1;
- int OFF = 0;
- int ON = 1;
+ assertThat(Settings.Secure.getIntForUser(mContext.getContentResolver(),
+ KEY_ENABLE, UNKNOWN,
+ UserHandle.USER_CURRENT)).isEqualTo(
+ Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW);
}
}