summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/location
diff options
context:
space:
mode:
authorLifu Tang <lifu@google.com>2014-08-18 11:08:43 -0700
committerLifu Tang <lifu@google.com>2014-08-18 11:22:13 -0700
commitdb0b7637faa5200906c3facf90872aa819e8db5a (patch)
tree8c6a826ce16ec4f555f609f9117cee658d964638 /src/com/android/settings/location
parentf14fa7ed4e9c61543a10f081027489558c4bc104 (diff)
downloadpackages_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')
-rw-r--r--src/com/android/settings/location/DimmableIconPreference.java63
-rw-r--r--src/com/android/settings/location/InjectedSetting.java2
-rw-r--r--src/com/android/settings/location/RecentLocationApps.java2
-rw-r--r--src/com/android/settings/location/SettingsInjector.java2
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 &gt; Location &gt; 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();