From 3ce68a7df8a6f098718ade7deab208934aee0765 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Fri, 24 Mar 2023 09:56:12 -0300 Subject: [PATCH] Allow toggle to be manually slid on preference screens. --- .../components/settings/DSLSettingsAdapter.kt | 7 +++++++ .../profiles/models/NotificationProfilePreference.kt | 2 ++ .../components/settings/models/AsyncSwitch.kt | 11 ++++++++++- .../res/layout/dsl_async_switch_preference_item.xml | 3 +-- .../main/res/layout/dsl_switch_preference_item.xml | 1 - .../layout/notification_profile_preference_item.xml | 1 - 6 files changed, 20 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsAdapter.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsAdapter.kt index fc1fff568c..8ee0f0c05d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsAdapter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/DSLSettingsAdapter.kt @@ -209,8 +209,15 @@ class SwitchPreferenceViewHolder(itemView: View) : PreferenceViewHolder + model.onClick() + } + itemView.setOnClickListener { model.onClick() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/models/NotificationProfilePreference.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/models/NotificationProfilePreference.kt index 5b8c52f97d..b2ab0c75fb 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/models/NotificationProfilePreference.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/models/NotificationProfilePreference.kt @@ -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() } } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/models/AsyncSwitch.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/models/AsyncSwitch.kt index 5574370137..129aeafd2c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/models/AsyncSwitch.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/models/AsyncSwitch.kt @@ -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() + } } } } diff --git a/app/src/main/res/layout/dsl_async_switch_preference_item.xml b/app/src/main/res/layout/dsl_async_switch_preference_item.xml index 96029ef293..0f4cf2498d 100644 --- a/app/src/main/res/layout/dsl_async_switch_preference_item.xml +++ b/app/src/main/res/layout/dsl_async_switch_preference_item.xml @@ -69,8 +69,7 @@ android:id="@+id/switch_widget" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="center" - android:clickable="false" /> + android:layout_gravity="center" />