xref: /aosp_15_r20/frameworks/base/packages/SystemUI/src/com/android/systemui/biometrics/ui/CredentialPatternView.kt (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
1 package com.android.systemui.biometrics.ui
2 
3 import android.content.Context
4 import android.graphics.Insets
5 import android.util.AttributeSet
6 import android.view.View
7 import android.view.WindowInsets
8 import android.view.WindowInsets.Type
9 import android.widget.LinearLayout
10 import com.android.systemui.biometrics.AuthPanelController
11 import com.android.systemui.biometrics.plugins.AuthContextPlugins
12 import com.android.systemui.biometrics.ui.binder.CredentialViewBinder
13 import com.android.systemui.biometrics.ui.binder.Spaghetti
14 import com.android.systemui.biometrics.ui.viewmodel.CredentialViewModel
15 
16 /** Pattern credential view for BiometricPrompt. */
17 class CredentialPatternView(context: Context, attrs: AttributeSet?) :
18     LinearLayout(context, attrs), CredentialView, View.OnApplyWindowInsetsListener {
19 
20     /** Initializes the view. */
initnull21     override fun init(
22         viewModel: CredentialViewModel,
23         host: CredentialView.Host,
24         panelViewController: AuthPanelController,
25         animatePanel: Boolean,
26         legacyCallback: Spaghetti.Callback,
27         plugins: AuthContextPlugins?,
28     ) {
29         CredentialViewBinder.bind(
30             this,
31             host,
32             viewModel,
33             panelViewController,
34             animatePanel,
35             legacyCallback,
36             plugins,
37         )
38     }
39 
onFinishInflatenull40     override fun onFinishInflate() {
41         super.onFinishInflate()
42         setOnApplyWindowInsetsListener(this)
43     }
44 
onApplyWindowInsetsnull45     override fun onApplyWindowInsets(v: View, insets: WindowInsets): WindowInsets {
46         val statusBarInsets: Insets = insets.getInsets(Type.statusBars())
47         val navigationInsets: Insets = insets.getInsets(Type.navigationBars())
48 
49         setPadding(0, statusBarInsets.top, 0, navigationInsets.bottom)
50         return WindowInsets.CONSUMED
51     }
52 }
53