From 1470dcd560938398cab74b1e3039c4d005324024 Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Mon, 23 Jan 2023 03:50:38 -0600 Subject: [PATCH] Remove toggle delay --- .../habits/list/views/EntryButtonViewTest.kt | 2 +- .../habits/list/views/EntryPanelViewTest.kt | 4 +-- .../habits/list/views/CheckmarkButtonView.kt | 12 +++---- .../habits/list/views/CheckmarkPanelView.kt | 4 +-- .../habits/list/views/HabitCardView.kt | 36 ++----------------- 5 files changed, 13 insertions(+), 45 deletions(-) diff --git a/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/EntryButtonViewTest.kt b/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/EntryButtonViewTest.kt index f37cc1838..32df08758 100644 --- a/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/EntryButtonViewTest.kt +++ b/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/EntryButtonViewTest.kt @@ -44,7 +44,7 @@ class EntryButtonViewTest : BaseViewTest() { view = component.getEntryButtonViewFactory().create().apply { value = Entry.NO color = PaletteUtils.getAndroidTestColor(5) - onToggle = { _, _, _ -> toggled = true } + onToggle = { _, _ -> toggled = true } onEdit = { edited = true } } measureView(view, dpToPixels(48), dpToPixels(48)) diff --git a/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/EntryPanelViewTest.kt b/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/EntryPanelViewTest.kt index f09c48dba..de955deb8 100644 --- a/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/EntryPanelViewTest.kt +++ b/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/list/views/EntryPanelViewTest.kt @@ -77,7 +77,7 @@ class EntryPanelViewTest : BaseViewTest() { @Test fun testToggle() { val timestamps = mutableListOf() - view.onToggle = { t, _, _, _ -> timestamps.add(t) } + view.onToggle = { t, _, _ -> timestamps.add(t) } view.buttons[0].performLongClick() view.buttons[2].performLongClick() view.buttons[3].performLongClick() @@ -88,7 +88,7 @@ class EntryPanelViewTest : BaseViewTest() { fun testToggle_withOffset() { val timestamps = mutableListOf() view.dataOffset = 3 - view.onToggle = { t, _, _, _ -> timestamps += t } + view.onToggle = { t, _, _ -> timestamps += t } view.buttons[0].performLongClick() view.buttons[2].performLongClick() view.buttons[3].performLongClick() diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.kt index 176cec62a..39faa0283 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.kt @@ -44,8 +44,6 @@ import org.isoron.uhabits.utils.sres import org.isoron.uhabits.utils.toMeasureSpec import javax.inject.Inject -const val TOGGLE_DELAY_MILLIS = 2000L - class CheckmarkButtonViewFactory @Inject constructor( @ActivityContext val context: Context, @@ -79,7 +77,7 @@ class CheckmarkButtonView( invalidate() } - var onToggle: (Int, String, Long) -> Unit = { _, _, _ -> } + var onToggle: (Int, String) -> Unit = { _, _ -> } var onEdit: () -> Unit = { } @@ -90,25 +88,25 @@ class CheckmarkButtonView( setOnLongClickListener(this) } - fun performToggle(delay: Long) { + fun performToggle() { value = Entry.nextToggleValue( value = value, isSkipEnabled = preferences.isSkipEnabled, areQuestionMarksEnabled = preferences.areQuestionMarksEnabled ) - onToggle(value, notes, delay) + onToggle(value, notes) performHapticFeedback(HapticFeedbackConstants.LONG_PRESS) invalidate() } override fun onClick(v: View) { - if (preferences.isShortToggleEnabled) performToggle(TOGGLE_DELAY_MILLIS) + if (preferences.isShortToggleEnabled) performToggle() else onEdit() } override fun onLongClick(v: View): Boolean { if (preferences.isShortToggleEnabled) onEdit() - else performToggle(TOGGLE_DELAY_MILLIS) + else performToggle() return true } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkPanelView.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkPanelView.kt index 35f639691..525dac5ad 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkPanelView.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkPanelView.kt @@ -60,7 +60,7 @@ class CheckmarkPanelView( setupButtons() } - var onToggle: (Timestamp, Int, String, Long) -> Unit = { _, _, _, _ -> } + var onToggle: (Timestamp, Int, String) -> Unit = { _, _, _ -> } set(value) { field = value setupButtons() @@ -89,7 +89,7 @@ class CheckmarkPanelView( else -> "" } button.color = color - button.onToggle = { value, notes, delay -> onToggle(timestamp, value, notes, delay) } + button.onToggle = { value, notes -> onToggle(timestamp, value, notes) } button.onEdit = { onEdit(timestamp) } } } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.kt index 424aae50b..189c5c532 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/HabitCardView.kt @@ -57,13 +57,6 @@ class HabitCardViewFactory fun create() = HabitCardView(context, checkmarkPanelFactory, numberPanelFactory, behavior) } -data class DelayedToggle( - var habit: Habit, - var timestamp: Timestamp, - var value: Int, - var notes: String -) - class HabitCardView( @ActivityContext context: Context, checkmarkPanelFactory: CheckmarkPanelViewFactory, @@ -136,7 +129,6 @@ class HabitCardView( private var scoreRing: RingView private var currentToggleTaskId = 0 - private var queuedToggles = mutableListOf() init { scoreRing = RingView(context).apply { @@ -160,12 +152,9 @@ class HabitCardView( } checkmarkPanel = checkmarkPanelFactory.create().apply { - onToggle = { timestamp, value, notes, delay -> - if (delay > 0) triggerRipple(timestamp) - habit?.let { - val taskId = queueToggle(it, timestamp, value, notes); - { runPendingToggles(taskId) }.delay(delay) - } + onToggle = { timestamp, value, notes -> + triggerRipple(timestamp) + habit?.let { behavior.onToggle(it, timestamp, value, notes) } } onEdit = { timestamp -> triggerRipple(timestamp) @@ -205,25 +194,6 @@ class HabitCardView( addView(innerFrame) } - @Synchronized - private fun runPendingToggles(id: Int) { - if (currentToggleTaskId != id) return - for ((h, t, v, n) in queuedToggles) behavior.onToggle(h, t, v, n) - queuedToggles.clear() - } - - @Synchronized - private fun queueToggle( - it: Habit, - timestamp: Timestamp, - value: Int, - notes: String, - ): Int { - currentToggleTaskId += 1 - queuedToggles.add(DelayedToggle(it, timestamp, value, notes)) - return currentToggleTaskId - } - override fun onModelChange() { Handler(Looper.getMainLooper()).post { habit?.let { copyAttributesFrom(it) }