miroir de https://git.suyu.dev/suyu/suyu.git
60 lignes
2.4 KiB
Kotlin
60 lignes
2.4 KiB
Kotlin
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
package dev.suyu.suyu_emu.adapters
|
|
|
|
import android.view.LayoutInflater
|
|
import android.view.ViewGroup
|
|
import dev.suyu.suyu_emu.R
|
|
import dev.suyu.suyu_emu.databinding.CardDriverOptionBinding
|
|
import dev.suyu.suyu_emu.features.settings.model.StringSetting
|
|
import dev.suyu.suyu_emu.model.Driver
|
|
import dev.suyu.suyu_emu.model.DriverViewModel
|
|
import dev.suyu.suyu_emu.utils.ViewUtils.marquee
|
|
import dev.suyu.suyu_emu.utils.ViewUtils.setVisible
|
|
import dev.suyu.suyu_emu.viewholder.AbstractViewHolder
|
|
|
|
class DriverAdapter(private val driverViewModel: DriverViewModel) :
|
|
AbstractSingleSelectionList<Driver, DriverAdapter.DriverViewHolder>(
|
|
driverViewModel.driverList.value
|
|
) {
|
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DriverViewHolder {
|
|
CardDriverOptionBinding.inflate(LayoutInflater.from(parent.context), parent, false)
|
|
.also { return DriverViewHolder(it) }
|
|
}
|
|
|
|
inner class DriverViewHolder(val binding: CardDriverOptionBinding) :
|
|
AbstractViewHolder<Driver>(binding) {
|
|
override fun bind(model: Driver) {
|
|
binding.apply {
|
|
radioButton.isChecked = model.selected
|
|
root.setOnClickListener {
|
|
selectItem(bindingAdapterPosition) {
|
|
driverViewModel.onDriverSelected(it)
|
|
driverViewModel.showClearButton(!StringSetting.DRIVER_PATH.global)
|
|
}
|
|
}
|
|
buttonDelete.setOnClickListener {
|
|
removeSelectableItem(
|
|
bindingAdapterPosition
|
|
) { removedPosition: Int, selectedPosition: Int ->
|
|
driverViewModel.onDriverRemoved(removedPosition, selectedPosition)
|
|
driverViewModel.showClearButton(!StringSetting.DRIVER_PATH.global)
|
|
}
|
|
}
|
|
|
|
// Delay marquee by 3s
|
|
title.marquee()
|
|
version.marquee()
|
|
description.marquee()
|
|
title.text = model.title
|
|
version.text = model.version
|
|
description.text = model.description
|
|
buttonDelete.setVisible(
|
|
model.title != binding.root.context.getString(R.string.system_gpu_driver)
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|