1 /*
2  * Copyright (C) 2023 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.settings.remoteauth.enrolling
18 
19 import android.view.LayoutInflater
20 import android.view.View
21 import android.view.ViewGroup
22 import android.widget.ImageView
23 import android.widget.TextView
24 import androidx.recyclerview.widget.RecyclerView
25 import com.android.settings.R
26 
27 class RemoteAuthEnrollEnrollingRecyclerViewAdapter :
28     RecyclerView.Adapter<RemoteAuthEnrollEnrollingRecyclerViewAdapter.ViewHolder>() {
29     var uiStates = listOf<DiscoveredAuthenticatorUiState>()
30         set(value) {
31             field = value
32             notifyDataSetChanged()
33         }
34 
35 
onCreateViewHoldernull36     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
37         val view = LayoutInflater.from(parent.context)
38             .inflate(R.layout.remote_auth_enrolling_authenticator_item, parent, false)
39         return ViewHolder(view)
40     }
41 
onBindViewHoldernull42     override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {
43         viewHolder.bind(uiStates[position])
44     }
45 
getItemCountnull46     override fun getItemCount() = uiStates.size
47 
48     class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
49         private val titleTextView: TextView = view.requireViewById(R.id.discovered_authenticator_name)
50         private val selectButton: ImageView = view.requireViewById(R.id.authenticator_radio_button)
51         private val checkedDrawable =
52             view.context.getDrawable(R.drawable.ic_radio_button_checked_black_24dp)
53         private val uncheckedDrawable =
54             view.context.getDrawable(R.drawable.ic_radio_button_unchecked_black_24dp)
55 
56         fun bind(discoveredAuthenticatorUiState: DiscoveredAuthenticatorUiState) {
57             titleTextView.text = discoveredAuthenticatorUiState.name
58             selectButton.background = if (discoveredAuthenticatorUiState.isSelected) {
59                 checkedDrawable
60             } else {
61                 uncheckedDrawable
62             }
63             selectButton.setOnClickListener { discoveredAuthenticatorUiState.onSelect() }
64         }
65     }
66 }
67