Merge "Remove on/off information if the services cannot toggle service on/off"

This commit is contained in:
Menghan Li
2020-02-13 15:33:48 +00:00
committed by Android (Google) Code Review
5 changed files with 35 additions and 47 deletions

View File

@@ -48,6 +48,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;
@@ -254,11 +255,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);
@@ -266,6 +271,7 @@ public class AccessibilitySettings extends DashboardFragment {
return (TextUtils.isEmpty(serviceSummary))
? serviceState
: stateSummaryCombo;
}
@VisibleForTesting
@@ -371,13 +377,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);
}
@@ -397,7 +408,7 @@ public class AccessibilitySettings extends DashboardFragment {
preference.setEnabled(true);
}
switch (AccessibilityUtil.getAccessibilityServiceFragmentType(info)) {
switch (fragmentType) {
case AccessibilityServiceFragmentType.LEGACY:
preference.setFragment(
LegacyAccessibilityServicePreferenceFragment.class.getName());
@@ -508,6 +519,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(

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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);
}
}

View File

@@ -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