From 4baccb32a9166dc40f469444dc474ba8242bf94e Mon Sep 17 00:00:00 2001 From: Milton Wu Date: Mon, 10 Jul 2023 16:46:35 +0800 Subject: [PATCH] [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 --- .../view/FingerprintEnrollFinishFragment.java | 103 --------------- .../view/FingerprintEnrollFinishFragment.kt | 117 ++++++++++++++++++ 2 files changed, 117 insertions(+), 103 deletions(-) delete mode 100644 src/com/android/settings/biometrics2/ui/view/FingerprintEnrollFinishFragment.java create mode 100644 src/com/android/settings/biometrics2/ui/view/FingerprintEnrollFinishFragment.kt 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 e0b991aeb4f..00000000000 --- 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 00000000000..2ae47647ae2 --- /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() + } + } + +}