/* * Copyright (C) 2020 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.keyguard; import android.content.res.ColorStateList; import android.view.MotionEvent; import com.android.internal.widget.LockPatternUtils; import com.android.keyguard.KeyguardSecurityModel.SecurityMode; import com.android.systemui.util.ViewController; import javax.inject.Inject; /** Controller for a {@link KeyguardSecurityView}. */ public class KeyguardInputViewController extends ViewController implements KeyguardSecurityView { private final SecurityMode mSecurityMode; private final LockPatternUtils mLockPatternUtils; private KeyguardInputViewController(KeyguardInputView view, SecurityMode securityMode, LockPatternUtils lockPatternUtils, KeyguardSecurityCallback keyguardSecurityCallback) { super(view); mSecurityMode = securityMode; mLockPatternUtils = lockPatternUtils; mView.setKeyguardCallback(keyguardSecurityCallback); } @Override public void init() { super.init(); mView.reset(); } @Override protected void onViewAttached() { } @Override protected void onViewDetached() { } SecurityMode getSecurityMode() { return mSecurityMode; } @Override public void setKeyguardCallback(KeyguardSecurityCallback callback) { mView.setKeyguardCallback(callback); } @Override public void setLockPatternUtils(LockPatternUtils utils) { mView.setLockPatternUtils(utils); } @Override public void reset() { mView.reset(); } @Override public void onPause() { mView.onPause(); } @Override public void onResume(int reason) { mView.onResume(reason); } @Override public boolean needsInput() { return mView.needsInput(); } @Override public KeyguardSecurityCallback getCallback() { return mView.getCallback(); } @Override public void showPromptReason(int reason) { mView.showPromptReason(reason); } @Override public void showMessage(CharSequence message, ColorStateList colorState) { mView.showMessage(message, colorState); } @Override public void showUsabilityHint() { mView.showUsabilityHint(); } @Override public void startAppearAnimation() { mView.startAppearAnimation(); } @Override public boolean startDisappearAnimation(Runnable finishRunnable) { return mView.startDisappearAnimation(finishRunnable); } @Override public CharSequence getTitle() { return mView.getTitle(); } @Override public boolean disallowInterceptTouch(MotionEvent event) { return mView.disallowInterceptTouch(event); } @Override public void onStartingToHide() { mView.onStartingToHide(); } public void showSelf() { KeyguardSecurityViewFlipper flipper = (KeyguardSecurityViewFlipper) mView.getParent(); flipper.setDisplayedChild(flipper.indexOfChild(mView)); } /** Factory for a {@link KeyguardInputViewController}. */ public static class Factory { private final LockPatternUtils mLockPatternUtils; @Inject public Factory(LockPatternUtils lockPatternUtils) { mLockPatternUtils = lockPatternUtils; } /** Create a new {@link KeyguardInputViewController}. */ public KeyguardInputViewController create(KeyguardInputView keyguardInputView, SecurityMode securityMode, KeyguardSecurityCallback keyguardSecurityCallback) { return new KeyguardInputViewController(keyguardInputView, securityMode, mLockPatternUtils, keyguardSecurityCallback); } } }