| /* |
| * Copyright (C) 2007 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.quicklaunch; |
| |
| import com.android.settings.R; |
| |
| import android.content.Context; |
| import android.content.res.ColorStateList; |
| import android.preference.Preference; |
| import android.util.TypedValue; |
| import android.view.View; |
| import android.widget.TextView; |
| |
| /** |
| * Preference type for a shortcut in {@link QuickLaunchSettings}. |
| */ |
| public class ShortcutPreference extends Preference implements Comparable<Preference> { |
| |
| private static Object sStaticVarsLock = new Object(); |
| |
| // These static fields are used across all instances of ShortcutPreference. |
| // There will be many ShortcutPreference instances (~36 for US). |
| private static String STRING_ASSIGN_APPLICATION; |
| private static String STRING_NO_SHORTCUT; |
| |
| private static int sDimAlpha; |
| private static ColorStateList sRegularTitleColor; |
| private static ColorStateList sDimTitleColor; |
| private static ColorStateList sRegularSummaryColor; |
| private static ColorStateList sDimSummaryColor; |
| |
| private char mShortcut; |
| private boolean mHasBookmark; |
| |
| public ShortcutPreference(Context context, char shortcut) { |
| super(context); |
| |
| synchronized (sStaticVarsLock) { |
| // Init statics. This should only happen for the first ShortcutPreference created, |
| // the rest will already have them initialized. |
| if (STRING_ASSIGN_APPLICATION == null) { |
| STRING_ASSIGN_APPLICATION = context.getString(R.string.quick_launch_assign_application); |
| STRING_NO_SHORTCUT = context.getString(R.string.quick_launch_no_shortcut); |
| |
| TypedValue outValue = new TypedValue(); |
| context.getTheme().resolveAttribute(android.R.attr.disabledAlpha, outValue, true); |
| sDimAlpha = (int) (outValue.getFloat() * 255); |
| } |
| } |
| |
| mShortcut = shortcut; |
| |
| setWidgetLayoutResource(R.layout.preference_widget_shortcut); |
| } |
| |
| public char getShortcut() { |
| return mShortcut; |
| } |
| |
| public void setShortcut(char shortcut) { |
| if (shortcut != mShortcut) { |
| mShortcut = shortcut; |
| notifyChanged(); |
| } |
| } |
| |
| public boolean hasBookmark() { |
| return mHasBookmark; |
| } |
| |
| public void setHasBookmark(boolean hasBookmark) { |
| if (hasBookmark != mHasBookmark) { |
| mHasBookmark = hasBookmark; |
| notifyChanged(); |
| } |
| } |
| |
| @Override |
| public CharSequence getTitle() { |
| return mHasBookmark ? super.getTitle() : STRING_ASSIGN_APPLICATION; |
| } |
| |
| @Override |
| public CharSequence getSummary() { |
| return mHasBookmark ? super.getSummary() : STRING_NO_SHORTCUT; |
| } |
| |
| @Override |
| protected void onBindView(View view) { |
| super.onBindView(view); |
| |
| TextView shortcutView = (TextView) view.findViewById(R.id.shortcut); |
| if (shortcutView != null) { |
| shortcutView.setText(String.valueOf(mShortcut)); |
| } |
| |
| TextView titleView = (TextView) view.findViewById(android.R.id.title); |
| |
| synchronized (sStaticVarsLock) { |
| if (sRegularTitleColor == null) { |
| sRegularTitleColor = titleView.getTextColors(); |
| sDimTitleColor = sRegularTitleColor.withAlpha(sDimAlpha); |
| } |
| } |
| |
| ColorStateList color = mHasBookmark ? sRegularTitleColor : sDimTitleColor; |
| if (color != null) { |
| titleView.setTextColor(color); |
| } |
| |
| TextView summaryView = (TextView) view.findViewById(android.R.id.summary); |
| |
| synchronized (sStaticVarsLock) { |
| if (sRegularSummaryColor == null) { |
| sRegularSummaryColor = summaryView.getTextColors(); |
| sDimSummaryColor = sRegularSummaryColor.withAlpha(sDimAlpha); |
| } |
| } |
| |
| color = mHasBookmark ? sRegularSummaryColor : sDimSummaryColor; |
| if (color != null) { |
| summaryView.setTextColor(color); |
| } |
| |
| } |
| |
| public int compareTo(Preference another) { |
| if (!(another instanceof ShortcutPreference)) return super.compareTo(another); |
| |
| // Letters before digits |
| char other = ((ShortcutPreference) another).mShortcut; |
| if (Character.isDigit(mShortcut) && Character.isLetter(other)) return 1; |
| else if (Character.isDigit(other) && Character.isLetter(mShortcut)) return -1; |
| else return mShortcut - other; |
| } |
| |
| } |