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 1911cd8c5ac95334c9363a82fd81d05d85623f9d17Amith Yamasaniimport android.app.Dialog; 20afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Context; 21afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.EditTextPreference; 22320735917c8b54213725e716548f210dff498f65Gilles Debunneimport android.text.InputType; 23afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.util.AttributeSet; 24afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.View; 25afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.EditText; 26afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 27afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/** 28afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * TODO: Add a soft dialpad for PIN entry. 29afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 30afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectclass EditPinPreference extends EditTextPreference { 31afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 32afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project interface OnPinEnteredListener { 33afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project void onPinEntered(EditPinPreference preference, boolean positiveResult); 34afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 35afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 36afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private OnPinEnteredListener mPinListener; 37afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 38afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public EditPinPreference(Context context, AttributeSet attrs) { 39afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super(context, attrs); 40afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 41afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 42afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public EditPinPreference(Context context, AttributeSet attrs, int defStyle) { 43afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super(context, attrs, defStyle); 44afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 45afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 46afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void setOnPinEnteredListener(OnPinEnteredListener listener) { 47afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPinListener = listener; 48afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 4911cd8c5ac95334c9363a82fd81d05d85623f9d17Amith Yamasani 50afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 51afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onBindDialogView(View view) { 52afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onBindDialogView(view); 5311cd8c5ac95334c9363a82fd81d05d85623f9d17Amith Yamasani 54320735917c8b54213725e716548f210dff498f65Gilles Debunne final EditText editText = getEditText(); 5511cd8c5ac95334c9363a82fd81d05d85623f9d17Amith Yamasani 56afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (editText != null) { 57320735917c8b54213725e716548f210dff498f65Gilles Debunne editText.setInputType(InputType.TYPE_CLASS_NUMBER | 58320735917c8b54213725e716548f210dff498f65Gilles Debunne InputType.TYPE_NUMBER_VARIATION_PASSWORD); 59afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 60afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 61afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 62afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean isDialogOpen() { 6311cd8c5ac95334c9363a82fd81d05d85623f9d17Amith Yamasani Dialog dialog = getDialog(); 6411cd8c5ac95334c9363a82fd81d05d85623f9d17Amith Yamasani return dialog != null && dialog.isShowing(); 65afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 6611cd8c5ac95334c9363a82fd81d05d85623f9d17Amith Yamasani 67afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 68afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onDialogClosed(boolean positiveResult) { 69afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onDialogClosed(positiveResult); 70afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (mPinListener != null) { 71afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPinListener.onPinEntered(this, positiveResult); 72afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 73afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 7411cd8c5ac95334c9363a82fd81d05d85623f9d17Amith Yamasani 75afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void showPinDialog() { 7611cd8c5ac95334c9363a82fd81d05d85623f9d17Amith Yamasani Dialog dialog = getDialog(); 7711cd8c5ac95334c9363a82fd81d05d85623f9d17Amith Yamasani if (dialog == null || !dialog.isShowing()) { 7811cd8c5ac95334c9363a82fd81d05d85623f9d17Amith Yamasani showDialog(null); 7911cd8c5ac95334c9363a82fd81d05d85623f9d17Amith Yamasani } 80afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 81afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project} 82