diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index fe30e4047..aa72ceb1f 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -589,7 +589,7 @@ Reload Content Set Dailies default to ‘due’ tab With this option set, the Dailies tasks will default to ‘due’ instead of ‘all’ - "Repeats %1$s every %2$s %3$s %4$s" + "Repeats %1$s every %2$s%3$s %4$s" Your device does not have any of the supported payment methods. Please use the habitica website if you want to purchase gems. Your device does not have any of the supported payment methods. Please use the habitica website if you want to purchase a subscription. diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt index 724643033..3b31c57a6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.kt @@ -338,12 +338,12 @@ class TaskFormActivity : BaseActivity() { } Task.TYPE_DAILY -> { taskSchedulingControls.startDate = task.startDate ?: Date() - taskSchedulingControls.frequency = task.frequency ?: Task.FREQUENCY_DAILY taskSchedulingControls.everyX = task.everyX ?: 1 task.repeat?.let { taskSchedulingControls.weeklyRepeat = it } taskSchedulingControls.daysOfMonth = task.getDaysOfMonth() taskSchedulingControls.weeksOfMonth = task.getWeeksOfMonth() habitAdjustPositiveStreakView.setText((task.streak ?: 0).toString()) + taskSchedulingControls.frequency = task.frequency ?: Task.FREQUENCY_DAILY } Task.TYPE_TODO -> taskSchedulingControls.dueDate = task.dueDate Task.TYPE_REWARD -> rewardValueFormView.value = task.value diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskSchedulingControls.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskSchedulingControls.kt index eda51ed14..65d163cf7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskSchedulingControls.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/TaskSchedulingControls.kt @@ -3,6 +3,8 @@ package com.habitrpg.android.habitica.ui.views.tasks.form import android.app.DatePickerDialog import android.content.Context import android.content.DialogInterface +import android.icu.text.MessageFormat +import android.os.Build import android.text.TextUtils import android.util.AttributeSet import android.view.View @@ -288,52 +290,62 @@ class TaskSchedulingControls @JvmOverloads constructor( var frequencyQualifier = "" when (frequency) { - "daily" -> frequencyQualifier = "day(s)" - "weekly" -> frequencyQualifier = "week(s)" - "monthly" -> frequencyQualifier = "month(s)" - "yearly" -> frequencyQualifier = "year(s)" + "daily" -> frequencyQualifier = if (everyX == 1) "day" else "days" + "weekly" -> frequencyQualifier = if (everyX == 1) "week" else "weeks" + "monthly" -> frequencyQualifier = if (everyX == 1) "month" else "months" + "yearly" -> frequencyQualifier = if (everyX == 1) "year" else "years" } - var weekdays: String - val weekdayStrings = ArrayList() - if (weeklyRepeat.m) { - weekdayStrings.add("Monday") - } - if (weeklyRepeat.t) { - weekdayStrings.add("Tuesday") - } - if (weeklyRepeat.w) { - weekdayStrings.add("Wednesday") - } - if (weeklyRepeat.th) { - weekdayStrings.add("Thursday") - } - if (weeklyRepeat.f) { - weekdayStrings.add("Friday") - } - if (weeklyRepeat.s) { - weekdayStrings.add("Saturday") - } - if (weeklyRepeat.su) { - weekdayStrings.add("Sunday") - } - weekdays = " on " + TextUtils.join(", ", weekdayStrings) - if (frequency != "weekly") { - weekdays = "" + var weekdays = if (frequency == "weekly") { + val weekdayStrings = ArrayList() + if (weeklyRepeat.m) { + weekdayStrings.add("Monday") + } + if (weeklyRepeat.t) { + weekdayStrings.add("Tuesday") + } + if (weeklyRepeat.w) { + weekdayStrings.add("Wednesday") + } + if (weeklyRepeat.th) { + weekdayStrings.add("Thursday") + } + if (weeklyRepeat.f) { + weekdayStrings.add("Friday") + } + if (weeklyRepeat.s) { + weekdayStrings.add("Saturday") + } + if (weeklyRepeat.su) { + weekdayStrings.add("Sunday") + } + " on " + TextUtils.join(", ", weekdayStrings) + } else { + "" } if (frequency == "monthly") { - weekdays = if (daysOfMonth != null) { + weekdays = if (daysOfMonth?.isNotEmpty() == true) { val date = startDateCalendar.get(Calendar.DATE) - " on the $date" + val formattedDate = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + val formatter = MessageFormat("{0,ordinal}", Locale.getDefault()) + formatter.format(arrayOf(date)) + } else date.toString() + " on the $formattedDate" } else { val week = startDateCalendar.get(Calendar.WEEK_OF_MONTH) + val formattedWeek = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + val formatter = MessageFormat("{0,ordinal}", Locale.getDefault()) + formatter.format(arrayOf(week)) + } else week.toString() val dayLongName = startDateCalendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault()) - " on the $week week on $dayLongName" + " on the $formattedWeek week on $dayLongName" } } - val summary = resources.getString(R.string.repeat_summary, frequency, everyX.toString(), frequencyQualifier, weekdays) + val everyXString = if (everyX == 1) "" else "$everyX " + + val summary = resources.getString(R.string.repeat_summary, frequency, everyXString, frequencyQualifier, weekdays) summaryTextView.text = summary } } \ No newline at end of file