summaryrefslogtreecommitdiffstats
path: root/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/HomeSettingAdapter.kt
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/HomeSettingAdapter.kt')
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/HomeSettingAdapter.kt72
1 files changed, 27 insertions, 45 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/HomeSettingAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/HomeSettingAdapter.kt
index 58ce343f4..b512845d5 100644
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/HomeSettingAdapter.kt
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/HomeSettingAdapter.kt
@@ -14,69 +14,37 @@ import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
-import androidx.recyclerview.widget.RecyclerView
import kotlinx.coroutines.launch
import org.yuzu.yuzu_emu.R
import org.yuzu.yuzu_emu.databinding.CardHomeOptionBinding
import org.yuzu.yuzu_emu.fragments.MessageDialogFragment
import org.yuzu.yuzu_emu.model.HomeSetting
+import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder
class HomeSettingAdapter(
private val activity: AppCompatActivity,
private val viewLifecycle: LifecycleOwner,
- var options: List<HomeSetting>
-) :
- RecyclerView.Adapter<HomeSettingAdapter.HomeOptionViewHolder>(),
- View.OnClickListener {
+ options: List<HomeSetting>
+) : AbstractListAdapter<HomeSetting, HomeSettingAdapter.HomeOptionViewHolder>(options) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HomeOptionViewHolder {
- val binding =
- CardHomeOptionBinding.inflate(LayoutInflater.from(parent.context), parent, false)
- binding.root.setOnClickListener(this)
- return HomeOptionViewHolder(binding)
- }
-
- override fun getItemCount(): Int {
- return options.size
- }
-
- override fun onBindViewHolder(holder: HomeOptionViewHolder, position: Int) {
- holder.bind(options[position])
- }
-
- override fun onClick(view: View) {
- val holder = view.tag as HomeOptionViewHolder
- if (holder.option.isEnabled.invoke()) {
- holder.option.onClick.invoke()
- } else {
- MessageDialogFragment.newInstance(
- activity,
- titleId = holder.option.disabledTitleId,
- descriptionId = holder.option.disabledMessageId
- ).show(activity.supportFragmentManager, MessageDialogFragment.TAG)
- }
+ CardHomeOptionBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ .also { return HomeOptionViewHolder(it) }
}
inner class HomeOptionViewHolder(val binding: CardHomeOptionBinding) :
- RecyclerView.ViewHolder(binding.root) {
- lateinit var option: HomeSetting
-
- init {
- itemView.tag = this
- }
-
- fun bind(option: HomeSetting) {
- this.option = option
- binding.optionTitle.text = activity.resources.getString(option.titleId)
- binding.optionDescription.text = activity.resources.getString(option.descriptionId)
+ AbstractViewHolder<HomeSetting>(binding) {
+ override fun bind(model: HomeSetting) {
+ binding.optionTitle.text = activity.resources.getString(model.titleId)
+ binding.optionDescription.text = activity.resources.getString(model.descriptionId)
binding.optionIcon.setImageDrawable(
ResourcesCompat.getDrawable(
activity.resources,
- option.iconId,
+ model.iconId,
activity.theme
)
)
- when (option.titleId) {
+ when (model.titleId) {
R.string.get_early_access ->
binding.optionLayout.background =
ContextCompat.getDrawable(
@@ -85,7 +53,7 @@ class HomeSettingAdapter(
)
}
- if (!option.isEnabled.invoke()) {
+ if (!model.isEnabled.invoke()) {
binding.optionTitle.alpha = 0.5f
binding.optionDescription.alpha = 0.5f
binding.optionIcon.alpha = 0.5f
@@ -93,7 +61,7 @@ class HomeSettingAdapter(
viewLifecycle.lifecycleScope.launch {
viewLifecycle.repeatOnLifecycle(Lifecycle.State.CREATED) {
- option.details.collect { updateOptionDetails(it) }
+ model.details.collect { updateOptionDetails(it) }
}
}
binding.optionDetail.postDelayed(
@@ -103,6 +71,20 @@ class HomeSettingAdapter(
},
3000
)
+
+ binding.root.setOnClickListener { onClick(model) }
+ }
+
+ private fun onClick(model: HomeSetting) {
+ if (model.isEnabled.invoke()) {
+ model.onClick.invoke()
+ } else {
+ MessageDialogFragment.newInstance(
+ activity,
+ titleId = model.disabledTitleId,
+ descriptionId = model.disabledMessageId
+ ).show(activity.supportFragmentManager, MessageDialogFragment.TAG)
+ }
}
private fun updateOptionDetails(detailString: String) {