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