• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 import com.android.settingslib.CustomEditTextPreference;
33 
34 /**
35  * Fragment that displays personal and medical information.
36  */
37 public class EditMedicalInfoFragment extends PreferenceFragment {
38     @Override
onCreatePreferences(Bundle savedInstanceState, String rootKey)39     public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
40         setPreferencesFromResource(R.xml.edit_medical_info, rootKey);
41 
42         for (int i = 0; i < PreferenceKeys.KEYS_EDIT_EMERGENCY_INFO.length; i++) {
43             final int index = i;
44             String preferenceKey = PreferenceKeys.KEYS_EDIT_EMERGENCY_INFO[i];
45 
46             Preference preference = findPreference(preferenceKey);
47             preference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
48                 @Override
49                 public boolean onPreferenceChange(Preference preference, Object value) {
50                     // Log settings changes.
51                     boolean notSet = TextUtils.isEmpty((String) value);
52                     // 0 is the default subtype. In DP1 and DP2 we had no explicit subtype.
53                     // Start at 30 to differentiate between before and after.
54                     MetricsLogger.action(
55                             preference.getContext(),
56                             MetricsEvent.ACTION_EDIT_EMERGENCY_INFO_FIELD,
57                             30 + index * 2 + (notSet ? 0 : 1));
58                     // Enable or disable settings suggestion, as appropriate.
59                     PreferenceUtils.updateSettingsSuggestionState(getActivity());
60                     // If the preference implements OnPreferenceChangeListener, notify it of the
61                     // change as well.
62                     if (Preference.OnPreferenceChangeListener.class.isInstance(preference)) {
63                         return ((Preference.OnPreferenceChangeListener) preference)
64                                 .onPreferenceChange(preference, value);
65                     }
66                     return true;
67                 }
68             });
69         }
70     }
71 
72     @Override
onResume()73     public void onResume() {
74         super.onResume();
75         reloadFromPreference();
76     }
77 
78     @Override
onDisplayPreferenceDialog(Preference preference)79     public void onDisplayPreferenceDialog(Preference preference) {
80         DialogFragment fragment = null;
81         if (preference instanceof CustomEditTextPreference) {
82             fragment = CustomEditTextPreference.CustomPreferenceDialogFragment
83                     .newInstance(preference.getKey());
84         } else if (preference instanceof AutoCompleteEditTextPreference) {
85             fragment = AutoCompleteEditTextPreference.AutoCompleteEditTextPreferenceDialogFragment
86                     .newInstance(preference.getKey());
87         }
88         if (fragment != null) {
89             fragment.setTargetFragment(this, 0);
90             fragment.show(getFragmentManager(), "dialog_preference");
91         } else {
92             super.onDisplayPreferenceDialog(preference);
93         }
94     }
95 
96     /** Reloads all the preferences by reading the value from the shared preferences. */
reloadFromPreference()97     public void reloadFromPreference() {
98         for (String preferenceKey : PreferenceKeys.KEYS_EDIT_EMERGENCY_INFO) {
99             ReloadablePreferenceInterface preference = (ReloadablePreferenceInterface)
100                     findPreference(preferenceKey);
101             if (preference != null) {
102                 preference.reloadFromPreference();
103             }
104         }
105     }
106 
newInstance()107     public static Fragment newInstance() {
108         return new EditMedicalInfoFragment();
109     }
110 }
111