1a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang/* 2a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang * Copyright (C) 2017 The Android Open Source Project 3a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang * 4a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang * Licensed under the Apache License, Version 2.0 (the "License"); 5a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang * you may not use this file except in compliance with the License. 6a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang * You may obtain a copy of the License at 7a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang * 8a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang * http://www.apache.org/licenses/LICENSE-2.0 9a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang * 10a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang * Unless required by applicable law or agreed to in writing, software 11a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang * distributed under the License is distributed on an "AS IS" BASIS, 12a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang * See the License for the specific language governing permissions and 14a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang * limitations under the License. 15a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang */ 16a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang 17a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhangpackage com.android.settings.security.screenlock; 18a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang 19a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhangimport android.app.Fragment; 20a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhangimport android.content.Context; 21a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhangimport android.os.UserHandle; 22a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhangimport android.provider.SearchIndexableResource; 23a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang 24a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhangimport com.android.internal.logging.nano.MetricsProto; 25a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhangimport com.android.internal.widget.LockPatternUtils; 26a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhangimport com.android.settings.R; 27a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhangimport com.android.settings.dashboard.DashboardFragment; 28a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhangimport com.android.settings.search.BaseSearchIndexProvider; 29a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhangimport com.android.settings.search.Indexable; 30a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhangimport com.android.settings.security.OwnerInfoPreferenceController; 31a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhangimport com.android.settingslib.core.AbstractPreferenceController; 32a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhangimport com.android.settingslib.core.lifecycle.Lifecycle; 33a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang 34a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhangimport java.util.ArrayList; 35a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhangimport java.util.List; 36a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang 37a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhangpublic class ScreenLockSettings extends DashboardFragment 38a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang implements OwnerInfoPreferenceController.OwnerInfoCallback { 39a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang 40a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang private static final String TAG = "ScreenLockSettings"; 41a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang 428c5bc0abf004d47870d34906c32ca0b1af9f6d96jeffreyhuang private static final String KEY_LOCK_SCREEN_TITLE = "security_settings_password_sub_screen"; 438c5bc0abf004d47870d34906c32ca0b1af9f6d96jeffreyhuang 44a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang private static final int MY_USER_ID = UserHandle.myUserId(); 45a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang private LockPatternUtils mLockPatternUtils; 46a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang 47a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang @Override 48a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang public int getMetricsCategory() { 49ca2e54be593aa49f07456b800698f1c4ef69843cFan Zhang return MetricsProto.MetricsEvent.SCREEN_LOCK_SETTINGS; 50a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang } 51a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang 52a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang @Override 53a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang protected int getPreferenceScreenResId() { 54a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang return R.xml.screen_lock_settings; 55a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang } 56a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang 57a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang @Override 58a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang protected String getLogTag() { 59a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang return TAG; 60a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang } 61a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang 62a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang @Override 63f7843adabd4e8e1cc84a52721daabefa3a1410fdFan Zhang protected List<AbstractPreferenceController> createPreferenceControllers(Context context) { 64a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang mLockPatternUtils = new LockPatternUtils(context); 65a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang return buildPreferenceControllers(context, this /* parent */, getLifecycle(), 66a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang mLockPatternUtils); 67a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang } 68a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang 69a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang @Override 70a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang public void onOwnerInfoUpdated() { 71f7843adabd4e8e1cc84a52721daabefa3a1410fdFan Zhang use(OwnerInfoPreferenceController.class).updateSummary(); 72a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang } 73a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang 74a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang private static List<AbstractPreferenceController> buildPreferenceControllers(Context context, 75a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang Fragment parent, Lifecycle lifecycle, LockPatternUtils lockPatternUtils) { 76a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang final List<AbstractPreferenceController> controllers = new ArrayList<>(); 77a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang controllers.add(new PatternVisiblePreferenceController( 78a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang context, MY_USER_ID, lockPatternUtils)); 79a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang controllers.add(new PowerButtonInstantLockPreferenceController( 80a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang context, MY_USER_ID, lockPatternUtils)); 81a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang controllers.add(new LockAfterTimeoutPreferenceController( 82a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang context, MY_USER_ID, lockPatternUtils)); 83a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang controllers.add(new OwnerInfoPreferenceController(context, parent, lifecycle)); 84a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang return controllers; 85a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang } 86a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang 87a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang 88a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = 89a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang new BaseSearchIndexProvider() { 90a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang @Override 91a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang public List<SearchIndexableResource> getXmlResourcesToIndex(Context context, 92a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang boolean enabled) { 93a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang final ArrayList<SearchIndexableResource> result = new ArrayList<>(); 94a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang 95a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang final SearchIndexableResource sir = new SearchIndexableResource(context); 96a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang sir.xmlResId = R.xml.screen_lock_settings; 97a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang result.add(sir); 98a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang return result; 99a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang } 100a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang 101a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang @Override 102aed8994f6f50a6bc0adfaa92b499ebde3a8f2a76Fan Zhang public List<AbstractPreferenceController> createPreferenceControllers( 103a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang Context context) { 104a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang return buildPreferenceControllers(context, null /* parent */, 105a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang null /* lifecycle */, new LockPatternUtils(context)); 106a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang } 1078c5bc0abf004d47870d34906c32ca0b1af9f6d96jeffreyhuang 1088c5bc0abf004d47870d34906c32ca0b1af9f6d96jeffreyhuang @Override 1098c5bc0abf004d47870d34906c32ca0b1af9f6d96jeffreyhuang public List<String> getNonIndexableKeys(Context context) { 1108c5bc0abf004d47870d34906c32ca0b1af9f6d96jeffreyhuang final List<String> keys = super.getNonIndexableKeys(context); 1118c5bc0abf004d47870d34906c32ca0b1af9f6d96jeffreyhuang keys.add(KEY_LOCK_SCREEN_TITLE); 1128c5bc0abf004d47870d34906c32ca0b1af9f6d96jeffreyhuang return keys; 1138c5bc0abf004d47870d34906c32ca0b1af9f6d96jeffreyhuang } 114a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang }; 115a681094e8a30e42e34e261d9e928709256bb8f61Fan Zhang} 116