Allow toggle to be manually slid on preference screens.

This commit is contained in:
Alex Hart
2023-03-24 09:56:12 -03:00
committed by Greyson Parrelli
parent e83c2f1e05
commit 3ce68a7df8
6 changed files with 20 additions and 5 deletions

View File

@@ -209,8 +209,15 @@ class SwitchPreferenceViewHolder(itemView: View) : PreferenceViewHolder<SwitchPr
override fun bind(model: SwitchPreference) {
super.bind(model)
switchWidget.setOnCheckedChangeListener(null)
switchWidget.isEnabled = model.isEnabled
switchWidget.isChecked = model.isChecked
switchWidget.setOnCheckedChangeListener { _, _ ->
model.onClick()
}
itemView.setOnClickListener {
model.onClick()
}

View File

@@ -39,10 +39,12 @@ object NotificationProfilePreference {
override fun bind(model: Model) {
super.bind(model)
itemView.setOnClickListener { model.onClick() }
switchWidget.setOnCheckedChangeListener(null)
switchWidget.visible = model.showSwitch
switchWidget.isEnabled = model.isEnabled
switchWidget.isChecked = model.isOn
iconView.background.colorFilter = SimpleColorFilter(model.color.colorInt())
switchWidget.setOnCheckedChangeListener { _, _ -> model.onClick() }
}
}
}

View File

@@ -38,18 +38,27 @@ object AsyncSwitch {
override fun bind(model: Model) {
super.bind(model)
switchWidget.setOnCheckedChangeListener(null)
switchWidget.isEnabled = model.isEnabled
switchWidget.isChecked = model.isChecked
itemView.isEnabled = !model.isProcessing && model.isEnabled
switcher.displayedChild = if (model.isProcessing) 1 else 0
itemView.setOnClickListener {
fun onClick() {
if (!model.isProcessing) {
itemView.isEnabled = false
switcher.displayedChild = 1
model.onClick()
}
}
itemView.setOnClickListener {
onClick()
}
switchWidget.setOnCheckedChangeListener { _, _ ->
onClick()
}
}
}
}