diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java index 1722c99b36e..f0baaaaed54 100644 --- a/src/com/android/settings/accessibility/AccessibilitySettings.java +++ b/src/com/android/settings/accessibility/AccessibilitySettings.java @@ -49,6 +49,7 @@ import com.android.internal.content.PackageMonitor; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.accessibility.AccessibilityUtil.AccessibilityServiceFragmentType; +import com.android.settings.accessibility.AccessibilityUtil.State; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.display.DarkUIPreferenceController; import com.android.settings.search.BaseSearchIndexProvider; @@ -257,11 +258,15 @@ public class AccessibilitySettings extends DashboardFragment { } public static CharSequence getServiceSummary(Context context, AccessibilityServiceInfo info, - boolean serviceEnabled) { - final String serviceState = serviceEnabled + @State int state) { + final CharSequence serviceSummary = info.loadSummary(context.getPackageManager()); + if (state == State.UNKNOWN) { + return serviceSummary; + } + + final String serviceState = (state == State.ON) ? context.getString(R.string.accessibility_summary_state_enabled) : context.getString(R.string.accessibility_summary_state_disabled); - final CharSequence serviceSummary = info.loadSummary(context.getPackageManager()); final String stateSummaryCombo = context.getString( R.string.preference_summary_default_combination, serviceState, serviceSummary); @@ -269,6 +274,7 @@ public class AccessibilitySettings extends DashboardFragment { return (TextUtils.isEmpty(serviceSummary)) ? serviceState : stateSummaryCombo; + } @VisibleForTesting @@ -377,13 +383,18 @@ public class AccessibilitySettings extends DashboardFragment { description = getString(R.string.accessibility_service_default_description); } + final int fragmentType = AccessibilityUtil.getAccessibilityServiceFragmentType(info); if (serviceEnabled && info.crashed) { // Update the summaries for services that have crashed. preference.setSummary(R.string.accessibility_summary_state_stopped); description = getString(R.string.accessibility_description_state_stopped); } else { + int serviceState = serviceEnabled ? State.ON : State.OFF; + if (fragmentType == AccessibilityServiceFragmentType.INVISIBLE) { + serviceState = State.UNKNOWN; + } final CharSequence serviceSummary = getServiceSummary(getContext(), info, - serviceEnabled); + serviceState); preference.setSummary(serviceSummary); } @@ -403,7 +414,7 @@ public class AccessibilitySettings extends DashboardFragment { preference.setEnabled(true); } - switch (AccessibilityUtil.getAccessibilityServiceFragmentType(info)) { + switch (fragmentType) { case AccessibilityServiceFragmentType.LEGACY: preference.setFragment( LegacyAccessibilityServicePreferenceFragment.class.getName()); @@ -514,6 +525,8 @@ public class AccessibilitySettings extends DashboardFragment { experimentalCategory.removePreference(mDisplayDaltonizerPreferenceScreen); mDisplayDaltonizerPreferenceScreen.setOrder( mDisplayMagnificationPreferenceScreen.getOrder() + 1); + mDisplayDaltonizerPreferenceScreen.setSummary(AccessibilityUtil.getSummary( + getContext(), Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED)); mToggleInversionPreference.setOrder( mDisplayDaltonizerPreferenceScreen.getOrder() + 1); mToggleLargePointerIconPreference.setOrder( diff --git a/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java b/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java index e53afebca6b..17c6016dffd 100644 --- a/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java +++ b/src/com/android/settings/accessibility/AccessibilitySlicePreferenceController.java @@ -16,6 +16,10 @@ package com.android.settings.accessibility; +import static com.android.settings.accessibility.AccessibilityUtil.State.OFF; +import static com.android.settings.accessibility.AccessibilityUtil.State.ON; +import static com.android.settings.accessibility.AccessibilityUtil.State.UNKNOWN; + import android.accessibilityservice.AccessibilityServiceInfo; import android.content.ComponentName; import android.content.ContentResolver; @@ -23,6 +27,7 @@ import android.content.Context; import android.provider.Settings; import android.view.accessibility.AccessibilityManager; +import com.android.settings.accessibility.AccessibilityUtil.AccessibilityServiceFragmentType; import com.android.settings.core.TogglePreferenceController; import com.android.settingslib.accessibility.AccessibilityUtils; @@ -39,8 +44,7 @@ public class AccessibilitySlicePreferenceController extends TogglePreferenceCont private final ComponentName mComponentName; - private final int ON = 1; - private final int OFF = 0; + private static final String EMPTY_STRING = ""; public AccessibilitySlicePreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); @@ -55,8 +59,13 @@ public class AccessibilitySlicePreferenceController extends TogglePreferenceCont @Override public CharSequence getSummary() { final AccessibilityServiceInfo serviceInfo = getAccessibilityServiceInfo(); - return serviceInfo == null - ? "" : AccessibilitySettings.getServiceSummary(mContext, serviceInfo, isChecked()); + int serviceState = isChecked() ? ON : OFF; + if (AccessibilityUtil.getAccessibilityServiceFragmentType(serviceInfo) + == AccessibilityServiceFragmentType.INVISIBLE) { + serviceState = UNKNOWN; + } + return serviceInfo == null ? EMPTY_STRING : AccessibilitySettings.getServiceSummary( + mContext, serviceInfo, serviceState); } @Override diff --git a/src/com/android/settings/accessibility/AccessibilityUtil.java b/src/com/android/settings/accessibility/AccessibilityUtil.java index 8da6fbb920d..6159f9243f2 100644 --- a/src/com/android/settings/accessibility/AccessibilityUtil.java +++ b/src/com/android/settings/accessibility/AccessibilityUtil.java @@ -98,6 +98,7 @@ final class AccessibilityUtil { /** Denotes the accessibility enabled status */ @Retention(RetentionPolicy.SOURCE) public @interface State { + int UNKNOWN = -1; int OFF = 0; int ON = 1; } diff --git a/src/com/android/settings/accessibility/DaltonizerPreferenceController.java b/src/com/android/settings/accessibility/DaltonizerPreferenceController.java index 2922b76fefc..c859d8c8a9a 100644 --- a/src/com/android/settings/accessibility/DaltonizerPreferenceController.java +++ b/src/com/android/settings/accessibility/DaltonizerPreferenceController.java @@ -19,15 +19,10 @@ package com.android.settings.accessibility; import android.content.Context; import android.provider.Settings; -import com.android.settings.R; import com.android.settings.core.BasePreferenceController; -import com.google.common.primitives.Ints; - /** Controller that shows and updates the color correction summary. */ public class DaltonizerPreferenceController extends BasePreferenceController { - - private static final String DALTONIZER_TYPE = Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER; private static final String DALTONIZER_ENABLED = Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED; @@ -42,21 +37,6 @@ public class DaltonizerPreferenceController extends BasePreferenceController { @Override public CharSequence getSummary() { - final String[] daltonizerSummaries = mContext.getResources().getStringArray( - R.array.daltonizer_mode_summaries); - final int[] daltonizerValues = mContext.getResources().getIntArray( - R.array.daltonizer_type_values); - final int timeoutValue = - DaltonizerRadioButtonPreferenceController.getSecureAccessibilityDaltonizerValue( - mContext.getContentResolver(), DALTONIZER_TYPE); - final int idx = Ints.indexOf(daltonizerValues, timeoutValue); - final String serviceSummary = daltonizerSummaries[idx == -1 ? 0 : idx]; - - final CharSequence serviceState = AccessibilityUtil.getSummary(mContext, - DALTONIZER_ENABLED); - - return mContext.getString( - R.string.preference_summary_default_combination, - serviceState, serviceSummary); + return AccessibilityUtil.getSummary(mContext, DALTONIZER_ENABLED); } } diff --git a/src/com/android/settings/accessibility/MagnificationPreferenceController.java b/src/com/android/settings/accessibility/MagnificationPreferenceController.java index 8b214a2a74f..7ac7bef0ea1 100644 --- a/src/com/android/settings/accessibility/MagnificationPreferenceController.java +++ b/src/com/android/settings/accessibility/MagnificationPreferenceController.java @@ -18,7 +18,6 @@ package com.android.settings.accessibility; import android.content.Context; import android.os.Bundle; -import android.provider.Settings; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; @@ -41,22 +40,8 @@ public class MagnificationPreferenceController extends BasePreferenceController @Override public CharSequence getSummary() { - final boolean tripleTapEnabled = Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 0) == 1; - final boolean buttonEnabled = Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 0) == 1; - - int summaryResId = 0; - if (!tripleTapEnabled && !buttonEnabled) { - summaryResId = R.string.accessibility_feature_state_off; - } else if (!tripleTapEnabled && buttonEnabled) { - summaryResId = R.string.accessibility_screen_magnification_navbar_title; - } else if (tripleTapEnabled && !buttonEnabled) { - summaryResId = R.string.accessibility_screen_magnification_gestures_title; - } else { - summaryResId = R.string.accessibility_screen_magnification_state_navbar_gesture; - } - return mContext.getResources().getText(summaryResId); + return mContext.getResources().getText( + R.string.accessibility_screen_magnification_navbar_title); } @Override