Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 65a0488e authored by Menghan Li's avatar Menghan Li Committed by Android (Google) Code Review
Browse files

Merge "Maginfy Improvement"

parents 48b13247 f3eb2de6
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -4771,7 +4771,7 @@
    <!-- Title for the accessibility preference screen to enable video captioning. [CHAR LIMIT=35] -->
    <string name="accessibility_captioning_title">Caption preferences</string>
    <!-- Title for the accessibility preference screen to enable screen magnification. [CHAR LIMIT=35] -->
    <string name="accessibility_screen_magnification_title">Magnification</string>
    <string name="accessibility_screen_magnification_title">Magnify</string>
    <!-- Title for the accessibility preference screen to edit magnification area. [CHAR LIMIT=35] -->
    <string name="accessibility_magnification_mode_title">Magnification area</string>
    <!-- Message for the accessibility preference screen to edit magnification area dialog. [CHAR LIMIT=none] -->
@@ -4791,13 +4791,17 @@
    <!-- Summary for the accessibility preference screen to show move controller. [CHAR LIMIT=none] -->
    <string name="accessibility_magnification_window_control_switch_summary">Show a joystick-like controller to move the magnification area</string>
    <!-- Title for the accessibility preference screen to enable screen magnification settings. [CHAR LIMIT=35] -->
    <string name="accessibility_magnification_service_settings_title">Magnify settings</string>
    <string name="accessibility_magnification_service_settings_title">Magnification settings</string>
    <!-- Title for the accessibility preference screen to enable triple-tap gesture screen magnification. [CHAR LIMIT=35] -->
    <string name="accessibility_screen_magnification_gestures_title">Magnify with triple-tap</string>
    <!-- Title for the accessibility preference screen to enable navigation bar screen magnification. [CHAR LIMIT=35] -->
    <string name="accessibility_screen_magnification_navbar_title">Magnify with shortcut</string>
    <!-- Summary for the accessibility magnification setting indicating both "Magnify with button" and "Magnify with triple-tap" are enabled [CHAR LIMIT=50] -->
    <string name="accessibility_screen_magnification_state_navbar_gesture">Magnify with shortcut &amp; triple-tap</string>
    <!-- Title for the footer text to explain what Magnify does. [CHAR LIMIT=35] -->
    <string name="accessibility_screen_magnification_about">About Magnify</string>
    <!-- Title for the footer text to explain what option accessibility service does. [CHAR LIMIT=35] -->
    <string name="accessibility_screen_option">Options</string>
    <!-- Summary for the accessibility preference to enable screen magnification. [CHAR LIMIT=25] -->
    <string name="accessibility_preference_magnification_summary">Zoom in on screen</string>
    <!-- Short summary for Magnification gesture. Tells the user that this feature allows the user to magnify the screen by tapping 3 times. Appears in accessibility portion of setup wizard -->
+20 −22
Original line number Diff line number Diff line
@@ -15,47 +15,45 @@
-->

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
        android:title="@string/vision_settings_title"
        android:persistent="true" >
    xmlns:settings="http://schemas.android.com/apk/res-auto"
    android:persistent="true"
    android:title="@string/vision_settings_title">

    <com.android.settings.accessibility.DividerAllowedBelowPreference
        android:key="vision_settings_summary"
        android:title="@string/vision_settings_description"
        android:layout="@layout/preference_multiline_title"
        android:selectable="false" />
        android:selectable="false"
        android:title="@string/vision_settings_description" />

    <Preference
        android:fragment=
                "com.android.settings.accessibility.MagnificationPreferenceFragment"
        settings:controller="com.android.settings.accessibility.MagnificationPreferenceController"
        android:fragment="com.android.settings.accessibility.MagnificationPreferenceFragment"
        android:key="screen_magnification_preference"
        android:title="@string/accessibility_screen_magnification_title"
        android:summary="@string/accessibility_preference_magnification_summary" />
        android:summary="@string/accessibility_preference_magnification_summary"
        android:title="@string/accessibility_screen_magnification_title" />

    <Preference
        android:fragment=
                "com.android.settings.display.FontSizePreferenceFragmentForSetupWizard"
        android:fragment="com.android.settings.display.FontSizePreferenceFragmentForSetupWizard"
        android:key="font_size_preference"
        android:title="@string/title_font_size"
        android:summary="@string/short_summary_font_size" />
        android:summary="@string/short_summary_font_size"
        android:title="@string/title_font_size" />

    <com.android.settings.display.ScreenZoomPreference
        android:fragment="com.android.settings.display.ScreenZoomPreferenceFragmentForSetupWizard"
        android:key="force_density_preference"
        android:title="@string/screen_zoom_title"
        android:summary="@string/screen_zoom_short_summary" />
        android:summary="@string/screen_zoom_short_summary"
        android:title="@string/screen_zoom_title" />

    <Preference
        android:fragment=
                "com.android.settings.accessibility.ToggleSelectToSpeakPreferenceFragmentForSetupWizard"
        android:fragment="com.android.settings.accessibility.ToggleSelectToSpeakPreferenceFragmentForSetupWizard"
        android:key="select_to_speak_preference"
        android:summary="@string/select_to_speak_summary"
        android:persistent="true" />
        android:persistent="true"
        android:summary="@string/select_to_speak_summary" />

    <Preference
        android:fragment=
                "com.android.settings.accessibility.ToggleScreenReaderPreferenceFragmentForSetupWizard"
        android:fragment="com.android.settings.accessibility.ToggleScreenReaderPreferenceFragmentForSetupWizard"
        android:key="screen_reader_preference"
        android:summary="@string/talkback_summary"
        android:persistent="true" />
        android:persistent="true"
        android:summary="@string/talkback_summary" />

