1cb353e43b6c901c8d164625b84d13185986894caTony Mantler/******************************************************************************* 2cb353e43b6c901c8d164625b84d13185986894caTony Mantler * Copyright (C) 2014 Google Inc. 3cb353e43b6c901c8d164625b84d13185986894caTony Mantler * Licensed to The Android Open Source Project. 4cb353e43b6c901c8d164625b84d13185986894caTony Mantler * 5cb353e43b6c901c8d164625b84d13185986894caTony Mantler * Licensed under the Apache License, Version 2.0 (the "License"); 6cb353e43b6c901c8d164625b84d13185986894caTony Mantler * you may not use this file except in compliance with the License. 7cb353e43b6c901c8d164625b84d13185986894caTony Mantler * You may obtain a copy of the License at 8cb353e43b6c901c8d164625b84d13185986894caTony Mantler * 9cb353e43b6c901c8d164625b84d13185986894caTony Mantler * http://www.apache.org/licenses/LICENSE-2.0 10cb353e43b6c901c8d164625b84d13185986894caTony Mantler * 11cb353e43b6c901c8d164625b84d13185986894caTony Mantler * Unless required by applicable law or agreed to in writing, software 12cb353e43b6c901c8d164625b84d13185986894caTony Mantler * distributed under the License is distributed on an "AS IS" BASIS, 13cb353e43b6c901c8d164625b84d13185986894caTony Mantler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14cb353e43b6c901c8d164625b84d13185986894caTony Mantler * See the License for the specific language governing permissions and 15cb353e43b6c901c8d164625b84d13185986894caTony Mantler * limitations under the License. 16cb353e43b6c901c8d164625b84d13185986894caTony Mantler *******************************************************************************/ 17cb353e43b6c901c8d164625b84d13185986894caTony Mantler 18cb353e43b6c901c8d164625b84d13185986894caTony Mantlerpackage com.android.mail.ui.settings; 19cb353e43b6c901c8d164625b84d13185986894caTony Mantler 20cb353e43b6c901c8d164625b84d13185986894caTony Mantlerimport android.content.Context; 21cb353e43b6c901c8d164625b84d13185986894caTony Mantlerimport android.content.res.TypedArray; 22cb353e43b6c901c8d164625b84d13185986894caTony Mantlerimport android.preference.ListPreference; 23cb353e43b6c901c8d164625b84d13185986894caTony Mantlerimport android.util.AttributeSet; 24cb353e43b6c901c8d164625b84d13185986894caTony Mantler 25cb353e43b6c901c8d164625b84d13185986894caTony Mantlerimport com.android.mail.R; 26cb353e43b6c901c8d164625b84d13185986894caTony Mantler 27cb353e43b6c901c8d164625b84d13185986894caTony Mantler/** 28cb353e43b6c901c8d164625b84d13185986894caTony Mantler * A fancy ListPreference that displays its summary from among the entries in the "entrySummaries" 29cb353e43b6c901c8d164625b84d13185986894caTony Mantler * array attribute. 30cb353e43b6c901c8d164625b84d13185986894caTony Mantler * 31cb353e43b6c901c8d164625b84d13185986894caTony Mantler */ 32cb353e43b6c901c8d164625b84d13185986894caTony Mantlerpublic class FancySummaryListPreference extends ListPreference { 33cb353e43b6c901c8d164625b84d13185986894caTony Mantler 34cb353e43b6c901c8d164625b84d13185986894caTony Mantler private CharSequence[] mEntrySummaries; 35cb353e43b6c901c8d164625b84d13185986894caTony Mantler 36cb353e43b6c901c8d164625b84d13185986894caTony Mantler public FancySummaryListPreference(Context context) { 37cb353e43b6c901c8d164625b84d13185986894caTony Mantler this(context, null); 38cb353e43b6c901c8d164625b84d13185986894caTony Mantler } 39cb353e43b6c901c8d164625b84d13185986894caTony Mantler 40cb353e43b6c901c8d164625b84d13185986894caTony Mantler public FancySummaryListPreference(Context context, AttributeSet attrs) { 41cb353e43b6c901c8d164625b84d13185986894caTony Mantler super(context, attrs); 42cb353e43b6c901c8d164625b84d13185986894caTony Mantler 43cb353e43b6c901c8d164625b84d13185986894caTony Mantler TypedArray a = context.obtainStyledAttributes(attrs, 44cb353e43b6c901c8d164625b84d13185986894caTony Mantler R.styleable.FancySummaryListPreference, 0, 0); 45cb353e43b6c901c8d164625b84d13185986894caTony Mantler mEntrySummaries = a.getTextArray(R.styleable.FancySummaryListPreference_entrySummaries); 46cb353e43b6c901c8d164625b84d13185986894caTony Mantler } 47cb353e43b6c901c8d164625b84d13185986894caTony Mantler 48cb353e43b6c901c8d164625b84d13185986894caTony Mantler public void setEntrySummaries(CharSequence[] summaries) { 49cb353e43b6c901c8d164625b84d13185986894caTony Mantler mEntrySummaries = summaries; 50cb353e43b6c901c8d164625b84d13185986894caTony Mantler setSummary(getSummaryForValue(getValue())); 51cb353e43b6c901c8d164625b84d13185986894caTony Mantler } 52cb353e43b6c901c8d164625b84d13185986894caTony Mantler 53cb353e43b6c901c8d164625b84d13185986894caTony Mantler public void setEntrySummaries(int summariesResId) { 54cb353e43b6c901c8d164625b84d13185986894caTony Mantler setEntrySummaries(getContext().getResources().getTextArray(summariesResId)); 55cb353e43b6c901c8d164625b84d13185986894caTony Mantler } 56cb353e43b6c901c8d164625b84d13185986894caTony Mantler 57cb353e43b6c901c8d164625b84d13185986894caTony Mantler public CharSequence[] getEntrySummaries() { 58cb353e43b6c901c8d164625b84d13185986894caTony Mantler return mEntrySummaries; 59cb353e43b6c901c8d164625b84d13185986894caTony Mantler } 60cb353e43b6c901c8d164625b84d13185986894caTony Mantler 61cb353e43b6c901c8d164625b84d13185986894caTony Mantler @Override 62cb353e43b6c901c8d164625b84d13185986894caTony Mantler public void setValue(String value) { 63cb353e43b6c901c8d164625b84d13185986894caTony Mantler super.setValue(value); 64cb353e43b6c901c8d164625b84d13185986894caTony Mantler setSummary(getSummaryForValue(value)); 65cb353e43b6c901c8d164625b84d13185986894caTony Mantler } 66cb353e43b6c901c8d164625b84d13185986894caTony Mantler 67cb353e43b6c901c8d164625b84d13185986894caTony Mantler private CharSequence getSummaryForValue(String value) { 68cb353e43b6c901c8d164625b84d13185986894caTony Mantler int i = findIndexOfValue(value); 69cb353e43b6c901c8d164625b84d13185986894caTony Mantler return (i >= 0 && i < mEntrySummaries.length) ? mEntrySummaries[i] : null; 70cb353e43b6c901c8d164625b84d13185986894caTony Mantler } 71cb353e43b6c901c8d164625b84d13185986894caTony Mantler 72cb353e43b6c901c8d164625b84d13185986894caTony Mantler} 73