blob: b7bf6f768c6e941996a455a0f4c84b45c4f66623 [file] [log] [blame]
/*
* Copyright (C) 2013 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.nfc.NfcAdapter;
import android.nfc.NfcUnlock;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceCategory;
import android.util.Log;
import com.android.internal.widget.LockPatternUtils;
import java.text.DateFormat;
import java.util.Date;
import static android.preference.Preference.OnPreferenceClickListener;
public class NfcLockFragment extends SettingsPreferenceFragment {
private static final String NFC_PAIRING = "nfc_pairing";
private static final String NFC_UNLOCK_ENABLED = "nfc_unlock_enabled";
private static final String TAGS_CATEGORY = "nfc_unlock_tags_category";
private static final String TAG_FORMAT = "Tag # %d";
private NfcUnlock mNfcUnlock;
private LockPatternUtils mLockPatternUtils;
private NfcAdapter mNfcAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mNfcUnlock = NfcUnlock.getInstance(NfcAdapter.getDefaultAdapter(getActivity()));
mLockPatternUtils = new LockPatternUtils(getActivity());
mNfcAdapter = NfcAdapter.getDefaultAdapter(getActivity());
addPreferencesFromResource(R.xml.security_settings_nfc_unlock);
}
@Override
public void onResume() {
super.onResume();
boolean prefsEnabled = (mLockPatternUtils.isLockPasswordEnabled() ||
mLockPatternUtils.isLockPatternEnabled()) && mNfcAdapter.isEnabled();
CheckBoxPreference unlockPref = (CheckBoxPreference) findPreference(NFC_UNLOCK_ENABLED);
unlockPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
mNfcUnlock.setNfcUnlockEnabled((Boolean) newValue);
return true;
}
});
Preference pairingPref = findPreference(NFC_PAIRING);
unlockPref.setEnabled(prefsEnabled);
pairingPref.setEnabled(prefsEnabled);
long[] tagRegistryTimes = mNfcUnlock.getTagRegistryTimes();
unlockPref.setChecked(mNfcUnlock.getNfcUnlockEnabled());
final PreferenceCategory pairedTags = (PreferenceCategory) findPreference(TAGS_CATEGORY);
pairedTags.setEnabled(prefsEnabled);
loadTagList(tagRegistryTimes, pairedTags);
}
private void loadTagList(long[] tagRegistryTimes, final PreferenceCategory pairedTags) {
pairedTags.removeAll();
for (int i = 0; i < tagRegistryTimes.length; i++) {
final Preference thisPreference = new Preference(getActivity());
final long timestamp = tagRegistryTimes[i];
thisPreference.setTitle(String.format(TAG_FORMAT, i));
thisPreference.setSummary(
DateFormat.getDateTimeInstance().format(new Date(tagRegistryTimes[i])));
thisPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
AlertDialog.Builder deleteDialogBuilder = new AlertDialog.Builder(getActivity());
deleteDialogBuilder.setTitle(thisPreference.getTitle());
deleteDialogBuilder.setItems(new String[] {"Delete"},
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == 0) {
if (mNfcUnlock.deregisterTag(timestamp)) {
loadTagList(mNfcUnlock.getTagRegistryTimes(),
pairedTags);
}
}
}
});
deleteDialogBuilder.show();
return true;
}
});
pairedTags.addPreference(thisPreference);
}
}
}