</PreferenceScreen>
+5 −11
Original line number Diff line number Diff line
@@ -49,7 +49,6 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
            "screen_magnification_preference";
    private static final String SCREEN_READER_PREFERENCE = "screen_reader_preference";
    private static final String SELECT_TO_SPEAK_PREFERENCE = "select_to_speak_preference";
    private static final String FONT_SIZE_PREFERENCE = "font_size_preference";

    // Package names and service names used to identify screen reader and SelectToSpeak services.
    private static final String SCREEN_READER_PACKAGE_NAME = "com.google.android.marvin.talkback";
@@ -175,11 +174,7 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
    }

    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();
@@ -187,4 +182,3 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
                .populateMagnificationGesturesPreferenceExtras(extras, context);
    }
}
}
+4 −9
Original line number Diff line number Diff line
@@ -67,14 +67,9 @@ public class MagnificationPreferenceController extends BasePreferenceController
    }

    private void configureMagnificationPreferenceIfNeeded() {
        // 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.
        if (!MagnificationPreferenceFragment.isApplicable(mContext.getResources())) {
        mPreference.setFragment(ToggleScreenMagnificationPreferenceFragment.class.getName());
        final Bundle extras = mPreference.getExtras();
        MagnificationGesturesPreferenceController
                .populateMagnificationGesturesPreferenceExtras(extras, mContext);
    }
}
}
+50 −51
Original line number Diff line number Diff line
@@ -38,17 +38,16 @@ import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.Switch;
import android.widget.VideoView;

import androidx.appcompat.app.AlertDialog;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceScreen;
import androidx.preference.PreferenceViewHolder;

import com.android.settings.R;
import com.android.settings.accessibility.AccessibilityUtil.PreferredShortcutType;
import com.android.settings.widget.SwitchBar;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -57,8 +56,7 @@ import java.util.List;
import java.util.StringJoiner;

public class ToggleScreenMagnificationPreferenceFragment extends
        ToggleFeaturePreferenceFragment implements SwitchBar.OnSwitchChangeListener,
        ShortcutPreference.OnClickListener {
        ToggleFeaturePreferenceFragment implements ShortcutPreference.OnClickListener {

    private static final String SETTINGS_KEY = "screen_magnification_settings";
    private static final String EXTRA_SHORTCUT_TYPE = "shortcutType";
@@ -78,6 +76,8 @@ public class ToggleScreenMagnificationPreferenceFragment extends
    private static final TextUtils.SimpleStringSplitter sStringColonSplitter =
            new TextUtils.SimpleStringSplitter(COMPONENT_NAME_SEPARATOR);

    protected Preference mConfigWarningPreference;
    protected VideoPreference mVideoPreference;
    protected class VideoPreference extends Preference {
        private ImageView mVideoBackgroundView;
        private OnGlobalLayoutListener mLayoutListener;
@@ -154,25 +154,35 @@ public class ToggleScreenMagnificationPreferenceFragment extends
        }
    }

    protected VideoPreference mVideoPreference;
    protected Preference mConfigWarningPreference;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getActivity().setTitle(R.string.accessibility_screen_magnification_title);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        mVideoPreference = new VideoPreference(getPrefContext());
        mVideoPreference.setSelectable(false);
        mVideoPreference.setPersistent(false);
        mVideoPreference.setLayoutResource(R.layout.magnification_video_preference);

        final PreferenceCategory optionCategory = new PreferenceCategory(getPrefContext());
        optionCategory.setTitle(R.string.accessibility_screen_option);

        initShortcutPreference(savedInstanceState);

        final Preference settingsPreference = new Preference(getPrefContext());
        final String SettingsText = getString(R.string.settings_button);
        settingsPreference.setTitle(SettingsText);
        settingsPreference.setTitle(R.string.accessibility_magnification_service_settings_title);
        settingsPreference.setKey(SETTINGS_KEY);
        settingsPreference.setFragment(MagnificationSettingsFragment.class.getName());
        settingsPreference.setPersistent(false);

        final PreferenceCategory aboutCategory = new PreferenceCategory(getPrefContext());
        aboutCategory.setTitle(R.string.accessibility_screen_magnification_about);

        mConfigWarningPreference = new Preference(getPrefContext());
        mConfigWarningPreference.setSelectable(false);
        mConfigWarningPreference.setPersistent(false);
@@ -182,17 +192,15 @@ public class ToggleScreenMagnificationPreferenceFragment extends
        final PreferenceScreen preferenceScreen = getPreferenceManager().getPreferenceScreen();
        preferenceScreen.setOrderingAsAdded(false);
        mVideoPreference.setOrder(0);
        settingsPreference.setOrder(1);
        mConfigWarningPreference.setOrder(2);
        optionCategory.setOrder(1);
        aboutCategory.setOrder(2);
        preferenceScreen.addPreference(mVideoPreference);
        preferenceScreen.addPreference(settingsPreference);
        preferenceScreen.addPreference(mConfigWarningPreference);
    }
        preferenceScreen.addPreference(optionCategory);
        optionCategory.addPreference(mShortcutPreference);
        optionCategory.addPreference(settingsPreference);
        preferenceScreen.addPreference(aboutCategory);
        aboutCategory.addPreference(mConfigWarningPreference);

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        initShortcutPreference(savedInstanceState);
        return super.onCreateView(inflater, container, savedInstanceState);
    }

