2 * Copyright (C) 2008 The Android Open Source Project
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package com.android.settings;
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;
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;
48 import java.util.ArrayList;
49 import java.util.Arrays;
50 import java.util.List;
52 public class DeviceInfoSettings extends DashboardFragment implements Indexable {
54 private static final String LOG_TAG = "DeviceInfoSettings";
56 private static final String KEY_LEGAL_CONTAINER = "legal_container";
59 public int getMetricsCategory() {
60 return MetricsEvent.DEVICEINFO;
64 protected int getHelpResource() {
65 return R.string.help_uri_about;
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)) {
75 super.onActivityResult(requestCode, resultCode, data);
79 protected String getLogTag() {
84 protected int getPreferenceScreenResId() {
85 return R.xml.device_info_settings;
89 protected List<AbstractPreferenceController> getPreferenceControllers(Context context) {
90 return buildPreferenceControllers(context, getActivity(), this /* fragment */,
94 private static class SummaryProvider implements SummaryLoader.SummaryProvider {
96 private final SummaryLoader mSummaryLoader;
98 public SummaryProvider(SummaryLoader summaryLoader) {
99 mSummaryLoader = summaryLoader;
103 public void setListening(boolean listening) {
105 mSummaryLoader.setSummary(this, DeviceModelPreferenceController.getDeviceModel());
110 public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
111 = new SummaryLoader.SummaryProviderFactory() {
113 public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity,
114 SummaryLoader summaryLoader) {
115 return new SummaryProvider(summaryLoader);
119 private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
120 Activity activity, Fragment fragment, Lifecycle lifecycle) {
121 final List<AbstractPreferenceController> controllers = new ArrayList<>();
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));
144 public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
145 new BaseSearchIndexProvider() {
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);
156 public List<AbstractPreferenceController> getPreferenceControllers(Context context) {
157 return buildPreferenceControllers(context, null /*activity */,
158 null /* fragment */, null /* lifecycle */);
162 public List<String> getNonIndexableKeys(Context context) {
163 List<String> keys = super.getNonIndexableKeys(context);
164 keys.add(KEY_LEGAL_CONTAINER);