OSDN Git Service

am 4fedc0fd: (-s ours) Import translations. DO NOT MERGE
[android-x86/packages-apps-Settings.git] / src / com / android / settings / location / DimmableIconPreference.java
index bc75fc4..f785992 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2013 The Android Open Source Project
+ * 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.
 
 package com.android.settings.location;
 
+import android.annotation.Nullable;
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 import android.preference.Preference;
+import android.text.TextUtils;
 import android.util.AttributeSet;
+import android.view.View;
+import android.widget.TextView;
 
 /**
- * A preference item that can dim the icon when it's disabled.
+ * 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) {
+    private final CharSequence mContentDescription;
+
+    public DimmableIconPreference(Context context, AttributeSet attrs, int defStyle,
+            @Nullable CharSequence contentDescription) {
         super(context, attrs, defStyle);
+        mContentDescription = contentDescription;
     }
 
-    public DimmableIconPreference(Context context, AttributeSet attrs) {
+    public DimmableIconPreference(Context context, AttributeSet attrs,
+            @Nullable CharSequence contentDescription) {
         super(context, attrs);
+        mContentDescription = contentDescription;
     }
 
-    public DimmableIconPreference(Context context) {
+    public DimmableIconPreference(Context context, @Nullable CharSequence contentDescription) {
         super(context);
+        mContentDescription = contentDescription;
     }
 
-    @Override
-    public void onParentChanged(Preference parent, boolean disableChild) {
+    private void dimIcon(boolean dimmed) {
         Drawable icon = getIcon();
         if (icon != null) {
-            icon.setAlpha(disableChild ? ICON_ALPHA_DISABLED : ICON_ALPHA_ENABLED);
+            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);
+    }
+
+    @Override
+    protected void onBindView(View view) {
+        super.onBindView(view);
+        if (!TextUtils.isEmpty(mContentDescription)) {
+            final TextView titleView = (TextView) view.findViewById(android.R.id.title);
+            titleView.setContentDescription(mContentDescription);
+        }
+    }
 }