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