summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/accessibility
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/accessibility')
-rw-r--r--src/com/android/settings/accessibility/AccessibilitySettings.java26
-rw-r--r--src/com/android/settings/accessibility/SettingsContentObserver.java20
-rw-r--r--src/com/android/settings/accessibility/ShortcutServicePickerFragment.java13
3 files changed, 46 insertions, 13 deletions
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index 0611b09302..2161415502 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -42,6 +42,7 @@ import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import android.view.accessibility.AccessibilityManager;
+import com.android.internal.accessibility.AccessibilityShortcutController;
import com.android.internal.content.PackageMonitor;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.view.RotationPolicy;
@@ -57,6 +58,7 @@ import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.accessibility.AccessibilityUtils;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -172,13 +174,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
}
};
- private final SettingsContentObserver mSettingsContentObserver =
- new SettingsContentObserver(mHandler) {
- @Override
- public void onChange(boolean selfChange, Uri uri) {
- updateServicePreferences();
- }
- };
+ private final SettingsContentObserver mSettingsContentObserver;
private final RotationPolicyListener mRotationPolicyListener = new RotationPolicyListener() {
@Override
@@ -224,6 +220,22 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
.getBoolean(com.android.internal.R.bool.config_setColorTransformAccelerated);
}
+ public AccessibilitySettings() {
+ // Observe changes to anything that the shortcut can toggle, so we can reflect updates
+ final Collection<AccessibilityShortcutController.ToggleableFrameworkFeatureInfo> features =
+ AccessibilityShortcutController.getFrameworkShortcutFeaturesMap().values();
+ final List<String> shortcutFeatureKeys = new ArrayList<>(features.size());
+ for (AccessibilityShortcutController.ToggleableFrameworkFeatureInfo feature : features) {
+ shortcutFeatureKeys.add(feature.getSettingKey());
+ }
+ mSettingsContentObserver = new SettingsContentObserver(mHandler, shortcutFeatureKeys) {
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ updateAllPreferences();
+ }
+ };
+ }
+
@Override
public int getMetricsCategory() {
return MetricsEvent.ACCESSIBILITY;
diff --git a/src/com/android/settings/accessibility/SettingsContentObserver.java b/src/com/android/settings/accessibility/SettingsContentObserver.java
index c3baec5038..de67f6c4e3 100644
--- a/src/com/android/settings/accessibility/SettingsContentObserver.java
+++ b/src/com/android/settings/accessibility/SettingsContentObserver.java
@@ -22,16 +22,28 @@ import android.net.Uri;
import android.os.Handler;
import android.provider.Settings;
+import java.util.ArrayList;
+import java.util.List;
+
abstract class SettingsContentObserver extends ContentObserver {
+ private final List<String> mKeysToObserve = new ArrayList<>(2);
+
public SettingsContentObserver(Handler handler) {
super(handler);
+ mKeysToObserve.add(Settings.Secure.ACCESSIBILITY_ENABLED);
+ mKeysToObserve.add(Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
+ }
+
+ public SettingsContentObserver(Handler handler, List<String> keysToObserve) {
+ this(handler);
+ mKeysToObserve.addAll(keysToObserve);
}
public void register(ContentResolver contentResolver) {
- contentResolver.registerContentObserver(Settings.Secure.getUriFor(
- Settings.Secure.ACCESSIBILITY_ENABLED), false, this);
- contentResolver.registerContentObserver(Settings.Secure.getUriFor(
- Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES), false, this);
+ for (int i = 0; i < mKeysToObserve.size(); i++) {
+ contentResolver.registerContentObserver(
+ Settings.Secure.getUriFor(mKeysToObserve.get(i)), false, this);
+ }
}
public void unregister(ContentResolver contentResolver) {
diff --git a/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java b/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
index e0c41befa4..52c1a0d95a 100644
--- a/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
+++ b/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
@@ -16,6 +16,8 @@
package com.android.settings.accessibility;
import static android.content.DialogInterface.BUTTON_POSITIVE;
+import static com.android.internal.accessibility.AccessibilityShortcutController.COLOR_INVERSION_COMPONENT_NAME;
+import static com.android.internal.accessibility.AccessibilityShortcutController.DALTONIZER_COMPONENT_NAME;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.app.Activity;
@@ -85,9 +87,16 @@ public class ShortcutServicePickerFragment extends RadioButtonPickerFragment {
Map<ComponentName, ToggleableFrameworkFeatureInfo> frameworkFeatureInfoMap =
AccessibilityShortcutController.getFrameworkShortcutFeaturesMap();
for (ComponentName componentName : frameworkFeatureInfoMap.keySet()) {
- // Lookup icon
+ final int iconId;
+ if (componentName.equals(COLOR_INVERSION_COMPONENT_NAME)) {
+ iconId = R.drawable.ic_color_inversion;
+ } else if (componentName.equals(DALTONIZER_COMPONENT_NAME)) {
+ iconId = R.drawable.ic_daltonizer;
+ } else {
+ iconId = R.drawable.empty_icon;
+ }
candidates.add(new FrameworkCandidateInfo(frameworkFeatureInfoMap.get(componentName),
- R.drawable.empty_icon, componentName.flattenToString()));
+ iconId, componentName.flattenToString()));
}
for (int i = 0; i < numInstalledServices; i++) {
final AccessibilityServiceInfo installedServiceInfo = installedServices.get(i);