diff options
author | Lifu Tang <lifu@google.com> | 2014-08-18 11:08:43 -0700 |
---|---|---|
committer | Lifu Tang <lifu@google.com> | 2014-08-18 11:22:13 -0700 |
commit | db0b7637faa5200906c3facf90872aa819e8db5a (patch) | |
tree | 8c6a826ce16ec4f555f609f9117cee658d964638 /src/com/android/settings/location | |
parent | f14fa7ed4e9c61543a10f081027489558c4bc104 (diff) | |
download | packages_apps_Settings-db0b7637faa5200906c3facf90872aa819e8db5a.zip packages_apps_Settings-db0b7637faa5200906c3facf90872aa819e8db5a.tar.gz packages_apps_Settings-db0b7637faa5200906c3facf90872aa819e8db5a.tar.bz2 |
Dim the preference icons when its disabled
- Fix b/16956979
Change-Id: Idfa3fddf63746dea1db0c75dedab06b57aaf5de7
Diffstat (limited to 'src/com/android/settings/location')
4 files changed, 66 insertions, 3 deletions
diff --git a/src/com/android/settings/location/DimmableIconPreference.java b/src/com/android/settings/location/DimmableIconPreference.java new file mode 100644 index 0000000..acde1c1 --- /dev/null +++ b/src/com/android/settings/location/DimmableIconPreference.java @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.location; + +import android.content.Context; +import android.graphics.drawable.Drawable; +import android.preference.Preference; +import android.util.AttributeSet; + +/** + * A preference item that can dim the icon when it's disabled, either directly or because its parent + * is disabled. + */ +public class DimmableIconPreference extends Preference { + private static final int ICON_ALPHA_ENABLED = 255; + private static final int ICON_ALPHA_DISABLED = 102; + + public DimmableIconPreference(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + public DimmableIconPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public DimmableIconPreference(Context context) { + super(context); + } + + private void dimIcon(boolean dimmed) { + Drawable icon = getIcon(); + if (icon != null) { + icon.mutate().setAlpha(dimmed ? ICON_ALPHA_DISABLED : ICON_ALPHA_ENABLED); + setIcon(icon); + } + } + + @Override + public void onParentChanged(Preference parent, boolean disableChild) { + dimIcon(disableChild); + super.onParentChanged(parent, disableChild); + } + + @Override + public void setEnabled(boolean enabled) { + dimIcon(!enabled); + super.setEnabled(enabled); + } +} diff --git a/src/com/android/settings/location/InjectedSetting.java b/src/com/android/settings/location/InjectedSetting.java index d8a3f49..5f4440a 100644 --- a/src/com/android/settings/location/InjectedSetting.java +++ b/src/com/android/settings/location/InjectedSetting.java @@ -23,7 +23,7 @@ import com.android.internal.annotations.Immutable; import com.android.internal.util.Preconditions; /** - * Specifies a setting that is being injected into Settings > Location > Location services. + * Specifies a setting that is being injected into Settings > Location > Location services. * * @see android.location.SettingInjectorService */ diff --git a/src/com/android/settings/location/RecentLocationApps.java b/src/com/android/settings/location/RecentLocationApps.java index 7c59927..e28f96b 100644 --- a/src/com/android/settings/location/RecentLocationApps.java +++ b/src/com/android/settings/location/RecentLocationApps.java @@ -81,7 +81,7 @@ public class RecentLocationApps { * Subclass of {@link Preference} to intercept views and allow content description to be set on * them for accessibility purposes. */ - private static class AccessiblePreference extends Preference { + private static class AccessiblePreference extends DimmableIconPreference { public CharSequence mContentDescription; public AccessiblePreference(Context context, CharSequence contentDescription) { diff --git a/src/com/android/settings/location/SettingsInjector.java b/src/com/android/settings/location/SettingsInjector.java index 5f8d030..edf67b8 100644 --- a/src/com/android/settings/location/SettingsInjector.java +++ b/src/com/android/settings/location/SettingsInjector.java @@ -247,7 +247,7 @@ class SettingsInjector { * Adds an injected setting to the root. */ private Preference addServiceSetting(List<Preference> prefs, InjectedSetting info) { - Preference pref = new Preference(mContext); + Preference pref = new DimmableIconPreference(mContext); pref.setTitle(info.title); pref.setSummary(null); PackageManager pm = mContext.getPackageManager(); |