1 /* 2 * Copyright (C) 2021 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.systemui.biometrics; 18 19 import android.annotation.NonNull; 20 import android.graphics.PointF; 21 22 import com.android.systemui.R; 23 import com.android.systemui.dump.DumpManager; 24 import com.android.systemui.plugins.statusbar.StatusBarStateController; 25 import com.android.systemui.statusbar.phone.SystemUIDialogManager; 26 import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager; 27 28 /** 29 * Class that coordinates non-HBM animations during enrollment. 30 */ 31 public class UdfpsEnrollViewController extends UdfpsAnimationViewController<UdfpsEnrollView> { 32 33 private final int mEnrollProgressBarRadius; 34 @NonNull private final UdfpsEnrollHelper mEnrollHelper; 35 @NonNull private final UdfpsEnrollHelper.Listener mEnrollHelperListener = 36 new UdfpsEnrollHelper.Listener() { 37 @Override 38 public void onEnrollmentProgress(int remaining, int totalSteps) { 39 mView.onEnrollmentProgress(remaining, totalSteps); 40 } 41 42 @Override 43 public void onEnrollmentHelp(int remaining, int totalSteps) { 44 mView.onEnrollmentHelp(remaining, totalSteps); 45 } 46 47 @Override 48 public void onLastStepAcquired() { 49 mView.onLastStepAcquired(); 50 } 51 }; 52 UdfpsEnrollViewController( @onNull UdfpsEnrollView view, @NonNull UdfpsEnrollHelper enrollHelper, @NonNull StatusBarStateController statusBarStateController, @NonNull PanelExpansionStateManager panelExpansionStateManager, @NonNull SystemUIDialogManager systemUIDialogManager, @NonNull DumpManager dumpManager)53 protected UdfpsEnrollViewController( 54 @NonNull UdfpsEnrollView view, 55 @NonNull UdfpsEnrollHelper enrollHelper, 56 @NonNull StatusBarStateController statusBarStateController, 57 @NonNull PanelExpansionStateManager panelExpansionStateManager, 58 @NonNull SystemUIDialogManager systemUIDialogManager, 59 @NonNull DumpManager dumpManager) { 60 super(view, statusBarStateController, panelExpansionStateManager, systemUIDialogManager, 61 dumpManager); 62 mEnrollProgressBarRadius = getContext().getResources() 63 .getInteger(R.integer.config_udfpsEnrollProgressBar); 64 mEnrollHelper = enrollHelper; 65 mView.setEnrollHelper(mEnrollHelper); 66 } 67 68 @Override getTag()69 @NonNull String getTag() { 70 return "UdfpsEnrollViewController"; 71 } 72 73 @Override onViewAttached()74 protected void onViewAttached() { 75 super.onViewAttached(); 76 if (mEnrollHelper.shouldShowProgressBar()) { 77 // Only need enrollment updates if the progress bar is showing :) 78 mEnrollHelper.setListener(mEnrollHelperListener); 79 } 80 } 81 82 @NonNull 83 @Override getTouchTranslation()84 public PointF getTouchTranslation() { 85 if (!mEnrollHelper.isGuidedEnrollmentStage()) { 86 return new PointF(0, 0); 87 } else { 88 return mEnrollHelper.getNextGuidedEnrollmentPoint(); 89 } 90 } 91 92 @Override getPaddingX()93 public int getPaddingX() { 94 return mEnrollProgressBarRadius; 95 } 96 97 @Override getPaddingY()98 public int getPaddingY() { 99 return mEnrollProgressBarRadius; 100 } 101 } 102