@@ -377,11 +385,6 @@ public class ToggleScreenMagnificationPreferenceFragment extends
        }
    }

    @Override
    public void onSwitchChanged(Switch switchView, boolean isChecked) {
        onPreferenceToggled(mPreferenceKey, isChecked);
    }

    @Override
    protected void onPreferenceToggled(String preferenceKey, boolean enabled) {
        if (enabled && TextUtils.equals(
@@ -399,22 +402,8 @@ public class ToggleScreenMagnificationPreferenceFragment extends
    protected void onInstallSwitchBarToggleSwitch() {
        super.onInstallSwitchBarToggleSwitch();

        mSwitchBar.setCheckedInternal(
                MagnificationPreferenceFragment.isChecked(getContentResolver(), mPreferenceKey));
        mSwitchBar.addOnSwitchChangeListener(this);
    }

    @Override
    protected void onRemoveSwitchBarToggleSwitch() {
        super.onRemoveSwitchBarToggleSwitch();
        mSwitchBar.removeOnSwitchChangeListener(this);
    }

    @Override
    protected void updateSwitchBarText(SwitchBar switchBar) {
        final String switchBarText = getString(R.string.accessibility_service_master_switch_title,
                getString(R.string.accessibility_screen_magnification_title));
        switchBar.setSwitchBarText(switchBarText, switchBarText);
        // Magnify is temporary-use app which uses shortcut to magnify screen, not by toggle.
        mSwitchBar.hide();
    }

    @Override
@@ -429,13 +418,6 @@ public class ToggleScreenMagnificationPreferenceFragment extends
        } else {
            mVideoPreference.setVisible(false);
        }

        if (arguments.containsKey(AccessibilitySettings.EXTRA_TITLE_RES)) {
            final int titleRes = arguments.getInt(AccessibilitySettings.EXTRA_TITLE_RES);
            if (titleRes > 0) {
                getActivity().setTitle(titleRes);
            }
        }
    }

    @Override
@@ -443,15 +425,35 @@ public class ToggleScreenMagnificationPreferenceFragment extends
        if (preference.getChecked()) {
            // TODO(b/142531156): Replace PreferredShortcutType.SOFTWARE value with dialog shortcut
            //  preferred key.
            optInMagnificationValueToSettings(getContext(), PreferredShortcutType.SOFTWARE);

            // TODO(b/142531156): ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED need to be treated
            //  as special case in this file.
            optInMagnificationValueToSettings(getContext(), PreferredShortcutType.SOFTWARE);
            if ((mPreferredShortcutType & PreferredShortcutType.SOFTWARE)
                    == PreferredShortcutType.SOFTWARE) {
                MagnificationPreferenceFragment.setChecked(getContentResolver(),
                        Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED,
                        /* isChecked= */ true);
            }
            if ((mPreferredShortcutType & PreferredShortcutType.TRIPLETAP)
                    == PreferredShortcutType.TRIPLETAP) {
                MagnificationPreferenceFragment.setChecked(getContentResolver(),
                        Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED,
                        /* isChecked= */ true);
            }
        } else {
            // TODO(b/142531156): Replace PreferredShortcutType.SOFTWARE value with dialog shortcut
            //  preferred key.
            optOutMagnificationValueFromSettings(getContext(), PreferredShortcutType.SOFTWARE);

            // TODO(b/142531156): ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED need to be treated
            //  as special case in this file.
            optOutMagnificationValueFromSettings(getContext(), PreferredShortcutType.SOFTWARE);
            MagnificationPreferenceFragment.setChecked(getContentResolver(),
                    Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED,
                    /* isChecked= */ false);
            MagnificationPreferenceFragment.setChecked(getContentResolver(),
                    Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED,
                    /* isChecked= */ false);
        }
    }

@@ -480,10 +482,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends
        mShortcutPreference.setTitle(R.string.accessibility_magnification_shortcut_title);
        mShortcutPreference.setSummary(getShortcutTypeSummary(getPrefContext()));
        mShortcutPreference.setOnClickListener(this);
        // Put the shortcutPreference before videoPreference.
        mShortcutPreference.setOrder(mVideoPreference.getOrder() - 1);
        // TODO(b/142530063): Check the new setting key to decide which summary should be shown.
        preferenceScreen.addPreference(mShortcutPreference);
    }

    private void updateShortcutPreference() {