1afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/* 2afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 4afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * you may not use this file except in compliance with the License. 6afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * You may obtain a copy of the License at 7afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 8afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 10afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * See the License for the specific language governing permissions and 14afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * limitations under the License. 15afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 16afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 17afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpackage com.android.settings; 18afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 19d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasaniimport android.app.Activity; 20b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhangimport android.app.Fragment; 21caefa9b5f03b595b81729407e4123fee18a4342cDianne Hackbornimport android.content.Context; 22afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Intent; 23b2385ea46286933add8ea3fb86db7870fe294334Fabrice Di Meglioimport android.provider.SearchIndexableResource; 24ffe701dc0e52ee95bf6c54291ed1b574d389019cChristopher Tate 25265d3c2a0c36251bf8a9f571d7239b6dd404d942Tamas Berghammerimport com.android.internal.logging.nano.MetricsProto.MetricsEvent; 26c62e2f033d945b8bc576f87bc5aaaba37e2afc87Fan Zhangimport com.android.settings.dashboard.DashboardFragment; 27d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhangimport com.android.settings.dashboard.SummaryLoader; 2866b573ad5ac6782b0e65b3dd98037eae01b527e5Fan Zhangimport com.android.settings.deviceinfo.AdditionalSystemUpdatePreferenceController; 29efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhangimport com.android.settings.deviceinfo.BasebandVersionPreferenceController; 303aa68c8b80633b9091734fd237e1921fb7efc792Fan Zhangimport com.android.settings.deviceinfo.BuildNumberPreferenceController; 31efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhangimport com.android.settings.deviceinfo.DeviceModelPreferenceController; 32efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhangimport com.android.settings.deviceinfo.FccEquipmentIdPreferenceController; 3369e95c6e75054a4e858c721fb466f7896d949d55Fan Zhangimport com.android.settings.deviceinfo.FeedbackPreferenceController; 34efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhangimport com.android.settings.deviceinfo.FirmwareVersionPreferenceController; 3569e95c6e75054a4e858c721fb466f7896d949d55Fan Zhangimport com.android.settings.deviceinfo.KernelVersionPreferenceController; 36c62e2f033d945b8bc576f87bc5aaaba37e2afc87Fan Zhangimport com.android.settings.deviceinfo.ManualPreferenceController; 37efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhangimport com.android.settings.deviceinfo.RegulatoryInfoPreferenceController; 38efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhangimport com.android.settings.deviceinfo.SELinuxStatusPreferenceController; 39efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhangimport com.android.settings.deviceinfo.SafetyInfoPreferenceController; 40efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhangimport com.android.settings.deviceinfo.SecurityPatchPreferenceController; 41b2385ea46286933add8ea3fb86db7870fe294334Fabrice Di Meglioimport com.android.settings.search.BaseSearchIndexProvider; 42b2385ea46286933add8ea3fb86db7870fe294334Fabrice Di Meglioimport com.android.settings.search.Indexable; 431d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantlerimport com.android.settingslib.core.AbstractPreferenceController; 44777ed2535a7fd6f618a0d12f381af99252283574Juan Langimport com.android.settingslib.core.lifecycle.Lifecycle; 45afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 46b2385ea46286933add8ea3fb86db7870fe294334Fabrice Di Meglioimport java.util.ArrayList; 47b2385ea46286933add8ea3fb86db7870fe294334Fabrice Di Meglioimport java.util.Arrays; 48b42573d0e6870b026110ece22f13dc15452d507cRajat Dewanimport java.util.List; 49afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 50c62e2f033d945b8bc576f87bc5aaaba37e2afc87Fan Zhangpublic class DeviceInfoSettings extends DashboardFragment implements Indexable { 51c06d4c48a9455d6018f2d793c6b8f211f1131055Amith Yamasani 52362bd107a11e4cb74c53e8058fe0dfaf9baac65fGilles Debunne private static final String LOG_TAG = "DeviceInfoSettings"; 532397a7391e2ba9434ee89345c1d3a47948d8f226Amith Yamasani 542e89758b016ae4ddbf52958ae3397e6688bcee23Matthew Fritze private static final String KEY_LEGAL_CONTAINER = "legal_container"; 552e89758b016ae4ddbf52958ae3397e6688bcee23Matthew Fritze 56afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 576507613ebcd22e4691c2af92a5c161bd327db336Fan Zhang public int getMetricsCategory() { 589d1bfd1e8de6e46137a9571507c03526880d6a46Chris Wren return MetricsEvent.DEVICEINFO; 598a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren } 608a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren 618a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren @Override 6223acc2bb8af7da000d72a8c1d8c28a2792200348Jason Monk protected int getHelpResource() { 6323acc2bb8af7da000d72a8c1d8c28a2792200348Jason Monk return R.string.help_uri_about; 6423acc2bb8af7da000d72a8c1d8c28a2792200348Jason Monk } 6523acc2bb8af7da000d72a8c1d8c28a2792200348Jason Monk 6623acc2bb8af7da000d72a8c1d8c28a2792200348Jason Monk @Override 673aa68c8b80633b9091734fd237e1921fb7efc792Fan Zhang public void onActivityResult(int requestCode, int resultCode, Intent data) { 68b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang final BuildNumberPreferenceController buildNumberPreferenceController = 69b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang getPreferenceController(BuildNumberPreferenceController.class); 70b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang if (buildNumberPreferenceController.onActivityResult(requestCode, resultCode, data)) { 713aa68c8b80633b9091734fd237e1921fb7efc792Fan Zhang return; 723aa68c8b80633b9091734fd237e1921fb7efc792Fan Zhang } 733aa68c8b80633b9091734fd237e1921fb7efc792Fan Zhang super.onActivityResult(requestCode, resultCode, data); 743aa68c8b80633b9091734fd237e1921fb7efc792Fan Zhang } 753aa68c8b80633b9091734fd237e1921fb7efc792Fan Zhang 763aa68c8b80633b9091734fd237e1921fb7efc792Fan Zhang @Override 77c62e2f033d945b8bc576f87bc5aaaba37e2afc87Fan Zhang protected String getLogTag() { 78c62e2f033d945b8bc576f87bc5aaaba37e2afc87Fan Zhang return LOG_TAG; 79c62e2f033d945b8bc576f87bc5aaaba37e2afc87Fan Zhang } 80c62e2f033d945b8bc576f87bc5aaaba37e2afc87Fan Zhang 81c62e2f033d945b8bc576f87bc5aaaba37e2afc87Fan Zhang @Override 82c62e2f033d945b8bc576f87bc5aaaba37e2afc87Fan Zhang protected int getPreferenceScreenResId() { 83c62e2f033d945b8bc576f87bc5aaaba37e2afc87Fan Zhang return R.xml.device_info_settings; 84c62e2f033d945b8bc576f87bc5aaaba37e2afc87Fan Zhang } 85c62e2f033d945b8bc576f87bc5aaaba37e2afc87Fan Zhang 86c62e2f033d945b8bc576f87bc5aaaba37e2afc87Fan Zhang @Override 871d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantler protected List<AbstractPreferenceController> getPreferenceControllers(Context context) { 88b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang return buildPreferenceControllers(context, getActivity(), this /* fragment */, 89b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang getLifecycle()); 90e3751a1a7357ed6c185187d0fc09ddce05f060bdDoris Ling } 91e3751a1a7357ed6c185187d0fc09ddce05f060bdDoris Ling 92d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang private static class SummaryProvider implements SummaryLoader.SummaryProvider { 93d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang 94d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang private final SummaryLoader mSummaryLoader; 95d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang 96d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang public SummaryProvider(SummaryLoader summaryLoader) { 97d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang mSummaryLoader = summaryLoader; 98d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang } 99d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang 100d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang @Override 101d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang public void setListening(boolean listening) { 102d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang if (listening) { 103d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang mSummaryLoader.setSummary(this, DeviceModelPreferenceController.getDeviceModel()); 104d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang } 105d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang } 106d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang } 107d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang 108d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY 109d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang = new SummaryLoader.SummaryProviderFactory() { 110d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang @Override 111d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang public SummaryLoader.SummaryProvider createSummaryProvider(Activity activity, 112d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang SummaryLoader summaryLoader) { 113d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang return new SummaryProvider(summaryLoader); 114d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang } 115d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang }; 116d53859df7d7e0f4f7212a97e224f3bb906960749Fan Zhang 1171d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantler private static List<AbstractPreferenceController> buildPreferenceControllers(Context context, 118b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang Activity activity, Fragment fragment, Lifecycle lifecycle) { 1191d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantler final List<AbstractPreferenceController> controllers = new ArrayList<>(); 120b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang controllers.add( 121b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang new BuildNumberPreferenceController(context, activity, fragment, lifecycle)); 122b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang controllers.add(new AdditionalSystemUpdatePreferenceController(context)); 123b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang controllers.add(new ManualPreferenceController(context)); 124b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang controllers.add(new FeedbackPreferenceController(fragment, context)); 125b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang controllers.add(new KernelVersionPreferenceController(context)); 126b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang controllers.add(new BasebandVersionPreferenceController(context)); 127b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang controllers.add(new FirmwareVersionPreferenceController(context, lifecycle)); 128b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang controllers.add(new RegulatoryInfoPreferenceController(context)); 129dc5a06e7e49e19fb33ebd9616d5a91aadcca4901Fan Zhang controllers.add(new DeviceModelPreferenceController(context, fragment)); 130b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang controllers.add(new SecurityPatchPreferenceController(context)); 131b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang controllers.add(new FccEquipmentIdPreferenceController(context)); 132b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang controllers.add(new SELinuxStatusPreferenceController(context)); 133b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang controllers.add(new SafetyInfoPreferenceController(context)); 134b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang return controllers; 135b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang } 136b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang 1372397a7391e2ba9434ee89345c1d3a47948d8f226Amith Yamasani /** 138b2385ea46286933add8ea3fb86db7870fe294334Fabrice Di Meglio * For Search. 139b2385ea46286933add8ea3fb86db7870fe294334Fabrice Di Meglio */ 140b2385ea46286933add8ea3fb86db7870fe294334Fabrice Di Meglio public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = 141efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang new BaseSearchIndexProvider() { 142efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang 143efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang @Override 144efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang public List<SearchIndexableResource> getXmlResourcesToIndex( 145efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang Context context, boolean enabled) { 146efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang final SearchIndexableResource sir = new SearchIndexableResource(context); 147efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang sir.xmlResId = R.xml.device_info_settings; 148efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang return Arrays.asList(sir); 149b2385ea46286933add8ea3fb86db7870fe294334Fabrice Di Meglio } 150b2385ea46286933add8ea3fb86db7870fe294334Fabrice Di Meglio 151efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang @Override 1521d583e125faf3ae4c9cd82636d8f3ecf1cdec3aaTony Mantler public List<AbstractPreferenceController> getPreferenceControllers(Context context) { 153b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang return buildPreferenceControllers(context, null /*activity */, 154b00811da646a2ea335074f2a478f3c18b1a09274Fan Zhang null /* fragment */, null /* lifecycle */); 155efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang } 1562e89758b016ae4ddbf52958ae3397e6688bcee23Matthew Fritze 1572e89758b016ae4ddbf52958ae3397e6688bcee23Matthew Fritze @Override 1582e89758b016ae4ddbf52958ae3397e6688bcee23Matthew Fritze public List<String> getNonIndexableKeys(Context context) { 1592e89758b016ae4ddbf52958ae3397e6688bcee23Matthew Fritze List<String> keys = super.getNonIndexableKeys(context); 1602e89758b016ae4ddbf52958ae3397e6688bcee23Matthew Fritze keys.add(KEY_LEGAL_CONTAINER); 1612e89758b016ae4ddbf52958ae3397e6688bcee23Matthew Fritze return keys; 1622e89758b016ae4ddbf52958ae3397e6688bcee23Matthew Fritze } 163efb8d625a21125bf3d9dabb849380cb41d476edeFan Zhang }; 164afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project} 165