Dim icons when recent apps category is disabled

- Fix b/10654646

Change-Id: I7581054b0838c801cf9a6c889e8aeb9db8c7ba56
diff --git a/src/com/android/settings/location/DimmableIconPreference.java b/src/com/android/settings/location/DimmableIconPreference.java
new file mode 100644
index 0000000..bc75fc4
--- /dev/null
+++ b/src/com/android/settings/location/DimmableIconPreference.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2013 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.
+ */
+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);
+    }
+
+    @Override
+    public void onParentChanged(Preference parent, boolean disableChild) {
+        Drawable icon = getIcon();
+        if (icon != null) {
+            icon.setAlpha(disableChild ? ICON_ALPHA_DISABLED : ICON_ALPHA_ENABLED);
+            setIcon(icon);
+        }
+        super.onParentChanged(parent, disableChild);
+    }
+}
diff --git a/src/com/android/settings/location/RecentLocationApps.java b/src/com/android/settings/location/RecentLocationApps.java
index 1fa8aac..84178e8 100644
--- a/src/com/android/settings/location/RecentLocationApps.java
+++ b/src/com/android/settings/location/RecentLocationApps.java
@@ -96,7 +96,7 @@
             CharSequence label,
             boolean isHighBattery,
             Preference.OnPreferenceClickListener listener) {
-        Preference pref = new Preference(mActivity);
+        Preference pref = new DimmableIconPreference(mActivity);
         pref.setIcon(icon);
         pref.setTitle(label);
         if (isHighBattery) {