OSDN Git Service

Merge tag 'android-8.1.0_r18' into oreo-x86
[android-x86/packages-apps-Settings.git] / src / com / android / settings / DeviceInfoSettings.java
1 /*
2  * Copyright (C) 2008 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
17 package com.android.settings;
18
19 import android.app.Activity;
20 import android.app.Fragment;
21 import android.content.Context;
22 import android.content.Intent;
23 import android.provider.SearchIndexableResource;
24
25 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
26 import com.android.settings.dashboard.DashboardFragment;
27 import com.android.settings.dashboard.SummaryLoader;
28 import com.android.settings.deviceinfo.AdditionalSystemUpdatePreferenceController;
29 import com.android.settings.deviceinfo.BasebandVersionPreferenceController;
30 import com.android.settings.deviceinfo.BuildNumberPreferenceController;
31 import com.android.settings.deviceinfo.DeviceManufacturerPreferenceController;
32 import com.android.settings.deviceinfo.DeviceModelPreferenceController;
33 import com.android.settings.deviceinfo.FccEquipmentIdPreferenceController;
34 import com.android.settings.deviceinfo.FeedbackPreferenceController;
35 import com.android.settings.deviceinfo.FirmwareVersionPreferenceController;
36 import com.android.settings.deviceinfo.KernelVersionPreferenceController;
37 import com.android.settings.deviceinfo.ManualPreferenceController;
38 import com.android.settings.deviceinfo.OpenGLVersionPreferenceController;
39 import com.android.settings.deviceinfo.RegulatoryInfoPreferenceController;
40 import com.android.settings.deviceinfo.SELinuxStatusPreferenceController;
41 import com.android.settings.deviceinfo.SafetyInfoPreferenceController;
42 import com.android.settings.deviceinfo.SecurityPatchPreferenceController;
43 import com.android.settings.search.BaseSearchIndexProvider;
44 import com.android.settings.search.Indexable;
45 import com.android.settingslib.core.AbstractPreferenceController;
46 import com.android.settingslib.core.lifecycle.Lifecycle;
47
48 import java.util.ArrayList;
49 import java.util.Arrays;
50 import java.util.List;
51
52 public class DeviceInfoSettings extends DashboardFragment implements Indexable {
53
54     private static final String LOG_TAG = "DeviceInfoSettings";
55
56     private static final String KEY_LEGAL_CONTAINER = "legal_container";
57
58     @Override
59     public int getMetricsCategory() {
60         return MetricsEvent.DEVICEINFO;
61     }
62
63     @Override
64     protected int getHelpResource() {
65         return R.string.help_uri_about;
66     }
67
68     @Override
69     public void onActivityResult(int requestCode, int resultCode, Intent data) {
70         final BuildNumberPreferenceController buildNumberPreferenceController =
71                 getPreferenceController(BuildNumberPreferenceController.class);
72         if (buildNumberPreferenceController.onActivityResult(requestCode, resultCode, data)) {
73             return;
74         }
75         super.onActivityResult(requestCode, resultCode, data);
76     }
77
78     @Override
79     protected String getLogTag() {
80         return LOG_TAG;
81     }
82
83     @Override
84     protected int getPreferenceScreenResId() {
85         return R.xml.device_info_settings;
86     }
87
88     @Override
89     protected List<AbstractPreferenceController> getPreferenceControllers(Context context) {
90         return buildPreferenceControllers(context, getActivity(), this /* fragment */,
91                 getLifecycle());
92     }
93
94     private static class SummaryProvider implements SummaryLoader.SummaryProvider {
95
96         private final SummaryLoader mSummaryLoader;
97
98         public SummaryProvider(SummaryLoader summaryLoader) {
99             mSummaryLoader = summaryLoader;
100         }
101
102         @Override
103         public void setListening(boolean listening) {
104             if (listening) {
105                 mSummaryLoader.setSummary(this, DeviceModelPreferenceController.getDeviceModel());
106             }
107         }
108     }
109
110     public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
111             = new SummaryLoader.SummaryProviderFactory() {
112         @Override
113         public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity,
114                 SummaryLoader summaryLoader) {
115             return new SummaryProvider(summaryLoader);
116         }
117     };
118
119     private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
120             Activity activity, Fragment fragment, Lifecycle lifecycle) {
121         final List<AbstractPreferenceController> controllers = new ArrayList<>();
122         controllers.add(
123                 new BuildNumberPreferenceController(context, activity, fragment, lifecycle));
124         controllers.add(new AdditionalSystemUpdatePreferenceController(context));
125         controllers.add(new ManualPreferenceController(context));
126         controllers.add(new FeedbackPreferenceController(fragment, context));
127         controllers.add(new KernelVersionPreferenceController(context));
128         controllers.add(new OpenGLVersionPreferenceController(context));
129         controllers.add(new BasebandVersionPreferenceController(context));
130         controllers.add(new FirmwareVersionPreferenceController(context, lifecycle));
131         controllers.add(new RegulatoryInfoPreferenceController(context));
132         controllers.add(new DeviceManufacturerPreferenceController(context));
133         controllers.add(new DeviceModelPreferenceController(context, fragment));
134         controllers.add(new SecurityPatchPreferenceController(context));
135         controllers.add(new FccEquipmentIdPreferenceController(context));
136         controllers.add(new SELinuxStatusPreferenceController(context));
137         controllers.add(new SafetyInfoPreferenceController(context));
138         return controllers;
139     }
140
141     /**
142      * For Search.
143      */
144     public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
145             new BaseSearchIndexProvider() {
146
147                 @Override
148                 public List<SearchIndexableResource> getXmlResourcesToIndex(
149                         Context context, boolean enabled) {
150                     final SearchIndexableResource sir = new SearchIndexableResource(context);
151                     sir.xmlResId = R.xml.device_info_settings;
152                     return Arrays.asList(sir);
153                 }
154
155                 @Override
156                 public List<AbstractPreferenceController> getPreferenceControllers(Context context) {
157                     return buildPreferenceControllers(context, null /*activity */,
158                             null /* fragment */, null /* lifecycle */);
159                 }
160
161                 @Override
162                 public List<String> getNonIndexableKeys(Context context) {
163                     List<String> keys = super.getNonIndexableKeys(context);
164                     keys.add(KEY_LEGAL_CONTAINER);
165                     return keys;
166                 }
167             };
168 }