Convert Magnify controller to TogglePrefController
Convert below to TogglePreferenceController: MagnificationNavbarPreferenceController (Magnify with Button) MagnificationGesturesPreferenceController (Magnify with triple-tap) The two controllers share the same fragment, Add static method for set/get state in fragment, And use them in controllers and fragment. Change-Id: I2bdbdb36be71e1a3ffb557abc5a6115d48de53cf Fixes: 67997698 Fixes: 67997726 Test: make RunSettingsRoboTests
This commit is contained in:
@@ -19,9 +19,9 @@ import android.provider.Settings;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settings.core.TogglePreferenceController;
|
||||
|
||||
public class MagnificationGesturesPreferenceController extends BasePreferenceController {
|
||||
public class MagnificationGesturesPreferenceController extends TogglePreferenceController {
|
||||
|
||||
private boolean mIsFromSUW = false;
|
||||
|
||||
@@ -29,6 +29,18 @@ public class MagnificationGesturesPreferenceController extends BasePreferenceCon
|
||||
super(context, key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isChecked() {
|
||||
return MagnificationPreferenceFragment.isChecked(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setChecked(boolean isChecked) {
|
||||
return MagnificationPreferenceFragment.setChecked(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, isChecked);
|
||||
}
|
||||
|
||||
public void setIsFromSUW(boolean fromSUW) {
|
||||
mIsFromSUW = fromSUW;
|
||||
}
|
||||
@@ -38,6 +50,7 @@ public class MagnificationGesturesPreferenceController extends BasePreferenceCon
|
||||
if (getPreferenceKey().equals(preference.getKey())) {
|
||||
Bundle extras = preference.getExtras();
|
||||
populateMagnificationGesturesPreferenceExtras(extras, mContext);
|
||||
extras.putBoolean(AccessibilitySettings.EXTRA_CHECKED, isChecked());
|
||||
extras.putBoolean(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW, mIsFromSUW);
|
||||
}
|
||||
return false;
|
||||
@@ -54,8 +67,7 @@ public class MagnificationGesturesPreferenceController extends BasePreferenceCon
|
||||
if (mIsFromSUW) {
|
||||
resId = R.string.accessibility_screen_magnification_short_summary;
|
||||
} else {
|
||||
final boolean enabled = Settings.Secure.getInt(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 0) == 1;
|
||||
final boolean enabled = isChecked();
|
||||
resId = (enabled ? R.string.accessibility_feature_state_on :
|
||||
R.string.accessibility_feature_state_off);
|
||||
}
|
||||
@@ -69,9 +81,6 @@ public class MagnificationGesturesPreferenceController extends BasePreferenceCon
|
||||
R.string.accessibility_screen_magnification_gestures_title);
|
||||
extras.putInt(AccessibilitySettings.EXTRA_SUMMARY_RES,
|
||||
R.string.accessibility_screen_magnification_summary);
|
||||
extras.putBoolean(AccessibilitySettings.EXTRA_CHECKED,
|
||||
Settings.Secure.getInt(context.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 0) == 1);
|
||||
extras.putInt(AccessibilitySettings.EXTRA_VIDEO_RAW_RESOURCE_ID,
|
||||
R.raw.accessibility_screen_magnification);
|
||||
}
|
||||
|
@@ -19,9 +19,9 @@ import android.provider.Settings;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settings.core.TogglePreferenceController;
|
||||
|
||||
public class MagnificationNavbarPreferenceController extends BasePreferenceController {
|
||||
public class MagnificationNavbarPreferenceController extends TogglePreferenceController {
|
||||
|
||||
private boolean mIsFromSUW = false;
|
||||
|
||||
@@ -29,6 +29,18 @@ public class MagnificationNavbarPreferenceController extends BasePreferenceContr
|
||||
super(context, key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isChecked() {
|
||||
return MagnificationPreferenceFragment.isChecked(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setChecked(boolean isChecked) {
|
||||
return MagnificationPreferenceFragment.setChecked(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, isChecked);
|
||||
}
|
||||
|
||||
public void setIsFromSUW(boolean fromSUW) {
|
||||
mIsFromSUW = fromSUW;
|
||||
}
|
||||
@@ -43,10 +55,7 @@ public class MagnificationNavbarPreferenceController extends BasePreferenceContr
|
||||
R.string.accessibility_screen_magnification_navbar_title);
|
||||
extras.putInt(AccessibilitySettings.EXTRA_SUMMARY_RES,
|
||||
R.string.accessibility_screen_magnification_navbar_summary);
|
||||
extras.putBoolean(AccessibilitySettings.EXTRA_CHECKED,
|
||||
Settings.Secure.getInt(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 0)
|
||||
== 1);
|
||||
extras.putBoolean(AccessibilitySettings.EXTRA_CHECKED, isChecked());
|
||||
extras.putBoolean(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW, mIsFromSUW);
|
||||
}
|
||||
return false;
|
||||
@@ -65,8 +74,7 @@ public class MagnificationNavbarPreferenceController extends BasePreferenceContr
|
||||
if (mIsFromSUW) {
|
||||
resId = R.string.accessibility_screen_magnification_navbar_short_summary;
|
||||
} else {
|
||||
final boolean enabled = Settings.Secure.getInt(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 0) == 1;
|
||||
final boolean enabled = isChecked();
|
||||
resId = (enabled ? R.string.accessibility_feature_state_on :
|
||||
R.string.accessibility_feature_state_off);
|
||||
}
|
||||
|
@@ -18,6 +18,7 @@ package com.android.settings.accessibility;
|
||||
|
||||
import android.accessibilityservice.AccessibilityServiceInfo;
|
||||
import android.content.ComponentName;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
@@ -38,10 +39,15 @@ import com.android.settingslib.search.SearchIndexable;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.preference.Preference;
|
||||
|
||||
@SearchIndexable
|
||||
public final class MagnificationPreferenceFragment extends DashboardFragment {
|
||||
@VisibleForTesting
|
||||
static final int ON = 1;
|
||||
@VisibleForTesting
|
||||
static final int OFF = 0;
|
||||
|
||||
private static final String TAG = "MagnificationPreferenceFragment";
|
||||
|
||||
@@ -135,6 +141,15 @@ public final class MagnificationPreferenceFragment extends DashboardFragment {
|
||||
return null;
|
||||
}
|
||||
|
||||
static boolean isChecked(ContentResolver contentResolver, String settingsKey) {
|
||||
return Settings.Secure.getInt(contentResolver, settingsKey, OFF) == ON;
|
||||
}
|
||||
|
||||
static boolean setChecked(ContentResolver contentResolver, String settingsKey,
|
||||
boolean isChecked) {
|
||||
return Settings.Secure.putInt(contentResolver, settingsKey, isChecked ? ON : OFF);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return {@code true} if this fragment should be shown, {@code false} otherwise. This
|
||||
* fragment is shown in the case that more than one magnification mode is available.
|
||||
|
@@ -25,10 +25,6 @@ import android.media.MediaPlayer;
|
||||
import android.media.MediaPlayer.OnPreparedListener;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
import android.view.Display;
|
||||
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
|
||||
import android.view.WindowManager;
|
||||
@@ -41,6 +37,10 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.widget.SwitchBar;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
|
||||
public class ToggleScreenMagnificationPreferenceFragment extends
|
||||
ToggleFeaturePreferenceFragment implements SwitchBar.OnSwitchChangeListener {
|
||||
|
||||
@@ -174,7 +174,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends
|
||||
|
||||
@Override
|
||||
protected void onPreferenceToggled(String preferenceKey, boolean enabled) {
|
||||
Settings.Secure.putInt(getContentResolver(), preferenceKey, enabled ? 1 : 0);
|
||||
MagnificationPreferenceFragment.setChecked(getContentResolver(), preferenceKey, enabled);
|
||||
updateConfigurationWarningIfNeeded();
|
||||
}
|
||||
|
||||
@@ -183,7 +183,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends
|
||||
super.onInstallSwitchBarToggleSwitch();
|
||||
|
||||
mSwitchBar.setCheckedInternal(
|
||||
Settings.Secure.getInt(getContentResolver(), mPreferenceKey, 0) == 1);
|
||||
MagnificationPreferenceFragment.isChecked(getContentResolver(), mPreferenceKey));
|
||||
mSwitchBar.addOnSwitchChangeListener(this);
|
||||
}
|
||||
|
||||
|
@@ -51,8 +51,10 @@ public abstract class TogglePreferenceController extends BasePreferenceControlle
|
||||
public void updateState(Preference preference) {
|
||||
if (preference instanceof TwoStatePreference) {
|
||||
((TwoStatePreference) preference).setChecked(isChecked());
|
||||
} if (preference instanceof MasterSwitchPreference) {
|
||||
} else if (preference instanceof MasterSwitchPreference) {
|
||||
((MasterSwitchPreference) preference).setChecked(isChecked());
|
||||
} else {
|
||||
refreshSummary(preference);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -59,9 +59,6 @@ public abstract class GesturePreferenceController extends TogglePreferenceContro
|
||||
public void updateState(Preference preference) {
|
||||
super.updateState(preference);
|
||||
if (preference != null) {
|
||||
if (!(preference instanceof TwoStatePreference)) {
|
||||
preference.setSummary(getSummary());
|
||||
}
|
||||
// Different meanings of "Enabled" for the Preference and Controller.
|
||||
preference.setEnabled(canHandleClicks());
|
||||
}
|
||||
|
@@ -16,6 +16,9 @@
|
||||
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import static com.android.settings.accessibility.MagnificationPreferenceFragment.OFF;
|
||||
import static com.android.settings.accessibility.MagnificationPreferenceFragment.ON;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.content.Context;
|
||||
@@ -57,13 +60,13 @@ public class MagnificationGesturesPreferenceControllerTest {
|
||||
@Test
|
||||
public void updateState_shouldRefreshSummary() {
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 1);
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, ON);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getSummary())
|
||||
.isEqualTo(mContext.getString(R.string.accessibility_feature_state_on));
|
||||
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 0);
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, OFF);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getSummary())
|
||||
.isEqualTo(mContext.getString(R.string.accessibility_feature_state_off));
|
||||
@@ -77,4 +80,38 @@ public class MagnificationGesturesPreferenceControllerTest {
|
||||
.isEqualTo(mContext.getString(R.string.
|
||||
accessibility_screen_magnification_short_summary));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isChecked_enabled() {
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, ON);
|
||||
|
||||
assertThat(mController.isChecked()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isChecked_disabled() {
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, OFF);
|
||||
|
||||
assertThat(mController.isChecked()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setChecked_enabled() {
|
||||
mController.setChecked(true);
|
||||
|
||||
assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, -1))
|
||||
.isEqualTo(ON);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setChecked_disabled() {
|
||||
mController.setChecked(false);
|
||||
|
||||
assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, -1))
|
||||
.isEqualTo(OFF);
|
||||
}
|
||||
}
|
||||
|
@@ -16,8 +16,12 @@
|
||||
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import static com.android.settings.accessibility.MagnificationPreferenceFragment.OFF;
|
||||
import static com.android.settings.accessibility.MagnificationPreferenceFragment.ON;
|
||||
import static com.android.settings.search.ResultPayload.Availability.AVAILABLE;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.spy;
|
||||
|
||||
import android.content.Context;
|
||||
@@ -81,13 +85,13 @@ public class MagnificationNavbarPreferenceControllerTest {
|
||||
@Test
|
||||
public void updateState_shouldRefreshSummary() {
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 1);
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, ON);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getSummary())
|
||||
.isEqualTo(mContext.getText(R.string.accessibility_feature_state_on));
|
||||
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 0);
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, OFF);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getSummary())
|
||||
.isEqualTo(mContext.getText(R.string.accessibility_feature_state_off));
|
||||
@@ -102,6 +106,40 @@ public class MagnificationNavbarPreferenceControllerTest {
|
||||
accessibility_screen_magnification_navbar_short_summary));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isChecked_enabled() {
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, ON);
|
||||
|
||||
assertThat(mController.isChecked()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isChecked_disabled() {
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, OFF);
|
||||
|
||||
assertThat(mController.isChecked()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setChecked_enabled() {
|
||||
mController.setChecked(true);
|
||||
|
||||
assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, -1))
|
||||
.isEqualTo(ON);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setChecked_disabled() {
|
||||
mController.setChecked(false);
|
||||
|
||||
assertThat(Settings.Secure.getInt(mContext.getContentResolver(),
|
||||
Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, -1))
|
||||
.isEqualTo(OFF);
|
||||
}
|
||||
|
||||
@Implements(MagnificationPreferenceFragment.class)
|
||||
public static class ShadowMagnificationPreferenceFragment {
|
||||
private static boolean sIsApplicable;
|
||||
|
Reference in New Issue
Block a user