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 58db019a3..404c18e9c 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 @@ -48,6 +48,7 @@ class NumberPickerFactory value: Double, unit: String, notes: String, + dateString: String, callback: ListHabitsBehavior.NumberPickerCallback ): AlertDialog { val inflater = LayoutInflater.from(context) @@ -82,7 +83,7 @@ class NumberPickerFactory etNotes.setText(notes) val dialog = AlertDialog.Builder(context) .setView(view) - .setTitle(R.string.change_value) + .setTitle(dateString) .setPositiveButton(R.string.save) { _, _ -> picker.clearFocus() val v = picker.value + 0.01 * picker2.value 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 ea2ad85b0..f9a9bfef5 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 @@ -228,9 +228,10 @@ class ListHabitsScreen value: Double, unit: String, notes: String, + dateString: String, callback: ListHabitsBehavior.NumberPickerCallback ) { - numberPickerFactory.create(value, unit, notes, callback).show() + numberPickerFactory.create(value, unit, notes, dateString, 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 9dd01b521..e42cd57bf 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 @@ -166,9 +166,10 @@ class ShowHabitActivity : AppCompatActivity(), CommandRunner.Listener { value: Double, unit: String, notes: String, + dateString: String, callback: ListHabitsBehavior.NumberPickerCallback, ) { - NumberPickerFactory(this@ShowHabitActivity).create(value, unit, notes, callback).show() + NumberPickerFactory(this@ShowHabitActivity).create(value, unit, notes, dateString, 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 cdc516e9a..c557ed942 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 @@ -80,6 +80,7 @@ class NumericalCheckmarkWidgetActivity : Activity(), ListHabitsBehavior.NumberPi entry.value / 1000.0, data.habit.unit, entry.notes, + today.toDialogDateString(), this ).show() } diff --git a/uhabits-android/src/main/res/drawable/dialog_bg_input_box.xml b/uhabits-android/src/main/res/drawable/dialog_bg_input_box.xml new file mode 100644 index 000000000..0f2a651a7 --- /dev/null +++ b/uhabits-android/src/main/res/drawable/dialog_bg_input_box.xml @@ -0,0 +1,29 @@ + + + + + + + + \ No newline at end of file diff --git a/uhabits-android/src/main/res/layout/number_picker_dialog.xml b/uhabits-android/src/main/res/layout/number_picker_dialog.xml index 8fc33e764..0bfa7df54 100644 --- a/uhabits-android/src/main/res/layout/number_picker_dialog.xml +++ b/uhabits-android/src/main/res/layout/number_picker_dialog.xml @@ -19,63 +19,95 @@ --> + android:orientation="vertical" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingTop="12dp" + android:paddingStart="10dp" + android:paddingEnd="10dp"> - - - - - - - - + android:layout_height="wrap_content" + android:orientation="horizontal" + android:padding="5dp" + android:baselineAligned="false"> + + + + + + + + + + + + + + + + + + + + - - - - + android:orientation="horizontal" + android:padding="5dp" + android:baselineAligned="false"> + + + + + + + + + + + + diff --git a/uhabits-android/src/main/res/values/attrs.xml b/uhabits-android/src/main/res/values/attrs.xml index 081878e5b..b00eaf69b 100644 --- a/uhabits-android/src/main/res/values/attrs.xml +++ b/uhabits-android/src/main/res/values/attrs.xml @@ -43,6 +43,7 @@ + diff --git a/uhabits-android/src/main/res/values/strings.xml b/uhabits-android/src/main/res/values/strings.xml index c908816c1..6aeb30eb7 100644 --- a/uhabits-android/src/main/res/values/strings.xml +++ b/uhabits-android/src/main/res/values/strings.xml @@ -181,7 +181,7 @@ By status Export Press-and-hold to change the value - Change value + Value Calendar Unit Target Type diff --git a/uhabits-android/src/main/res/values/styles.xml b/uhabits-android/src/main/res/values/styles.xml index 0a3e9da10..46d40c46c 100644 --- a/uhabits-android/src/main/res/values/styles.xml +++ b/uhabits-android/src/main/res/values/styles.xml @@ -63,6 +63,7 @@ @color/grey_200 @color/grey_800 false + @color/white + + + + + diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/Timestamp.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/Timestamp.kt index feb118ce5..2233237c0 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/Timestamp.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/models/Timestamp.kt @@ -20,6 +20,7 @@ package org.isoron.uhabits.core.models import org.isoron.platform.time.LocalDate import org.isoron.uhabits.core.utils.DateFormats.Companion.getCSVDateFormat +import org.isoron.uhabits.core.utils.DateFormats.Companion.getDialogDateFormat import org.isoron.uhabits.core.utils.DateUtils import org.isoron.uhabits.core.utils.DateUtils.Companion.getStartOfTodayCalendar import org.isoron.uhabits.core.utils.DateUtils.Companion.truncate @@ -81,6 +82,10 @@ data class Timestamp(var unixTime: Long) : Comparable { return day } + fun toDialogDateString(): String { + return getDialogDateFormat().format(Date(unixTime)) + } + override fun toString(): String { return getCSVDateFormat().format(Date(unixTime)) } 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 9139da08b..124f17445 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 @@ -54,7 +54,8 @@ open class ListHabitsBehavior @Inject constructor( screen.showNumberPicker( oldValue / 1000, habit.unit, - entry.notes + entry.notes, + timestamp.toDialogDateString(), ) { newValue: Double, newNotes: String, -> val value = (newValue * 1000).roundToInt() commandRunner.run(CreateRepetitionCommand(habitList, habit, timestamp, value, newNotes)) @@ -159,6 +160,7 @@ open class ListHabitsBehavior @Inject constructor( value: Double, unit: String, notes: String, + dateString: String, 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 ae738f932..5e71c4590 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 @@ -110,7 +110,8 @@ class HistoryCardPresenter( screen.showNumberPicker( oldValue / 1000.0, habit.unit, - entry.notes + entry.notes, + timestamp.toDialogDateString(), ) { newValue: Double, newNotes: String -> val thousands = (newValue * 1000).roundToInt() commandRunner.run( @@ -195,6 +196,7 @@ class HistoryCardPresenter( value: Double, unit: String, notes: String, + dateString: String, callback: ListHabitsBehavior.NumberPickerCallback, ) fun showCheckmarkDialog( diff --git a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/utils/DateFormats.kt b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/utils/DateFormats.kt index fc18d5374..8b7b4253b 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/utils/DateFormats.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/uhabits/core/utils/DateFormats.kt @@ -41,5 +41,8 @@ class DateFormats { @JvmStatic fun getCSVDateFormat(): SimpleDateFormat = fromSkeleton("yyyy-MM-dd", Locale.US) + + @JvmStatic fun getDialogDateFormat(): SimpleDateFormat = + fromSkeleton("MMM dd, yyyy", Locale.US) } } diff --git a/uhabits-core/src/jvmTest/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehaviorTest.kt b/uhabits-core/src/jvmTest/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehaviorTest.kt index df58affa6..8192583ad 100644 --- a/uhabits-core/src/jvmTest/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehaviorTest.kt +++ b/uhabits-core/src/jvmTest/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehaviorTest.kt @@ -79,7 +79,7 @@ class ListHabitsBehaviorTest : BaseUnitTest() { @Test fun testOnEdit() { behavior.onEdit(habit2, getToday()) - verify(screen).showNumberPicker(eq(0.1), eq("miles"), eq(""), picker.capture()) + verify(screen).showNumberPicker(eq(0.1), eq("miles"), eq(""), eq("Jan 25, 2015"), picker.capture()) picker.lastValue.onNumberPicked(100.0, "") val today = getTodayWithOffset() assertThat(habit2.computedEntries.get(today).value, equalTo(100000))