11d422e9d731ff97d626c0705393257c798fcd189mariagpuyol/*
21d422e9d731ff97d626c0705393257c798fcd189mariagpuyol * Copyright (C) 2016 The Android Open Source Project
31d422e9d731ff97d626c0705393257c798fcd189mariagpuyol *
41d422e9d731ff97d626c0705393257c798fcd189mariagpuyol * Licensed under the Apache License, Version 2.0 (the "License");
51d422e9d731ff97d626c0705393257c798fcd189mariagpuyol * you may not use this file except in compliance with the License.
61d422e9d731ff97d626c0705393257c798fcd189mariagpuyol * You may obtain a copy of the License at
71d422e9d731ff97d626c0705393257c798fcd189mariagpuyol *
81d422e9d731ff97d626c0705393257c798fcd189mariagpuyol *      http://www.apache.org/licenses/LICENSE-2.0
91d422e9d731ff97d626c0705393257c798fcd189mariagpuyol *
101d422e9d731ff97d626c0705393257c798fcd189mariagpuyol * Unless required by applicable law or agreed to in writing, software
111d422e9d731ff97d626c0705393257c798fcd189mariagpuyol * distributed under the License is distributed on an "AS IS" BASIS,
121d422e9d731ff97d626c0705393257c798fcd189mariagpuyol * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131d422e9d731ff97d626c0705393257c798fcd189mariagpuyol * See the License for the specific language governing permissions and
141d422e9d731ff97d626c0705393257c798fcd189mariagpuyol * limitations under the License.
151d422e9d731ff97d626c0705393257c798fcd189mariagpuyol */
165874835f1edc1cac42eb4b3aa5fe437e8fd53c78mariagpuyolpackage com.android.emergency.preferences;
171d422e9d731ff97d626c0705393257c798fcd189mariagpuyol
181d422e9d731ff97d626c0705393257c798fcd189mariagpuyolimport android.content.Context;
19881b3de9e0842f7c66e6ca51c8d0ccfa6e9d29e4Juan Langimport android.content.res.TypedArray;
20ee4540b5c9812db280855ffc13a50105008043d4Juan Langimport android.support.v7.preference.Preference;
212c0518a7dfd5b7cd36e88d9f2df064b1e756bd83Juan Langimport android.support.v7.preference.PreferenceViewHolder;
225874835f1edc1cac42eb4b3aa5fe437e8fd53c78mariagpuyolimport android.text.TextUtils;
231d422e9d731ff97d626c0705393257c798fcd189mariagpuyolimport android.util.AttributeSet;
24df6e53aa87f74a07c63d585efa2425218a37cb99mariagpuyolimport android.view.View;
25df6e53aa87f74a07c63d585efa2425218a37cb99mariagpuyolimport android.widget.TextView;
261d422e9d731ff97d626c0705393257c798fcd189mariagpuyol
27881b3de9e0842f7c66e6ca51c8d0ccfa6e9d29e4Juan Langimport com.android.emergency.R;
285874835f1edc1cac42eb4b3aa5fe437e8fd53c78mariagpuyolimport com.android.emergency.ReloadablePreferenceInterface;
292c0518a7dfd5b7cd36e88d9f2df064b1e756bd83Juan Langimport com.android.settingslib.CustomEditTextPreference;
305874835f1edc1cac42eb4b3aa5fe437e8fd53c78mariagpuyol
311d422e9d731ff97d626c0705393257c798fcd189mariagpuyol/**
321d422e9d731ff97d626c0705393257c798fcd189mariagpuyol * Custom {@link EditTextPreference} that allows us to refresh and update the summary.
331d422e9d731ff97d626c0705393257c798fcd189mariagpuyol */
342c0518a7dfd5b7cd36e88d9f2df064b1e756bd83Juan Langpublic class EmergencyEditTextPreference extends CustomEditTextPreference
35ee4540b5c9812db280855ffc13a50105008043d4Juan Lang        implements Preference.OnPreferenceChangeListener, ReloadablePreferenceInterface {
361d422e9d731ff97d626c0705393257c798fcd189mariagpuyol
37df6e53aa87f74a07c63d585efa2425218a37cb99mariagpuyol    private static final int MAX_LINES = 50;
38df6e53aa87f74a07c63d585efa2425218a37cb99mariagpuyol
391d422e9d731ff97d626c0705393257c798fcd189mariagpuyol    public EmergencyEditTextPreference(Context context, AttributeSet attrs) {
401d422e9d731ff97d626c0705393257c798fcd189mariagpuyol        super(context, attrs);
41881b3de9e0842f7c66e6ca51c8d0ccfa6e9d29e4Juan Lang        TypedArray a = context.obtainStyledAttributes(
42881b3de9e0842f7c66e6ca51c8d0ccfa6e9d29e4Juan Lang                attrs, R.styleable.EmergencyEditTextPreference, 0, 0);
43881b3de9e0842f7c66e6ca51c8d0ccfa6e9d29e4Juan Lang        if (a.hasValue(R.styleable.EmergencyEditTextPreference_summary)) {
44881b3de9e0842f7c66e6ca51c8d0ccfa6e9d29e4Juan Lang            setSummary(a.getString(R.styleable.EmergencyEditTextPreference_summary));
45881b3de9e0842f7c66e6ca51c8d0ccfa6e9d29e4Juan Lang        }
46881b3de9e0842f7c66e6ca51c8d0ccfa6e9d29e4Juan Lang        a.recycle();
471d422e9d731ff97d626c0705393257c798fcd189mariagpuyol    }
481d422e9d731ff97d626c0705393257c798fcd189mariagpuyol
491d422e9d731ff97d626c0705393257c798fcd189mariagpuyol    @Override
501d422e9d731ff97d626c0705393257c798fcd189mariagpuyol    public void reloadFromPreference() {
511d422e9d731ff97d626c0705393257c798fcd189mariagpuyol        setText(getPersistedString(""));
521d422e9d731ff97d626c0705393257c798fcd189mariagpuyol    }
531d422e9d731ff97d626c0705393257c798fcd189mariagpuyol
541d422e9d731ff97d626c0705393257c798fcd189mariagpuyol    @Override
555874835f1edc1cac42eb4b3aa5fe437e8fd53c78mariagpuyol    public boolean isNotSet() {
565874835f1edc1cac42eb4b3aa5fe437e8fd53c78mariagpuyol        return TextUtils.isEmpty(getText());
575874835f1edc1cac42eb4b3aa5fe437e8fd53c78mariagpuyol    }
585874835f1edc1cac42eb4b3aa5fe437e8fd53c78mariagpuyol
595874835f1edc1cac42eb4b3aa5fe437e8fd53c78mariagpuyol    @Override
601d422e9d731ff97d626c0705393257c798fcd189mariagpuyol    public CharSequence getSummary() {
611d422e9d731ff97d626c0705393257c798fcd189mariagpuyol        String text = getText();
625874835f1edc1cac42eb4b3aa5fe437e8fd53c78mariagpuyol        return TextUtils.isEmpty(text) ? super.getSummary() : text;
631d422e9d731ff97d626c0705393257c798fcd189mariagpuyol    }
64df6e53aa87f74a07c63d585efa2425218a37cb99mariagpuyol
65df6e53aa87f74a07c63d585efa2425218a37cb99mariagpuyol    @Override
662c0518a7dfd5b7cd36e88d9f2df064b1e756bd83Juan Lang    public void onBindViewHolder(PreferenceViewHolder holder) {
672c0518a7dfd5b7cd36e88d9f2df064b1e756bd83Juan Lang        super.onBindViewHolder(holder);
682c0518a7dfd5b7cd36e88d9f2df064b1e756bd83Juan Lang        final TextView summaryView = (TextView) holder.findViewById(
69df6e53aa87f74a07c63d585efa2425218a37cb99mariagpuyol                com.android.internal.R.id.summary);
70df6e53aa87f74a07c63d585efa2425218a37cb99mariagpuyol        summaryView.setMaxLines(MAX_LINES);
71df6e53aa87f74a07c63d585efa2425218a37cb99mariagpuyol    }
723b2ce4cadd25247ff7fd17852dc9ac61c458d019mariagpuyol
733b2ce4cadd25247ff7fd17852dc9ac61c458d019mariagpuyol    @Override
74ee4540b5c9812db280855ffc13a50105008043d4Juan Lang    public boolean onPreferenceChange(Preference preference, Object newValue) {
75ee4540b5c9812db280855ffc13a50105008043d4Juan Lang        String text = (String) newValue;
76ee4540b5c9812db280855ffc13a50105008043d4Juan Lang        setSummary(text);
77ee4540b5c9812db280855ffc13a50105008043d4Juan Lang        return true;
78ee4540b5c9812db280855ffc13a50105008043d4Juan Lang    }
79ee4540b5c9812db280855ffc13a50105008043d4Juan Lang
80ee4540b5c9812db280855ffc13a50105008043d4Juan Lang    @Override
813b2ce4cadd25247ff7fd17852dc9ac61c458d019mariagpuyol    protected void onBindDialogView(View view) {
823b2ce4cadd25247ff7fd17852dc9ac61c458d019mariagpuyol        super.onBindDialogView(view);
832c0518a7dfd5b7cd36e88d9f2df064b1e756bd83Juan Lang        getEditText().setSelection(getEditText().getText().length());
843b2ce4cadd25247ff7fd17852dc9ac61c458d019mariagpuyol    }
851d422e9d731ff97d626c0705393257c798fcd189mariagpuyol}
86