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

Commit 2335dd98 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes from topic "a11y_qs_tooltip_framework"

* changes:
  Support OHM quick settings tooltips when feature on
  Support extra dim quick settings tooltips when feature on
  Support color correction quick settings tooltips when feature on
  Support color inversion quick settings tooltips when feature on
  Integrate Accessibility quick setting tooltips widget into ToggleFeaturePreferenceFragment
parents 99bd4e45 95eba64f
Loading
Loading
Loading
Loading
+61 −4
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.icu.text.CaseMap;
import android.os.Bundle;
import android.os.Handler;
import android.provider.Settings;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -56,6 +57,7 @@ public abstract class AccessibilityShortcutPreferenceFragment extends DashboardF
        implements ShortcutPreference.OnClickCallback {
    private static final String KEY_SHORTCUT_PREFERENCE = "shortcut_preference";
    protected static final String KEY_SAVED_USER_SHORTCUT_TYPE = "shortcut_type";
    protected static final String KEY_SAVED_QS_TOOLTIP_RESHOW = "qs_tooltip_reshow";
    protected static final int NOT_SET = -1;
    // Save user's shortcutType value when savedInstance has value (e.g. device rotated).
    protected int mSavedCheckBoxValue = NOT_SET;
@@ -66,6 +68,8 @@ public abstract class AccessibilityShortcutPreferenceFragment extends DashboardF
    private AccessibilitySettingsContentObserver mSettingsContentObserver;
    private CheckBox mSoftwareTypeCheckBox;
    private CheckBox mHardwareTypeCheckBox;
    private AccessibilityQuickSettingsTooltipWindow mTooltipWindow;
    private boolean mNeedsQSTooltipReshow = false;

    /** Returns the accessibility component name. */
    protected abstract ComponentName getComponentName();
@@ -73,14 +77,25 @@ public abstract class AccessibilityShortcutPreferenceFragment extends DashboardF
    /** Returns the accessibility feature name. */
    protected abstract CharSequence getLabelName();

    /** Returns the accessibility tile component name. */
    protected abstract ComponentName getTileComponentName();

    /** Returns the accessibility tile feature name. */
    protected abstract CharSequence getTileName();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Restore the user shortcut type.
        if (savedInstanceState != null && savedInstanceState.containsKey(
                KEY_SAVED_USER_SHORTCUT_TYPE)) {
            mSavedCheckBoxValue = savedInstanceState.getInt(KEY_SAVED_USER_SHORTCUT_TYPE, NOT_SET);
        // Restore the user shortcut type and tooltip.
        if (savedInstanceState != null) {
            if (savedInstanceState.containsKey(KEY_SAVED_USER_SHORTCUT_TYPE)) {
                mSavedCheckBoxValue = savedInstanceState.getInt(KEY_SAVED_USER_SHORTCUT_TYPE,
                        NOT_SET);
            }
            if (savedInstanceState.containsKey(KEY_SAVED_QS_TOOLTIP_RESHOW)) {
                mNeedsQSTooltipReshow = savedInstanceState.getBoolean(KEY_SAVED_QS_TOOLTIP_RESHOW);
            }
        }

        final int resId = getPreferenceScreenResId();
@@ -123,6 +138,16 @@ public abstract class AccessibilityShortcutPreferenceFragment extends DashboardF
        return super.onCreateView(inflater, container, savedInstanceState);
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        // Reshow tooltips when activity recreate, such as rotate device.
        if (mNeedsQSTooltipReshow) {
            getView().post(this::showQuickSettingsTooltipIfNeeded);
        }
    }

    @Override
    public void onResume() {
        super.onResume();
@@ -149,6 +174,9 @@ public abstract class AccessibilityShortcutPreferenceFragment extends DashboardF
        if (value != NOT_SET) {
            outState.putInt(KEY_SAVED_USER_SHORTCUT_TYPE, value);
        }
        if (mTooltipWindow != null) {
            outState.putBoolean(KEY_SAVED_QS_TOOLTIP_RESHOW, mTooltipWindow.isShowing());
        }
        super.onSaveInstanceState(outState);
    }

@@ -423,4 +451,33 @@ public abstract class AccessibilityShortcutPreferenceFragment extends DashboardF
                        getComponentName()));
        mShortcutPreference.setSummary(getShortcutTypeSummary(getPrefContext()));
    }

    protected void showQuickSettingsTooltipIfNeeded() {
        final ComponentName tileComponentName = getTileComponentName();
        if (tileComponentName == null) {
            // Returns if no tile service assigned.
            return;
        }

        if (!mNeedsQSTooltipReshow && AccessibilityQuickSettingUtils.hasValueInSharedPreferences(
                getContext(), tileComponentName)) {
            // Returns if quick settings tooltip only show once.
            return;
        }

        final CharSequence tileName = getTileName();
        if (TextUtils.isEmpty(tileName)) {
            // Returns if no title of tile service assigned.
            return;
        }

        final String title =
                getString(R.string.accessibility_service_quick_settings_tooltips_content, tileName);
        mTooltipWindow = new AccessibilityQuickSettingsTooltipWindow(getContext());
        mTooltipWindow.setup(title);
        mTooltipWindow.showAtTopCenter(getView());
        AccessibilityQuickSettingUtils.optInValueToSharedPreferences(getContext(),
                tileComponentName);
        mNeedsQSTooltipReshow = false;
    }
}
+10 −0
Original line number Diff line number Diff line
@@ -114,6 +114,16 @@ public class LaunchAccessibilityActivityPreferenceFragment extends ToggleFeature
                mComponentName);
    }

    @Override
    ComponentName getTileComponentName() {
        return null;
    }

    @Override
    CharSequence getTileName() {
        return null;
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // Do not call super. We don't want to see the "Help & feedback" option on this page so as
+10 −0
Original line number Diff line number Diff line
@@ -241,6 +241,16 @@ public class ToggleAccessibilityServicePreferenceFragment extends
                mComponentName);
    }

    @Override
    ComponentName getTileComponentName() {
        return null;
    }

    @Override
    CharSequence getTileName() {
        return null;
    }

    @Override
    protected void updateSwitchBarToggleSwitch() {
        final boolean checked = isAccessibilityServiceEnabled();
+13 −0
Original line number Diff line number Diff line
@@ -17,11 +17,13 @@
package com.android.settings.accessibility;

import static com.android.internal.accessibility.AccessibilityShortcutController.COLOR_INVERSION_COMPONENT_NAME;
import static com.android.internal.accessibility.AccessibilityShortcutController.COLOR_INVERSION_TILE_COMPONENT_NAME;
import static com.android.settings.accessibility.AccessibilityStatsLogUtils.logAccessibilityServiceEnabled;
import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
import static com.android.settings.accessibility.AccessibilityUtil.State.ON;

import android.app.settings.SettingsEnums;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.net.Uri;
import android.os.Bundle;
@@ -48,6 +50,7 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere

    @Override
    protected void onPreferenceToggled(String preferenceKey, boolean enabled) {
        super.onPreferenceToggled(preferenceKey, enabled);
        logAccessibilityServiceEnabled(mComponentName, enabled);
        Settings.Secure.putInt(getContentResolver(), ENABLED, enabled ? ON : OFF);
    }
@@ -131,6 +134,16 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere
                mComponentName);
    }

    @Override
    ComponentName getTileComponentName() {
        return COLOR_INVERSION_TILE_COMPONENT_NAME;
    }

    @Override
    CharSequence getTileName() {
        return getText(R.string.accessibility_display_inversion_preference_title);
    }

    @Override
    protected void updateSwitchBarToggleSwitch() {
        final boolean checked = Settings.Secure.getInt(getContentResolver(), ENABLED, OFF) == ON;
+13 −0
Original line number Diff line number Diff line
@@ -17,11 +17,13 @@
package com.android.settings.accessibility;

import static com.android.internal.accessibility.AccessibilityShortcutController.DALTONIZER_COMPONENT_NAME;
import static com.android.internal.accessibility.AccessibilityShortcutController.DALTONIZER_TILE_COMPONENT_NAME;
import static com.android.settings.accessibility.AccessibilityStatsLogUtils.logAccessibilityServiceEnabled;
import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
import static com.android.settings.accessibility.AccessibilityUtil.State.ON;

import android.app.settings.SettingsEnums;
import android.content.ComponentName;
import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;
@@ -155,6 +157,7 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe

    @Override
    protected void onPreferenceToggled(String preferenceKey, boolean enabled) {
        super.onPreferenceToggled(preferenceKey, enabled);
        logAccessibilityServiceEnabled(mComponentName, enabled);
        Settings.Secure.putInt(getContentResolver(), ENABLED, enabled ? ON : OFF);
    }
@@ -181,6 +184,16 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe
                mComponentName);
    }

    @Override
    ComponentName getTileComponentName() {
        return DALTONIZER_TILE_COMPONENT_NAME;
    }

    @Override
    CharSequence getTileName() {
        return getText(R.string.accessibility_display_daltonizer_preference_title);
    }

    @Override
    protected void updateSwitchBarToggleSwitch() {
        final boolean checked = Settings.Secure.getInt(getContentResolver(), ENABLED, OFF) == ON;
Loading