blob: b02c9026a4231ed9607e64c8430a7254963888f0 [file] [log] [blame]
Ruchi Kandoi5bf4e1e2019-01-17 15:31:02 -08001/*
2 * Copyright (C) 2019 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
17package com.android.settings.nfc;
18
19import android.content.Context;
20import android.nfc.NfcAdapter;
Jack Yud9e3e6e2022-01-14 23:13:54 +080021import android.os.UserManager;
Ruchi Kandoi5bf4e1e2019-01-17 15:31:02 -080022
Chaohui Wang15ca95a2023-10-23 12:38:18 +080023import androidx.preference.TwoStatePreference;
Ruchi Kandoi5bf4e1e2019-01-17 15:31:02 -080024
25import com.android.settings.R;
26
27/**
28 * SecureNfcEnabler is a helper to manage the Secure Nfc on/off checkbox preference
29 * It turns on/off Secure NFC and ensures the summary of the preference reflects
30 * the current state.
31 */
32public class SecureNfcEnabler extends BaseNfcEnabler {
Chaohui Wang15ca95a2023-10-23 12:38:18 +080033 private final TwoStatePreference mPreference;
Jack Yud9e3e6e2022-01-14 23:13:54 +080034 private final UserManager mUserManager;
Ruchi Kandoi5bf4e1e2019-01-17 15:31:02 -080035
Chaohui Wang15ca95a2023-10-23 12:38:18 +080036 public SecureNfcEnabler(Context context, TwoStatePreference preference) {
Ruchi Kandoi5bf4e1e2019-01-17 15:31:02 -080037 super(context);
38 mPreference = preference;
Jack Yud9e3e6e2022-01-14 23:13:54 +080039 mUserManager = context.getSystemService(UserManager.class);
Ruchi Kandoi5bf4e1e2019-01-17 15:31:02 -080040 }
41
42 @Override
43 protected void handleNfcStateChanged(int newState) {
44 switch (newState) {
45 case NfcAdapter.STATE_OFF:
46 mPreference.setSummary(R.string.nfc_disabled_summary);
47 mPreference.setEnabled(false);
48 break;
49 case NfcAdapter.STATE_ON:
Jack Yu7b95c5d2019-04-09 18:40:21 +080050 mPreference.setSummary(R.string.nfc_secure_toggle_summary);
51 mPreference.setChecked(mPreference.isChecked());
Jack Yud9e3e6e2022-01-14 23:13:54 +080052 mPreference.setEnabled(isToggleable());
Ruchi Kandoi5bf4e1e2019-01-17 15:31:02 -080053 break;
54 case NfcAdapter.STATE_TURNING_ON:
55 mPreference.setEnabled(false);
56 break;
57 case NfcAdapter.STATE_TURNING_OFF:
58 mPreference.setEnabled(false);
59 break;
60 }
61 }
Jack Yud9e3e6e2022-01-14 23:13:54 +080062
63 private boolean isToggleable() {
Jack Yuf8b664e2022-07-28 19:42:27 +080064 if (!mUserManager.isPrimaryUser()) {
Jack Yud9e3e6e2022-01-14 23:13:54 +080065 return false;
66 }
67 return true;
68 }
Ruchi Kandoi5bf4e1e2019-01-17 15:31:02 -080069}