Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d02a287e authored by Xiyuan Xia's avatar Xiyuan Xia Committed by Android Git Automerger
Browse files

am 00d1fcf7: Merge "No input instead of disabling password entry" into mnc-dev

* commit '00d1fcf7':
  No input instead of disabling password entry
parents 0b1165c0 00d1fcf7
Loading
Loading
Loading
Loading
+49 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2015 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.internal.widget;

import android.text.InputFilter;
import android.text.Spanned;
import android.widget.TextView;

/**
 * Helper class to disable input on a TextView. The input is disabled by swapping in an InputFilter
 * that discards all changes. Use with care if you have customized InputFilter on the target
 * TextView.
 */
public class TextViewInputDisabler {
    private TextView mTextView;
    private InputFilter[] mDefaultFilters;
    private InputFilter[] mNoInputFilters = new InputFilter[] {
            new InputFilter () {
                @Override
                public CharSequence filter(CharSequence source, int start, int end, Spanned dest,
                        int dstart, int dend) {
                    return "";
                }
            }
    };

    public TextViewInputDisabler(TextView textView) {
        mTextView = textView;
        mDefaultFilters = mTextView.getFilters();
    }

    public void setInputEnabled(boolean enabled) {
        mTextView.setFilters(enabled ? mDefaultFilters : mNoInputFilters);
    }
}
+7 −2
Original line number Diff line number Diff line
@@ -35,6 +35,8 @@ import android.view.inputmethod.InputMethodSubtype;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;

import com.android.internal.widget.TextViewInputDisabler;

import java.util.List;
/**
 * Displays an alphanumeric (latin-1) key entry for the user to enter
@@ -49,6 +51,8 @@ public class KeyguardPasswordView extends KeyguardAbsKeyInputView

    InputMethodManager mImm;
    private TextView mPasswordEntry;
    private TextViewInputDisabler mPasswordEntryDisabler;

    private Interpolator mLinearOutSlowInInterpolator;
    private Interpolator mFastOutLinearInInterpolator;

@@ -70,7 +74,7 @@ public class KeyguardPasswordView extends KeyguardAbsKeyInputView

    protected void resetState() {
        mSecurityMessageDisplay.setMessage(R.string.kg_password_instructions, false);
        mPasswordEntry.setEnabled(true);
        setPasswordEntryEnabled(true);
    }

    @Override
@@ -123,6 +127,7 @@ public class KeyguardPasswordView extends KeyguardAbsKeyInputView
                Context.INPUT_METHOD_SERVICE);

        mPasswordEntry = (TextView) findViewById(getPasswordTextViewId());
        mPasswordEntryDisabler = new TextViewInputDisabler(mPasswordEntry);
        mPasswordEntry.setKeyListener(TextKeyListener.getInstance());
        mPasswordEntry.setInputType(InputType.TYPE_CLASS_TEXT
                | InputType.TYPE_TEXT_VARIATION_PASSWORD);
@@ -185,7 +190,7 @@ public class KeyguardPasswordView extends KeyguardAbsKeyInputView

    @Override
    protected void setPasswordEntryEnabled(boolean enabled) {
        mPasswordEntry.setEnabled(enabled);
        mPasswordEntryDisabler.setInputEnabled(enabled);
    }

    /**