From d875af8a8eb1db7af80a993a338be75a040d20c0 Mon Sep 17 00:00:00 2001 From: "Alinson S. Xavier" Date: Sat, 1 Jan 2022 06:30:57 -0600 Subject: [PATCH] CheckmarkDialog: Format date using current locale --- .../activities/common/dialogs/CheckmarkDialog.kt | 11 +++++++---- .../activities/habits/list/ListHabitsScreen.kt | 8 +++++--- .../activities/habits/show/ShowHabitActivity.kt | 9 +++++---- .../java/org/isoron/platform/time/JavaDates.kt | 7 +++++++ .../core/ui/screens/habits/list/ListHabitsBehavior.kt | 5 ++++- .../core/ui/screens/habits/show/views/HistoryCard.kt | 6 +++--- 6 files changed, 31 insertions(+), 15 deletions(-) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/CheckmarkDialog.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/CheckmarkDialog.kt index c80759bae..4e62b614b 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/CheckmarkDialog.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/CheckmarkDialog.kt @@ -8,6 +8,8 @@ import android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE import android.widget.Button import androidx.appcompat.app.AlertDialog import org.isoron.platform.gui.toInt +import org.isoron.platform.time.JavaLocalDateFormatter +import org.isoron.platform.time.LocalDate import org.isoron.uhabits.R import org.isoron.uhabits.core.models.Entry.Companion.NO import org.isoron.uhabits.core.models.Entry.Companion.SKIP @@ -22,6 +24,7 @@ import org.isoron.uhabits.databinding.CheckmarkDialogBinding import org.isoron.uhabits.inject.ActivityContext import org.isoron.uhabits.utils.InterfaceUtils import org.isoron.uhabits.utils.StyledResources +import java.util.Locale import javax.inject.Inject class CheckmarkDialog @@ -36,9 +39,9 @@ class CheckmarkDialog private var selectedButton: Button? = null fun create( - value: Int, + selectedValue: Int, notes: String, - dateString: String, + date: LocalDate, paletteColor: PaletteColor, callback: ListHabitsBehavior.CheckMarkDialogCallback, theme: Theme, @@ -46,11 +49,11 @@ class CheckmarkDialog binding = CheckmarkDialogBinding.inflate(LayoutInflater.from(context)) fontAwesome = InterfaceUtils.getFontAwesome(context)!! binding.etNotes.append(notes) - setUpButtons(value, theme.color(paletteColor).toInt()) + setUpButtons(selectedValue, theme.color(paletteColor).toInt()) val dialog = AlertDialog.Builder(context) .setView(binding.root) - .setTitle(dateString) + .setTitle(JavaLocalDateFormatter(Locale.getDefault()).longFormat(date)) .setPositiveButton(R.string.save) { _, _ -> val newValue = when (selectedButton?.id) { R.id.yesBtn -> YES_MANUAL 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 e3be88a0d..774e5345f 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 @@ -24,6 +24,7 @@ import android.content.Context import android.content.Intent import androidx.appcompat.app.AppCompatActivity import dagger.Lazy +import org.isoron.platform.time.LocalDate import org.isoron.uhabits.R import org.isoron.uhabits.activities.common.dialogs.CheckmarkDialog import org.isoron.uhabits.activities.common.dialogs.ColorPickerDialogFactory @@ -235,16 +236,17 @@ class ListHabitsScreen } override fun showCheckmarkDialog( - value: Int, + selectedValue: Int, notes: String, + date: LocalDate, dateString: String, color: PaletteColor, callback: ListHabitsBehavior.CheckMarkDialogCallback ) { checkMarkDialog.create( - value, + selectedValue, notes, - dateString, + date, color, callback, themeSwitcher.currentTheme!!, 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 a53ff6bfd..0b696ad4e 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 @@ -27,6 +27,7 @@ import androidx.appcompat.app.AppCompatActivity import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import org.isoron.platform.time.LocalDate import org.isoron.uhabits.AndroidDirFinder import org.isoron.uhabits.HabitsApplication import org.isoron.uhabits.R @@ -174,17 +175,17 @@ class ShowHabitActivity : AppCompatActivity(), CommandRunner.Listener { } override fun showCheckmarkDialog( - value: Int, + selectedValue: Int, notes: String, - dateString: String, + date: LocalDate, preferences: Preferences, color: PaletteColor, callback: ListHabitsBehavior.CheckMarkDialogCallback ) { CheckmarkDialog(this@ShowHabitActivity, preferences).create( - value, + selectedValue, notes, - dateString, + date, color, callback, themeSwitcher.currentTheme!!, diff --git a/uhabits-core/src/jvmMain/java/org/isoron/platform/time/JavaDates.kt b/uhabits-core/src/jvmMain/java/org/isoron/platform/time/JavaDates.kt index b922b88fe..32c75eb8c 100644 --- a/uhabits-core/src/jvmMain/java/org/isoron/platform/time/JavaDates.kt +++ b/uhabits-core/src/jvmMain/java/org/isoron/platform/time/JavaDates.kt @@ -19,6 +19,7 @@ package org.isoron.platform.time +import java.text.DateFormat import java.util.Calendar.DAY_OF_MONTH import java.util.Calendar.DAY_OF_WEEK import java.util.Calendar.HOUR_OF_DAY @@ -66,4 +67,10 @@ class JavaLocalDateFormatter(private val locale: Locale) : LocalDateFormatter { val cal = date.toGregorianCalendar() return cal.getDisplayName(DAY_OF_WEEK, SHORT, locale) } + + fun longFormat(date: LocalDate): String { + val df = DateFormat.getDateInstance(DateFormat.LONG, locale) + df.timeZone = TimeZone.getTimeZone("UTC") + return df.format(date.toGregorianCalendar().time) + } } 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 acf1cde73..d39227927 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 @@ -18,6 +18,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 @@ -65,6 +66,7 @@ open class ListHabitsBehavior @Inject constructor( screen.showCheckmarkDialog( entry.value, entry.notes, + timestamp.toLocalDate(), timestamp.toDialogDateString(), habit.color, ) { newValue, newNotes -> @@ -168,8 +170,9 @@ open class ListHabitsBehavior @Inject constructor( callback: NumberPickerCallback ) fun showCheckmarkDialog( - value: Int, + selectedValue: Int, notes: String, + date: LocalDate, dateString: String, color: PaletteColor, callback: CheckMarkDialogCallback 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 95eebbec6..bc60ec398 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 @@ -93,7 +93,7 @@ class HistoryCardPresenter( screen.showCheckmarkDialog( entry.value, entry.notes, - timestamp.toDialogDateString(), + timestamp.toLocalDate(), preferences, habit.color, ) { newValue, newNotes -> @@ -206,9 +206,9 @@ class HistoryCardPresenter( callback: ListHabitsBehavior.NumberPickerCallback, ) fun showCheckmarkDialog( - value: Int, + selectedValue: Int, notes: String, - dateString: String, + date: LocalDate, preferences: Preferences, color: PaletteColor, callback: ListHabitsBehavior.CheckMarkDialogCallback,