OSDN Git Service

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