Merge "Hide "Magnify with button" if no navbar is shown" into oc-dev
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index ac618d0..1d3e125 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -389,6 +389,7 @@
// Display magnification.
mDisplayMagnificationPreferenceScreen = findPreference(
DISPLAY_MAGNIFICATION_PREFERENCE_SCREEN);
+ configureMagnificationPreferenceIfNeeded(mDisplayMagnificationPreferenceScreen);
// Font size.
mFontSizePreferenceScreen = findPreference(FONT_SIZE_PREFERENCE_SCREEN);
@@ -682,6 +683,19 @@
}
}
+ private static void configureMagnificationPreferenceIfNeeded(Preference preference) {
+ // Some devices support only a single magnification mode. In these cases, we redirect to
+ // the magnification mode's UI directly, rather than showing a PreferenceScreen with a
+ // single list item.
+ final Context context = preference.getContext();
+ if (!MagnificationPreferenceFragment.isApplicable(context.getResources())) {
+ preference.setFragment(ToggleScreenMagnificationPreferenceFragment.class.getName());
+ final Bundle extras = preference.getExtras();
+ MagnificationPreferenceFragment.populateMagnificationGesturesPreferenceExtras(extras,
+ context);
+ }
+ }
+
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider() {
@Override
diff --git a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
index 8c76fb7..55b79ba 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizard.java
@@ -18,9 +18,9 @@
import android.accessibilityservice.AccessibilityServiceInfo;
import android.content.ComponentName;
+import android.content.Context;
import android.content.pm.ServiceInfo;
import android.os.Bundle;
-import android.provider.Settings;
import android.support.v7.preference.Preference;
import android.text.TextUtils;
import android.view.accessibility.AccessibilityManager;
@@ -79,6 +79,7 @@
findService(SCREEN_READER_PACKAGE_NAME, SCREEN_READER_SERVICE_NAME));
updateAccessibilityServicePreference(mSelectToSpeakPreference,
findService(SELECT_TO_SPEAK_PACKAGE_NAME, SELECT_TO_SPEAK_SERVICE_NAME));
+ configureMagnificationPreferenceIfNeeded(mDisplayMagnificationPreference);
}
@Override
@@ -145,4 +146,18 @@
}
extras.putString(AccessibilitySettings.EXTRA_SUMMARY, description);
}
+
+ private static void configureMagnificationPreferenceIfNeeded(Preference preference) {
+ // Some devices support only a single magnification mode. In these cases, we redirect to
+ // the magnification mode's UI directly, rather than showing a PreferenceScreen with a
+ // single list item.
+ final Context context = preference.getContext();
+ if (!MagnificationPreferenceFragment.isApplicable(context.getResources())) {
+ preference.setFragment(
+ ToggleScreenMagnificationPreferenceFragmentForSetupWizard.class.getName());
+ final Bundle extras = preference.getExtras();
+ MagnificationPreferenceFragment.populateMagnificationGesturesPreferenceExtras(extras,
+ context);
+ }
+ }
}
diff --git a/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java
index 22706d7..83299e8 100644
--- a/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java
@@ -19,6 +19,7 @@
import android.accessibilityservice.AccessibilityServiceInfo;
import android.content.ComponentName;
import android.content.Context;
+import android.content.res.Resources;
import android.os.Bundle;
import android.provider.SearchIndexableResource;
import android.provider.Settings;
@@ -34,6 +35,7 @@
import com.android.settings.search.Indexable;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
public final class MagnificationPreferenceFragment extends SettingsPreferenceFragment implements
@@ -123,18 +125,7 @@
private void handleMagnificationGesturesPreferenceScreenClick() {
Bundle extras = mMagnificationGesturesPreference.getExtras();
- extras.putString(AccessibilitySettings.EXTRA_PREFERENCE_KEY,
- Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED);
- extras.putString(AccessibilitySettings.EXTRA_TITLE, getString(
- R.string.accessibility_screen_magnification_gestures_title));
- extras.putCharSequence(AccessibilitySettings.EXTRA_SUMMARY,
- getActivity().getResources().getText(
- R.string.accessibility_screen_magnification_summary));
- extras.putBoolean(AccessibilitySettings.EXTRA_CHECKED,
- Settings.Secure.getInt(getContentResolver(),
- Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 0) == 1);
- extras.putInt(AccessibilitySettings.EXTRA_VIDEO_RAW_RESOURCE_ID,
- R.raw.accessibility_screen_magnification);
+ populateMagnificationGesturesPreferenceExtras(extras, getContext());
extras.putBoolean(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW, mLaunchedFromSuw);
}
@@ -188,14 +179,40 @@
return null;
}
+ static void populateMagnificationGesturesPreferenceExtras(Bundle extras, Context context) {
+ extras.putString(AccessibilitySettings.EXTRA_PREFERENCE_KEY,
+ Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED);
+ extras.putString(AccessibilitySettings.EXTRA_TITLE, context.getString(
+ R.string.accessibility_screen_magnification_gestures_title));
+ extras.putCharSequence(AccessibilitySettings.EXTRA_SUMMARY, context.getResources().getText(
+ 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);
+ }
+
+ /**
+ * @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.
+ */
+ static boolean isApplicable(Resources res) {
+ return res.getBoolean(com.android.internal.R.bool.config_showNavigationBar);
+ }
+
public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider() {
@Override
public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
boolean enabled) {
- final SearchIndexableResource sir = new SearchIndexableResource(context);
- sir.xmlResId = R.xml.accessibility_magnification_settings;
- return Arrays.asList(sir);
+ if (isApplicable(context.getResources())) {
+ final SearchIndexableResource sir = new SearchIndexableResource(context);
+ sir.xmlResId = R.xml.accessibility_magnification_settings;
+ return Arrays.asList(sir);
+ } else {
+ return Collections.emptyList();
+ }
}
};
}