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

Commit a59f1aac authored by Svetoslav Ganov's avatar Svetoslav Ganov
Browse files

Setting to enable the global gesture for turning on accessibility.

1. Adding a setting to enable the gesture to turn on accessibility.
   This is a new screen with a toggle switch similarly as screen
   magnification which will contain explanation of how to perform
   the gesture.

bug:6171929

Change-Id: I84dfa46a9b7b789d99923684e08e52cf7d236eb2
parent 88c9f288
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -3092,7 +3092,7 @@
    <string name="accessibility_system_title">System</string>
    <!-- Title for the accessibility preference screen to enable screen magnification. [CHAR LIMIT=35] -->
    <string name="accessibility_screen_magnification_title">Screen magnification</string>
    <!-- Summary for the accessibility preference screen to enable screen magnification. [CHAR LIMIT=35] -->
    <!-- Summary for the accessibility preference screen to enable screen magnification. [CHAR LIMIT=none] -->
    <string name="accessibility_screen_magnification_summary">
        When screen magnification is on, you can\:\n\n

@@ -3105,6 +3105,12 @@
        Pan: Drag two or more fingers across the screen.\n
        Adjust zoom level: Pinch or expand using two or more fingers.
    </string>
    <!-- Title for the accessibility preference screen to enable the global geture to enable accessibility. [CHAR LIMIT=35] -->
    <string name="accessibility_global_gesture_preference_title">Global enable gesture</string>
    <!--  Summary for the accessibility preference screen to enable the global geture to enable accessibility. [CHAR LIMIT=none] -->
    <string name="accessibility_global_gesture_preference_summary">
        To enable accessibility long press the power button, after a vibration or a beep long press with two fingers.
    </string>
    <!-- Title for the accessibility preference to enable large text. [CHAR LIMIT=35] -->
    <string name="accessibility_toggle_large_text_preference_title">Large text</string>
    <!-- Title for the accessibility preference to enable screen magnification. [CHAR LIMIT=35] -->
+5 −0
Original line number Diff line number Diff line
@@ -52,6 +52,11 @@
                android:title="@string/accessibility_toggle_speak_password_preference_title"
                android:persistent="false"/>

        <PreferenceScreen
                android:fragment="com.android.settings.AccessibilitySettings$ToggleGlobalGesturePreferenceFragment"
                android:key="enable_global_gesture_preference_screen"
                android:title="@string/accessibility_global_gesture_preference_title"/>

        <PreferenceScreen android:key="tts_settings_preference"
                android:fragment="com.android.settings.tts.TextToSpeechSettings"
                android:title="@string/tts_settings_title"/>
+56 −6
Original line number Diff line number Diff line
@@ -108,6 +108,8 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
            "select_long_press_timeout_preference";
    private static final String TOGGLE_SCRIPT_INJECTION_PREFERENCE =
            "toggle_script_injection_preference";
    private static final String ENABLE_ACCESSIBILITY_GESTURE_PREFERENCE_SCREEN =
            "enable_global_gesture_preference_screen";
    private static final String DISPLAY_MAGNIFICATION_PREFERENCE_SCREEN =
            "screen_magnification_preference_screen";

@@ -168,6 +170,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
    private AccessibilityEnableScriptInjectionPreference mToggleScriptInjectionPreference;
    private Preference mNoServicesMessagePreference;
    private PreferenceScreen mDisplayMagnificationPreferenceScreen;
    private PreferenceScreen mGlobalGesturePreferenceScreen;

    private int mLongPressTimeoutDefault;

@@ -211,12 +214,6 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
        return false;
    }
    

    
    
    
    
    
    @Override
    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
        if (mToggleLargeTextPreference == preference) {
@@ -231,6 +228,9 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
        } else if (mToggleSpeakPasswordPreference == preference) {
            handleToggleSpeakPasswordPreferenceClick();
            return true;
        } else if (mGlobalGesturePreferenceScreen == preference) {
            handleTogglEnableAccessibilityGesturePreferenceClick();
            return true;
        } else if (mDisplayMagnificationPreferenceScreen == preference) {
            handleDisplayMagnificationPreferenceScreenClick();
            return true;
@@ -266,6 +266,18 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
                mToggleSpeakPasswordPreference.isChecked() ? 1 : 0);
    }

    private void handleTogglEnableAccessibilityGesturePreferenceClick() {
        Bundle extras = mGlobalGesturePreferenceScreen.getExtras();
        extras.putString(EXTRA_TITLE, getString(
                R.string.accessibility_global_gesture_preference_title));
        extras.putString(EXTRA_SUMMARY, getString(
                R.string.accessibility_global_gesture_preference_summary));
        extras.putBoolean(EXTRA_CHECKED, Settings.Global.getInt(getContentResolver(),
                Settings.Global.ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED, 0) == 1);
        super.onPreferenceTreeClick(mGlobalGesturePreferenceScreen,
                mGlobalGesturePreferenceScreen);
    }

    private void handleDisplayMagnificationPreferenceScreenClick() {
        Bundle extras = mDisplayMagnificationPreferenceScreen.getExtras();
        extras.putString(EXTRA_TITLE, getString(
@@ -325,6 +337,10 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
        // Display magnification.
        mDisplayMagnificationPreferenceScreen = (PreferenceScreen) findPreference(
                DISPLAY_MAGNIFICATION_PREFERENCE_SCREEN);

        // Global gesture.
        mGlobalGesturePreferenceScreen =
                (PreferenceScreen) findPreference(ENABLE_ACCESSIBILITY_GESTURE_PREFERENCE_SCREEN);
    }

    private void updateAllPreferences() {
@@ -487,6 +503,17 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
            mDisplayMagnificationPreferenceScreen.setSummary(
                    R.string.accessibility_feature_state_off);
        }

        // Global gesture
        final boolean globalGestureEnabled = Settings.Global.getInt(getContentResolver(),
                Settings.Global.ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED, 0) == 1;
        if (globalGestureEnabled) {
            mGlobalGesturePreferenceScreen.setSummary(
                    R.string.accessibility_feature_state_on);
        } else {
            mGlobalGesturePreferenceScreen.setSummary(
                    R.string.accessibility_feature_state_off);
        }
    }

    private void updateLockScreenRotationCheckbox() {
@@ -844,6 +871,29 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
        }
    }

    public static class ToggleGlobalGesturePreferenceFragment
            extends ToggleFeaturePreferenceFragment {
        @Override
        protected void onPreferenceToggled(String preferenceKey, boolean enabled) {
            Settings.Global.putInt(getContentResolver(),
                    Settings.Global.ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED, enabled ? 1 : 0);
        }

        @Override
        protected void onInstallActionBarToggleSwitch() {
            super.onInstallActionBarToggleSwitch();
            mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() {
                @Override
                public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
                    toggleSwitch.setCheckedInternal(checked);
                    getArguments().putBoolean(EXTRA_CHECKED, checked);
                    onPreferenceToggled(mPreferenceKey, checked);
                    return false;
                }
            });
        }
    }

    public static abstract class ToggleFeaturePreferenceFragment
            extends SettingsPreferenceFragment {