1db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang/* 2db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang * Copyright (C) 2014 The Android Open Source Project 3db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang * 4db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang * Licensed under the Apache License, Version 2.0 (the "License"); 5db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang * you may not use this file except in compliance with the License. 6db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang * You may obtain a copy of the License at 7db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang * 8db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang * http://www.apache.org/licenses/LICENSE-2.0 9db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang * 10db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang * Unless required by applicable law or agreed to in writing, software 11db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang * distributed under the License is distributed on an "AS IS" BASIS, 12db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang * See the License for the specific language governing permissions and 14db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang * limitations under the License. 15db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang */ 16db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang 17a7a7bfe59fc03ffb00d2f2f0fe0fb011834bf22eFyodor Kupolovpackage com.android.settings; 18db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang 1986c877e9b66165bb46432de6172d1fdc6b2808feZoltan Szatmary-Banimport android.annotation.Nullable; 20db0b7637faa5200906c3facf90872aa819e8db5aLifu Tangimport android.content.Context; 21db0b7637faa5200906c3facf90872aa819e8db5aLifu Tangimport android.graphics.drawable.Drawable; 2239b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v7.preference.Preference; 2339b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v7.preference.PreferenceViewHolder; 2486c877e9b66165bb46432de6172d1fdc6b2808feZoltan Szatmary-Banimport android.text.TextUtils; 25db0b7637faa5200906c3facf90872aa819e8db5aLifu Tangimport android.util.AttributeSet; 2686c877e9b66165bb46432de6172d1fdc6b2808feZoltan Szatmary-Banimport android.widget.TextView; 27db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang 28682a916836f5e108289a70579f671f9d4a880993Sudheer Shankaimport com.android.settingslib.RestrictedPreference; 29682a916836f5e108289a70579f671f9d4a880993Sudheer Shanka 30db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang/** 31db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang * A preference item that can dim the icon when it's disabled, either directly or because its parent 32db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang * is disabled. 33db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang */ 34682a916836f5e108289a70579f671f9d4a880993Sudheer Shankapublic class DimmableIconPreference extends RestrictedPreference { 35db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang private static final int ICON_ALPHA_ENABLED = 255; 36db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang private static final int ICON_ALPHA_DISABLED = 102; 37db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang 3886c877e9b66165bb46432de6172d1fdc6b2808feZoltan Szatmary-Ban private final CharSequence mContentDescription; 3986c877e9b66165bb46432de6172d1fdc6b2808feZoltan Szatmary-Ban 40682a916836f5e108289a70579f671f9d4a880993Sudheer Shanka public DimmableIconPreference(Context context) { 41682a916836f5e108289a70579f671f9d4a880993Sudheer Shanka this(context, (AttributeSet) null); 42682a916836f5e108289a70579f671f9d4a880993Sudheer Shanka } 43682a916836f5e108289a70579f671f9d4a880993Sudheer Shanka 44a7a7bfe59fc03ffb00d2f2f0fe0fb011834bf22eFyodor Kupolov public DimmableIconPreference(Context context, AttributeSet attrs) { 45db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang super(context, attrs); 46a7a7bfe59fc03ffb00d2f2f0fe0fb011834bf22eFyodor Kupolov mContentDescription = null; 47ba1a68b8abecf64fbcb53fdf0c3e46f63defe17dSudheer Shanka useAdminDisabledSummary(true); 48db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang } 49db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang 5086c877e9b66165bb46432de6172d1fdc6b2808feZoltan Szatmary-Ban public DimmableIconPreference(Context context, @Nullable CharSequence contentDescription) { 51db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang super(context); 5286c877e9b66165bb46432de6172d1fdc6b2808feZoltan Szatmary-Ban mContentDescription = contentDescription; 53ba1a68b8abecf64fbcb53fdf0c3e46f63defe17dSudheer Shanka useAdminDisabledSummary(true); 54db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang } 55db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang 56db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang private void dimIcon(boolean dimmed) { 57db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang Drawable icon = getIcon(); 58db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang if (icon != null) { 59db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang icon.mutate().setAlpha(dimmed ? ICON_ALPHA_DISABLED : ICON_ALPHA_ENABLED); 60db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang setIcon(icon); 61db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang } 62db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang } 63db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang 64db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang @Override 6539b467482d1bf256a111c757e9b7621c6f523271Jason Monk public void onBindViewHolder(PreferenceViewHolder view) { 6639b467482d1bf256a111c757e9b7621c6f523271Jason Monk super.onBindViewHolder(view); 6786c877e9b66165bb46432de6172d1fdc6b2808feZoltan Szatmary-Ban if (!TextUtils.isEmpty(mContentDescription)) { 6886c877e9b66165bb46432de6172d1fdc6b2808feZoltan Szatmary-Ban final TextView titleView = (TextView) view.findViewById(android.R.id.title); 6986c877e9b66165bb46432de6172d1fdc6b2808feZoltan Szatmary-Ban titleView.setContentDescription(mContentDescription); 7086c877e9b66165bb46432de6172d1fdc6b2808feZoltan Szatmary-Ban } 71682a916836f5e108289a70579f671f9d4a880993Sudheer Shanka dimIcon(!isEnabled()); 7286c877e9b66165bb46432de6172d1fdc6b2808feZoltan Szatmary-Ban } 73db0b7637faa5200906c3facf90872aa819e8db5aLifu Tang} 74