Home | History | Annotate | Download | only in edit
      1 /*
      2  * Copyright (C) 2016 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 package com.android.emergency.edit;
     17 
     18 import android.app.DialogFragment;
     19 import android.app.Fragment;
     20 import android.os.Bundle;
     21 import android.support.v14.preference.PreferenceFragment;
     22 import android.support.v7.preference.Preference;
     23 import android.text.TextUtils;
     24 
     25 import com.android.emergency.PreferenceKeys;
     26 import com.android.emergency.R;
     27 import com.android.emergency.ReloadablePreferenceInterface;
     28 import com.android.emergency.preferences.AutoCompleteEditTextPreference;
     29 import com.android.emergency.util.PreferenceUtils;
     30 import com.android.internal.logging.MetricsLogger;
     31 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
     32 
     33 /**
     34  * Fragment that displays personal and medical information.
     35  */
     36 public class EditMedicalInfoFragment extends PreferenceFragment {
     37     @Override
     38     public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
     39         setPreferencesFromResource(R.xml.edit_medical_info, rootKey);
     40 
     41         for (int i = 0; i < PreferenceKeys.KEYS_EDIT_EMERGENCY_INFO.length; i++) {
     42             final int index = i;
     43             String preferenceKey = PreferenceKeys.KEYS_EDIT_EMERGENCY_INFO[i];
     44 
     45             Preference preference = findPreference(preferenceKey);
     46             preference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
     47                 @Override
     48                 public boolean onPreferenceChange(Preference preference, Object value) {
     49                     // Log settings changes.
     50                     boolean notSet = TextUtils.isEmpty((String) value);
     51                     // 0 is the default subtype. In DP1 and DP2 we had no explicit subtype.
     52                     // Start at 30 to differentiate between before and after.
     53                     MetricsLogger.action(
     54                             preference.getContext(),
     55                             MetricsEvent.ACTION_EDIT_EMERGENCY_INFO_FIELD,
     56                             30 + index * 2 + (notSet ? 0 : 1));
     57                     // Enable or disable settings suggestion, as appropriate.
     58                     PreferenceUtils.updateSettingsSuggestionState(getActivity());
     59                     // If the preference implements OnPreferenceChangeListener, notify it of the
     60                     // change as well.
     61                     if (Preference.OnPreferenceChangeListener.class.isInstance(preference)) {
     62                         return ((Preference.OnPreferenceChangeListener) preference)
     63                                 .onPreferenceChange(preference, value);
     64                     }
     65                     return true;
     66                 }
     67             });
     68         }
     69     }
     70 
     71     @Override
     72     public void onResume() {
     73         super.onResume();
     74         reloadFromPreference();
     75     }
     76 
     77     @Override
     78     public void onDisplayPreferenceDialog(Preference preference) {
     79         if (!(preference instanceof AutoCompleteEditTextPreference)) {
     80             super.onDisplayPreferenceDialog(preference);
     81             return;
     82         }
     83         DialogFragment fragment =
     84                 AutoCompleteEditTextPreference.AutoCompleteEditTextPreferenceDialogFragment
     85                         .newInstance(preference.getKey());
     86         fragment.setTargetFragment(this, 0);
     87         fragment.show(getFragmentManager(), "dialog_preference");
     88     }
     89 
     90     /** Reloads all the preferences by reading the value from the shared preferences. */
     91     public void reloadFromPreference() {
     92         for (String preferenceKey : PreferenceKeys.KEYS_EDIT_EMERGENCY_INFO) {
     93             ReloadablePreferenceInterface preference = (ReloadablePreferenceInterface)
     94                     findPreference(preferenceKey);
     95             if (preference != null) {
     96                 preference.reloadFromPreference();
     97             }
     98         }
     99     }
    100 
    101     public static Fragment newInstance() {
    102         return new EditMedicalInfoFragment();
    103     }
    104 }
    105