From 9f52a7af66d4211dc50d156fb7f0339a1b94fc8a Mon Sep 17 00:00:00 2001 From: Jakub Kalinowski Date: Sun, 20 Mar 2022 17:30:48 +0100 Subject: [PATCH] Disabled SKIP for non-daily numerical habits --- .../common/dialogs/NumberPickerFactory.kt | 20 +++++++++++++------ .../habits/list/ListHabitsScreen.kt | 4 +++- .../habits/show/ShowHabitActivity.kt | 6 ++++-- .../NumericalCheckmarkWidgetActivity.kt | 1 + .../screens/habits/list/ListHabitsBehavior.kt | 8 +++----- .../screens/habits/show/views/HistoryCard.kt | 10 ++++------ 6 files changed, 29 insertions(+), 20 deletions(-) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt index cc521bd77..e77c41070 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/NumberPickerFactory.kt @@ -37,6 +37,8 @@ import androidx.appcompat.app.AlertDialog import org.isoron.uhabits.HabitsApplication import org.isoron.uhabits.R import org.isoron.uhabits.core.models.Entry +import org.isoron.uhabits.core.models.Frequency +import org.isoron.uhabits.core.models.Frequency.Companion.DAILY import org.isoron.uhabits.core.ui.screens.habits.list.ListHabitsBehavior import org.isoron.uhabits.inject.ActivityContext import org.isoron.uhabits.utils.InterfaceUtils @@ -55,6 +57,7 @@ class NumberPickerFactory unit: String, notes: String, dateString: String, + frequency: Frequency, callback: ListHabitsBehavior.NumberPickerCallback ): AlertDialog { val inflater = LayoutInflater.from(context) @@ -95,7 +98,7 @@ class NumberPickerFactory picker2.value = intValue % 100 etNotes.setText(notes) - val dialog = AlertDialog.Builder(context) + val dialogBuilder = AlertDialog.Builder(context) .setView(view) .setTitle(dateString) .setPositiveButton(R.string.save) { _, _ -> @@ -108,16 +111,21 @@ class NumberPickerFactory .setNegativeButton(android.R.string.cancel) { _, _ -> callback.onNumberPickerDismissed() } - .setNegativeButton(R.string.skip_day) { _, _ -> + .setOnDismissListener { + callback.onNumberPickerDismissed() + } + + + if(frequency == DAILY){ + dialogBuilder.setNegativeButton(R.string.skip_day) { _, _ -> picker.clearFocus() val v = Entry.SKIP.toDouble() / 1000 val note = etNotes.text.toString() callback.onNumberPicked(v, note) } - .setOnDismissListener { - callback.onNumberPickerDismissed() - } - .create() + } + + val dialog = dialogBuilder.create() dialog.setOnShowListener { val preferences = diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt index 774e5345f..4ec28f9f3 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt @@ -40,6 +40,7 @@ import org.isoron.uhabits.core.commands.CreateHabitCommand import org.isoron.uhabits.core.commands.DeleteHabitsCommand import org.isoron.uhabits.core.commands.EditHabitCommand import org.isoron.uhabits.core.commands.UnarchiveHabitsCommand +import org.isoron.uhabits.core.models.Frequency import org.isoron.uhabits.core.models.Habit import org.isoron.uhabits.core.models.PaletteColor import org.isoron.uhabits.core.tasks.TaskRunner @@ -230,9 +231,10 @@ class ListHabitsScreen unit: String, notes: String, dateString: String, + frequency: Frequency, callback: ListHabitsBehavior.NumberPickerCallback ) { - numberPickerFactory.create(value, unit, notes, dateString, callback).show() + numberPickerFactory.create(value, unit, notes, dateString, frequency, callback).show() } override fun showCheckmarkDialog( diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitActivity.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitActivity.kt index 0b696ad4e..4af6948ad 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitActivity.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitActivity.kt @@ -39,6 +39,7 @@ import org.isoron.uhabits.activities.common.dialogs.HistoryEditorDialog import org.isoron.uhabits.activities.common.dialogs.NumberPickerFactory import org.isoron.uhabits.core.commands.Command import org.isoron.uhabits.core.commands.CommandRunner +import org.isoron.uhabits.core.models.Frequency import org.isoron.uhabits.core.models.Habit import org.isoron.uhabits.core.models.PaletteColor import org.isoron.uhabits.core.preferences.Preferences @@ -169,9 +170,10 @@ class ShowHabitActivity : AppCompatActivity(), CommandRunner.Listener { unit: String, notes: String, dateString: String, - callback: ListHabitsBehavior.NumberPickerCallback, + frequency: Frequency, + callback: ListHabitsBehavior.NumberPickerCallback ) { - NumberPickerFactory(this@ShowHabitActivity).create(value, unit, notes, dateString, callback).show() + NumberPickerFactory(this@ShowHabitActivity).create(value, unit, notes, dateString, frequency, callback).show() } override fun showCheckmarkDialog( diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/widgets/activities/NumericalCheckmarkWidgetActivity.kt b/uhabits-android/src/main/java/org/isoron/uhabits/widgets/activities/NumericalCheckmarkWidgetActivity.kt index c557ed942..b7bc7f229 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/widgets/activities/NumericalCheckmarkWidgetActivity.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/widgets/activities/NumericalCheckmarkWidgetActivity.kt @@ -81,6 +81,7 @@ class NumericalCheckmarkWidgetActivity : Activity(), ListHabitsBehavior.NumberPi data.habit.unit, entry.notes, today.toDialogDateString(), + data.habit.frequency, this ).show() } diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehavior.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehavior.kt index d39227927..e93c8f220 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehavior.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehavior.kt @@ -21,11 +21,7 @@ package org.isoron.uhabits.core.ui.screens.habits.list import org.isoron.platform.time.LocalDate import org.isoron.uhabits.core.commands.CommandRunner import org.isoron.uhabits.core.commands.CreateRepetitionCommand -import org.isoron.uhabits.core.models.Habit -import org.isoron.uhabits.core.models.HabitList -import org.isoron.uhabits.core.models.HabitType -import org.isoron.uhabits.core.models.PaletteColor -import org.isoron.uhabits.core.models.Timestamp +import org.isoron.uhabits.core.models.* import org.isoron.uhabits.core.preferences.Preferences import org.isoron.uhabits.core.tasks.ExportCSVTask import org.isoron.uhabits.core.tasks.TaskRunner @@ -58,6 +54,7 @@ open class ListHabitsBehavior @Inject constructor( habit.unit, entry.notes, timestamp.toDialogDateString(), + habit.frequency ) { newValue: Double, newNotes: String, -> val value = (newValue * 1000).roundToInt() commandRunner.run(CreateRepetitionCommand(habitList, habit, timestamp, value, newNotes)) @@ -167,6 +164,7 @@ open class ListHabitsBehavior @Inject constructor( unit: String, notes: String, dateString: String, + frequency: Frequency, callback: NumberPickerCallback ) fun showCheckmarkDialog( diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/show/views/HistoryCard.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/show/views/HistoryCard.kt index a5b65fdc9..e9ac10a52 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/show/views/HistoryCard.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/ui/screens/habits/show/views/HistoryCard.kt @@ -23,16 +23,12 @@ import org.isoron.platform.time.DayOfWeek import org.isoron.platform.time.LocalDate import org.isoron.uhabits.core.commands.CommandRunner import org.isoron.uhabits.core.commands.CreateRepetitionCommand -import org.isoron.uhabits.core.models.Entry +import org.isoron.uhabits.core.models.* import org.isoron.uhabits.core.models.Entry.Companion.SKIP import org.isoron.uhabits.core.models.Entry.Companion.YES_AUTO import org.isoron.uhabits.core.models.Entry.Companion.YES_MANUAL -import org.isoron.uhabits.core.models.Habit -import org.isoron.uhabits.core.models.HabitList import org.isoron.uhabits.core.models.NumericalHabitType.AT_LEAST import org.isoron.uhabits.core.models.NumericalHabitType.AT_MOST -import org.isoron.uhabits.core.models.PaletteColor -import org.isoron.uhabits.core.models.Timestamp import org.isoron.uhabits.core.preferences.Preferences import org.isoron.uhabits.core.ui.screens.habits.list.ListHabitsBehavior import org.isoron.uhabits.core.ui.views.HistoryChart @@ -123,6 +119,7 @@ class HistoryCardPresenter( habit.unit, entry.notes, timestamp.toDialogDateString(), + frequency = habit.frequency ) { newValue: Double, newNotes: String -> val thousands = (newValue * 1000).roundToInt() commandRunner.run( @@ -197,7 +194,8 @@ class HistoryCardPresenter( unit: String, notes: String, dateString: String, - callback: ListHabitsBehavior.NumberPickerCallback, + frequency: Frequency, + callback: ListHabitsBehavior.NumberPickerCallback ) fun showCheckmarkDialog(