127d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk/*
227d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * Copyright (C) 2014 The Android Open Source Project
327d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk *
427d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * Licensed under the Apache License, Version 2.0 (the "License");
527d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * you may not use this file except in compliance with the License.
627d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * You may obtain a copy of the License at
727d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk *
827d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk *      http://www.apache.org/licenses/LICENSE-2.0
927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk *
1027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * Unless required by applicable law or agreed to in writing, software
1127d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * distributed under the License is distributed on an "AS IS" BASIS,
1227d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1327d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * See the License for the specific language governing permissions and
1427d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * limitations under the License.
1527d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk */
167d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhangpackage com.android.settings.security;
1727d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk
1878121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monkimport android.app.admin.DevicePolicyManager;
1927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkimport android.content.Context;
2078121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monkimport android.content.Intent;
2127d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkimport android.os.Bundle;
225437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roosimport android.os.UserHandle;
237d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhangimport android.provider.SearchIndexableResource;
2427d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkimport android.provider.Settings;
2539b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v14.preference.SwitchPreference;
2639b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v7.preference.Preference;
2739b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v7.preference.Preference.OnPreferenceChangeListener;
2839b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v7.preference.PreferenceScreen;
2927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkimport android.view.LayoutInflater;
3027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkimport android.view.View;
310c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monkimport android.view.ViewGroup;
3227d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkimport android.widget.Switch;
3327d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk
34265d3c2a0c36251bf8a9f571d7239b6dd404d942Tamas Berghammerimport com.android.internal.logging.nano.MetricsProto.MetricsEvent;
3578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monkimport com.android.internal.widget.LockPatternUtils;
367d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhangimport com.android.settings.R;
377d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhangimport com.android.settings.SettingsActivity;
387d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhangimport com.android.settings.SettingsPreferenceFragment;
392eb170cd6ff43db01dc0ff3c1fcac5ebba4489deMaurice Lamimport com.android.settings.password.ChooseLockGeneric;
4027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkimport com.android.settings.search.BaseSearchIndexProvider;
4127d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkimport com.android.settings.search.Indexable;
4227d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkimport com.android.settings.widget.SwitchBar;
4327d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk
447d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhangimport java.util.Arrays;
4578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monkimport java.util.List;
4678121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk
4727d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk/**
4827d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk * Screen pinning settings.
4927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk */
5027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monkpublic class ScreenPinningSettings extends SettingsPreferenceFragment
5127d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk        implements SwitchBar.OnSwitchChangeListener, Indexable {
5227d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk
5378121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk    private static final CharSequence KEY_USE_SCREEN_LOCK = "use_screen_lock";
5478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk    private static final int CHANGE_LOCK_METHOD_REQUEST = 43;
5578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk
5627d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk    private SwitchBar mSwitchBar;
5778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk    private SwitchPreference mUseScreenLock;
5878121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk    private LockPatternUtils mLockPatternUtils;
5927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk
6027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk    @Override
616507613ebcd22e4691c2af92a5c161bd327db336Fan Zhang    public int getMetricsCategory() {
629d1bfd1e8de6e46137a9571507c03526880d6a46Chris Wren        return MetricsEvent.SCREEN_PINNING;
638a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren    }
648a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren
658a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren    @Override
6627d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk    public void onActivityCreated(Bundle savedInstanceState) {
6727d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk        super.onActivityCreated(savedInstanceState);
6827d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk
6927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk        final SettingsActivity activity = (SettingsActivity) getActivity();
704a01283309f737395a01f0fae68a369dc537a8daDoris Ling        activity.setTitle(R.string.screen_pinning_title);
7178121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        mLockPatternUtils = new LockPatternUtils(activity);
7278121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk
7327d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk
7427d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk        mSwitchBar = activity.getSwitchBar();
7527d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk        mSwitchBar.addOnSwitchChangeListener(this);
7627d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk        mSwitchBar.show();
7778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        mSwitchBar.setChecked(isLockToAppEnabled(getActivity()));
7827d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk    }
7927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk
8027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk    @Override
81e0b0e9f9025038d72f8129606cc1f432afcb54e0Fan Zhang    public int getHelpResource() {
82179645eecd1a2321e7dd8992678b47799e60f9e6Fan Zhang        return R.string.help_url_screen_pinning;
83179645eecd1a2321e7dd8992678b47799e60f9e6Fan Zhang    }
84179645eecd1a2321e7dd8992678b47799e60f9e6Fan Zhang
85179645eecd1a2321e7dd8992678b47799e60f9e6Fan Zhang    @Override
860c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk    public void onViewCreated(View view, Bundle savedInstanceState) {
870c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk        super.onViewCreated(view, savedInstanceState);
880c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk        ViewGroup parent = (ViewGroup) view.findViewById(android.R.id.list_container);
890c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk        View emptyView = LayoutInflater.from(getContext())
900c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk                .inflate(R.layout.screen_pinning_instructions, parent, false);
910c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk        parent.addView(emptyView);
920c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk        setEmptyView(emptyView);
930c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk    }
940c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk
950c2ccba2f9c8f683536b167a47b720d52d6893d2Jason Monk    @Override
9627d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk    public void onDestroyView() {
9727d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk        super.onDestroyView();
9827d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk
9927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk        mSwitchBar.removeOnSwitchChangeListener(this);
10027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk        mSwitchBar.hide();
10127d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk    }
10227d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk
10378121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk    private static boolean isLockToAppEnabled(Context context) {
10478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        return Settings.System.getInt(context.getContentResolver(),
10578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk                Settings.System.LOCK_TO_APP_ENABLED, 0) != 0;
10627d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk    }
10727d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk
10827d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk    private void setLockToAppEnabled(boolean isEnabled) {
10927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk        Settings.System.putInt(getContentResolver(), Settings.System.LOCK_TO_APP_ENABLED,
11027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk                isEnabled ? 1 : 0);
11139ab4eae12609a87aee61bffa7920bceba3a5d8dJason Monk        if (isEnabled) {
11239ab4eae12609a87aee61bffa7920bceba3a5d8dJason Monk            // Set the value to match what we have defaulted to in the UI.
11339ab4eae12609a87aee61bffa7920bceba3a5d8dJason Monk            setScreenLockUsedSetting(isScreenLockUsed());
11439ab4eae12609a87aee61bffa7920bceba3a5d8dJason Monk        }
11527d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk    }
11627d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk
11778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk    private boolean isScreenLockUsed() {
11878121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        int def = getCurrentSecurityTitle() != R.string.screen_pinning_unlock_none ? 1 : 0;
11978121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        return Settings.Secure.getInt(getContentResolver(),
12078121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk                Settings.Secure.LOCK_TO_APP_EXIT_LOCKED, def) != 0;
12178121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk    }
12278121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk
12378121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk    private boolean setScreenLockUsed(boolean isEnabled) {
12478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        if (isEnabled) {
12578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            LockPatternUtils lockPatternUtils = new LockPatternUtils(getActivity());
1265437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos            int passwordQuality = lockPatternUtils
1275437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos                    .getKeyguardStoredPasswordQuality(UserHandle.myUserId());
1285437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos            if (passwordQuality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) {
12978121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk                Intent chooseLockIntent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD);
13078121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk                chooseLockIntent.putExtra(
13178121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk                        ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY,
13278121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk                        DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
13378121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk                startActivityForResult(chooseLockIntent, CHANGE_LOCK_METHOD_REQUEST);
13478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk                return false;
13578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            }
13678121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        }
13739ab4eae12609a87aee61bffa7920bceba3a5d8dJason Monk        setScreenLockUsedSetting(isEnabled);
13839ab4eae12609a87aee61bffa7920bceba3a5d8dJason Monk        return true;
13939ab4eae12609a87aee61bffa7920bceba3a5d8dJason Monk    }
14039ab4eae12609a87aee61bffa7920bceba3a5d8dJason Monk
14139ab4eae12609a87aee61bffa7920bceba3a5d8dJason Monk    private void setScreenLockUsedSetting(boolean isEnabled) {
14278121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        Settings.Secure.putInt(getContentResolver(), Settings.Secure.LOCK_TO_APP_EXIT_LOCKED,
14378121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk                isEnabled ? 1 : 0);
14478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk    }
14578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk
14678121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk    @Override
14778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk    public void onActivityResult(int requestCode, int resultCode, Intent data) {
14878121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        super.onActivityResult(requestCode, resultCode, data);
14978121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        if (requestCode == CHANGE_LOCK_METHOD_REQUEST) {
15078121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            LockPatternUtils lockPatternUtils = new LockPatternUtils(getActivity());
1515437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos            boolean validPassQuality = lockPatternUtils.getKeyguardStoredPasswordQuality(
1525437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos                    UserHandle.myUserId())
15378121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk                    != DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
15478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            setScreenLockUsed(validPassQuality);
15578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            // Make sure the screen updates.
15678121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            mUseScreenLock.setChecked(validPassQuality);
15778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        }
15878121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk    }
15978121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk
16078121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk    private int getCurrentSecurityTitle() {
1615437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos        int quality = mLockPatternUtils.getKeyguardStoredPasswordQuality(
1625437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos                UserHandle.myUserId());
16378121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        switch (quality) {
16478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
16578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
16678121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk                return R.string.screen_pinning_unlock_pin;
16778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC:
16878121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC:
16978121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            case DevicePolicyManager.PASSWORD_QUALITY_COMPLEX:
170e7d6e4ddb2371dc49015e17e2d6b9dc604fbbf58Toni Barzic            case DevicePolicyManager.PASSWORD_QUALITY_MANAGED:
17178121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk                return R.string.screen_pinning_unlock_password;
17278121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
1735437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos                if (mLockPatternUtils.isLockPatternEnabled(UserHandle.myUserId())) {
17478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk                    return R.string.screen_pinning_unlock_pattern;
17578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk                }
17678121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        }
17778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        return R.string.screen_pinning_unlock_none;
17878121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk    }
17978121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk
18027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk    /**
18127d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk     * Listens to the state change of the lock-to-app master switch.
18227d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk     */
18327d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk    @Override
18427d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk    public void onSwitchChanged(Switch switchView, boolean isChecked) {
18527d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk        setLockToAppEnabled(isChecked);
18678121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        updateDisplay();
18778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk    }
18878121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk
18978121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk    public void updateDisplay() {
19078121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        PreferenceScreen root = getPreferenceScreen();
19178121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        if (root != null) {
19278121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            root.removeAll();
19378121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        }
19478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        if (isLockToAppEnabled(getActivity())) {
19578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            addPreferencesFromResource(R.xml.screen_pinning_settings);
19678121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            root = getPreferenceScreen();
19778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk
19878121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            mUseScreenLock = (SwitchPreference) root.findPreference(KEY_USE_SCREEN_LOCK);
19978121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            mUseScreenLock.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
20078121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk                @Override
20178121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk                public boolean onPreferenceChange(Preference preference, Object newValue) {
20278121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk                    return setScreenLockUsed((boolean) newValue);
20378121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk                }
20478121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            });
20578121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            mUseScreenLock.setChecked(isScreenLockUsed());
20678121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk            mUseScreenLock.setTitle(getCurrentSecurityTitle());
20778121d9d106f12f2b2bae53d323e89667dbdfeeeJason Monk        }
20827d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk    }
20927d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk
21027d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk    /**
21127d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk     * For search
21227d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk     */
21327d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk    public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
21427d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk        new BaseSearchIndexProvider() {
21527d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk
2167d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhang            @Override
2177d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhang            public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
2187d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhang                    boolean enabled) {
2197d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhang                final SearchIndexableResource sir = new SearchIndexableResource(context);
2207d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhang                sir.xmlResId = R.xml.screen_pinning_settings;
2217d5c9ace64b3b65bb3475d4f25fb5a7ac8c2730fFan Zhang                return Arrays.asList(sir);
22227d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk            }
22327d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk        };
22427d7ea56f3f02ea7efaf1e57b5d6758ddb56c353Jason Monk}
225