1 /* <lambda>null2 * Copyright (C) 2024 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 package com.android.virtualization.terminal 17 18 import android.content.Context 19 import android.view.LayoutInflater 20 import android.view.View 21 import android.view.ViewGroup 22 import android.widget.ImageButton 23 import android.widget.TextView 24 import androidx.recyclerview.widget.RecyclerView 25 26 class SettingsPortForwardingInactiveAdapter( 27 private val portsStateManager: PortsStateManager, 28 private val context: Context, 29 ) : SettingsPortForwardingBaseAdapter<SettingsPortForwardingInactiveAdapter.ViewHolder>() { 30 31 override fun getItems(): ArrayList<SettingsPortForwardingItem> { 32 return portsStateManager 33 .getEnabledPorts() 34 .subtract(portsStateManager.getActivePorts()) 35 .map { SettingsPortForwardingItem(it, true) } 36 .toCollection(ArrayList()) 37 } 38 39 class ViewHolder(view: View) : RecyclerView.ViewHolder(view) { 40 val closeButton: ImageButton = 41 view.findViewById(R.id.settings_port_forwarding_inactive_item_close_button) 42 val port: TextView = view.findViewById(R.id.settings_port_forwarding_inactive_item_port) 43 } 44 45 override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): ViewHolder { 46 val view = 47 LayoutInflater.from(viewGroup.context) 48 .inflate(R.layout.settings_port_forwarding_inactive_item, viewGroup, false) 49 return ViewHolder(view) 50 } 51 52 override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) { 53 val port = items[position].port 54 viewHolder.port.text = port.toString() 55 viewHolder.closeButton.contentDescription = 56 context.getString( 57 R.string.settings_port_forwarding_other_enabled_port_close_button, 58 port, 59 ) 60 viewHolder.closeButton.setOnClickListener { _ -> 61 portsStateManager.updateEnabledPort(port, false) 62 } 63 } 64 } 65