[BiometricsV2] Refactor EnrollFinishFragment
Refactor FingerprintEnrollFinishFragment to kotlin and add bindView()
method for it
Bug: 286197658
Test: atest FingerprintEnrollmentActivityTest
Test: atest biometrics-enrollment-test
Test: Manually test enrollment
Change-Id: I59af5cc96369e63a4d755f5618f05dcf89cb0a50
diff --git a/src/com/android/settings/biometrics2/ui/view/FingerprintEnrollFinishFragment.java b/src/com/android/settings/biometrics2/ui/view/FingerprintEnrollFinishFragment.java
deleted file mode 100644
index e0b991a..0000000
--- a/src/com/android/settings/biometrics2/ui/view/FingerprintEnrollFinishFragment.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2023 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.settings.biometrics2.ui.view;
-
-import android.app.Activity;
-import android.content.Context;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-import androidx.lifecycle.ViewModelProvider;
-
-import com.android.settings.R;
-import com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollFinishViewModel;
-
-import com.google.android.setupcompat.template.FooterBarMixin;
-import com.google.android.setupcompat.template.FooterButton;
-import com.google.android.setupdesign.GlifLayout;
-
-/**
- * Fragment which concludes fingerprint enrollment.
- */
-public class FingerprintEnrollFinishFragment extends Fragment {
-
- private FingerprintEnrollFinishViewModel mViewModel;
-
- private final View.OnClickListener mAddButtonClickListener =
- (v) -> mViewModel.onAddButtonClick();
- private final View.OnClickListener mNextButtonClickListener =
- (v) -> mViewModel.onNextButtonClick();
-
- @Override
- public void onAttach(@NonNull Context context) {
- super.onAttach(context);
- final ViewModelProvider provider = new ViewModelProvider(getActivity());
- mViewModel = provider.get(FingerprintEnrollFinishViewModel.class);
- }
-
- @Nullable
- @Override
- public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
- @Nullable Bundle savedInstanceState) {
-
- GlifLayout view = (GlifLayout) inflater.inflate(
- mViewModel.canAssumeSfps()
- ? R.layout.sfps_enroll_finish
- : R.layout.fingerprint_enroll_finish,
- container,
- false);
-
- final Activity activity = getActivity();
- final GlifLayoutHelper glifLayoutHelper = new GlifLayoutHelper(activity, view);
-
- glifLayoutHelper.setHeaderText(R.string.security_settings_fingerprint_enroll_finish_title);
- if (mViewModel.canAssumeSfps() && mViewModel.isAnotherFingerprintEnrollable()) {
- glifLayoutHelper.setDescriptionText(getString(R.string
- .security_settings_fingerprint_enroll_finish_v2_add_fingerprint_message));
- } else {
- glifLayoutHelper.setDescriptionText(getString(
- R.string.security_settings_fingerprint_enroll_finish_v2_message));
- }
-
- final FooterBarMixin footerBarMixin = view.getMixin(FooterBarMixin.class);
- footerBarMixin.setPrimaryButton(
- new FooterButton.Builder(activity)
- .setText(mViewModel.getRequest().isSuw()
- ? R.string.next_label
- : R.string.security_settings_fingerprint_enroll_done)
- .setListener(mNextButtonClickListener)
- .setButtonType(FooterButton.ButtonType.NEXT)
- .setTheme(R.style.SudGlifButton_Primary)
- .build()
- );
- if (mViewModel.isAnotherFingerprintEnrollable()) {
- footerBarMixin.setSecondaryButton(new FooterButton.Builder(activity)
- .setText(R.string.fingerprint_enroll_button_add)
- .setListener(mAddButtonClickListener)
- .setButtonType(FooterButton.ButtonType.SKIP)
- .setTheme(R.style.SudGlifButton_Secondary)
- .build());
- }
-
- return view;
- }
-}
diff --git a/src/com/android/settings/biometrics2/ui/view/FingerprintEnrollFinishFragment.kt b/src/com/android/settings/biometrics2/ui/view/FingerprintEnrollFinishFragment.kt
new file mode 100644
index 0000000..2ae4764
--- /dev/null
+++ b/src/com/android/settings/biometrics2/ui/view/FingerprintEnrollFinishFragment.kt
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2023 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.settings.biometrics2.ui.view
+
+import android.content.Context
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentActivity
+import androidx.lifecycle.ViewModelProvider
+import com.android.settings.R
+import com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollFinishViewModel
+import com.google.android.setupcompat.template.FooterBarMixin
+import com.google.android.setupcompat.template.FooterButton
+import com.google.android.setupdesign.GlifLayout
+
+/**
+ * Fragment which concludes fingerprint enrollment.
+ */
+class FingerprintEnrollFinishFragment : Fragment() {
+
+ private var _viewModel: FingerprintEnrollFinishViewModel? = null
+ private val viewModel: FingerprintEnrollFinishViewModel
+ get() = _viewModel!!
+
+ private val addButtonClickListener =
+ View.OnClickListener { _: View? -> viewModel.onAddButtonClick() }
+
+ private val nextButtonClickListener =
+ View.OnClickListener { _: View? -> viewModel.onNextButtonClick() }
+ override fun onAttach(context: Context) {
+ super.onAttach(context)
+ _viewModel = ViewModelProvider(requireActivity())[
+ FingerprintEnrollFinishViewModel::class.java
+ ]
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ) : View = (inflater.inflate(
+ if (viewModel.canAssumeSfps())
+ R.layout.sfps_enroll_finish
+ else
+ R.layout.fingerprint_enroll_finish,
+ container,
+ false
+ ) as GlifLayout).also {
+ requireActivity().bindFingerprintEnrollFinishFragment(
+ view = it,
+ isSuw = viewModel.request.isSuw,
+ canAssumeSfps = viewModel.canAssumeSfps(),
+ isAnotherFingerprintEnrollable = viewModel.isAnotherFingerprintEnrollable,
+ nextButtonClickListener = nextButtonClickListener,
+ addButtonClickListener = addButtonClickListener
+ )
+ }
+}
+
+fun FragmentActivity.bindFingerprintEnrollFinishFragment(
+ view: GlifLayout,
+ isSuw: Boolean,
+ canAssumeSfps: Boolean,
+ isAnotherFingerprintEnrollable: Boolean,
+ nextButtonClickListener: View.OnClickListener,
+ addButtonClickListener: View.OnClickListener
+) {
+ GlifLayoutHelper(this, view).apply {
+ setHeaderText(R.string.security_settings_fingerprint_enroll_finish_title)
+ setDescriptionText(
+ getString(
+ if (canAssumeSfps && isAnotherFingerprintEnrollable)
+ R.string.security_settings_fingerprint_enroll_finish_v2_add_fingerprint_message
+ else
+ R.string.security_settings_fingerprint_enroll_finish_v2_message
+ )
+ )
+ }
+
+ view.getMixin(FooterBarMixin::class.java).also { footer ->
+ footer.primaryButton = FooterButton.Builder(this)
+ .setText(
+ if (isSuw)
+ R.string.next_label
+ else
+ R.string.security_settings_fingerprint_enroll_done
+ )
+ .setListener(nextButtonClickListener)
+ .setButtonType(FooterButton.ButtonType.NEXT)
+ .setTheme(R.style.SudGlifButton_Primary)
+ .build()
+ if (isAnotherFingerprintEnrollable) {
+ footer.secondaryButton = FooterButton.Builder(this)
+ .setText(R.string.fingerprint_enroll_button_add)
+ .setListener(addButtonClickListener)
+ .setButtonType(FooterButton.ButtonType.SKIP)
+ .setTheme(R.style.SudGlifButton_Secondary)
+ .build()
+ }
+ }
+
+}