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