Browse Source

Merge pull request #4135 from nextcloud/issue-4099-time-picker-bug

Fixing remind-me-later options
Julius Linus 9 months ago
parent
commit
7b63d0b432

+ 11 - 10
app/src/main/java/com/nextcloud/talk/ui/dialog/DateTimePickerFragment.kt

@@ -102,22 +102,20 @@ class DateTimePickerFragment : DialogFragment() {
             tomorrowTimeStamp = getTimeFromCalendar(
                 hour = HOUR_EIGHT_AM,
                 minute = 0,
-                daysToAdd = 1,
-                weekInYear =
-                currentWeekInYear + 1
+                daysToAdd = 1
             )
 
             binding.dateTimePickerWeekend.visibility = View.GONE // because today is the weekend
         } else {
             tomorrowTimeStamp = getTimeFromCalendar(hour = HOUR_EIGHT_AM, minute = 0, daysToAdd = 1)
-            weekendTimeStamp = getTimeFromCalendar(hour = HOUR_EIGHT_AM, day = Calendar.SATURDAY, minute = 0)
+            weekendTimeStamp = getTimeFromCalendar(hour = HOUR_EIGHT_AM, weekDay = Calendar.SATURDAY, minute = 0)
         }
         binding.dateTimePickerTomorrowTextview.text = getTimeFromTimeStamp(tomorrowTimeStamp)
         binding.dateTimePickerWeekendTextview.text = getTimeFromTimeStamp(weekendTimeStamp)
 
         nextWeekTimeStamp = getTimeFromCalendar(
             hour = HOUR_EIGHT_AM,
-            day = Calendar.MONDAY,
+            weekDay = Calendar.MONDAY,
             minute = 0,
             weekInYear =
             currentWeekInYear + 1
@@ -251,22 +249,25 @@ class DateTimePickerFragment : DialogFragment() {
         timePicker.show(this.parentFragmentManager, TAG)
     }
 
+    /**
+     * You can use `weekDay` or `daysToAdd` or neither but don't use both b/c it messes up the calendar
+     */
     @Suppress("LongParameterList")
     private fun getTimeFromCalendar(
         year: Int = Calendar.getInstance().get(Calendar.YEAR),
         month: Int = Calendar.getInstance().get(Calendar.MONTH),
-        day: Int = Calendar.getInstance().get(Calendar.DAY_OF_WEEK),
+        day: Int = Calendar.getInstance().get(Calendar.DAY_OF_YEAR),
         hour: Int = Calendar.getInstance().get(Calendar.HOUR_OF_DAY),
         minute: Int = Calendar.getInstance().get(Calendar.MINUTE),
         daysToAdd: Int = 0,
-        weekInYear: Int = Calendar.getInstance().get(Calendar.WEEK_OF_YEAR)
+        weekInYear: Int = Calendar.getInstance().get(Calendar.WEEK_OF_YEAR),
+        weekDay: Int = -1
     ): Long {
         val calendar: Calendar = Calendar.getInstance().apply {
             set(Calendar.YEAR, year)
             set(Calendar.MONTH, month)
-            set(Calendar.DAY_OF_WEEK, day)
-            add(Calendar.DAY_OF_WEEK, daysToAdd)
-            set(Calendar.WEEK_OF_YEAR, weekInYear)
+            if (weekDay > -1) set(Calendar.DAY_OF_WEEK, weekDay) else set(Calendar.DAY_OF_YEAR, day)
+            if (daysToAdd > 0) add(Calendar.DAY_OF_YEAR, daysToAdd) else set(Calendar.WEEK_OF_YEAR, weekInYear)
             set(Calendar.HOUR_OF_DAY, hour)
             set(Calendar.MINUTE, minute)
             set(Calendar.SECOND, 0)