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