mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-02-16 11:50:47 +01:00
Properly calculate weekly day codes from start week timestamp
Because start week timestamp is in local timezone, just adding 86400 is not correct in regions with daylight savings time. See https://github.com/SimpleMobileTools/Simple-Calendar/issues/2211
This commit is contained in:
parent
5d94efc271
commit
d8d65ed415
@ -48,6 +48,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
|
|
||||||
var listener: WeekFragmentListener? = null
|
var listener: WeekFragmentListener? = null
|
||||||
private var weekTimestamp = 0L
|
private var weekTimestamp = 0L
|
||||||
|
private var weekDateTime = DateTime()
|
||||||
private var rowHeight = 0f
|
private var rowHeight = 0f
|
||||||
private var todayColumnIndex = -1
|
private var todayColumnIndex = -1
|
||||||
private var primaryColor = 0
|
private var primaryColor = 0
|
||||||
@ -91,6 +92,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
rowHeight = requireContext().getWeeklyViewItemHeight()
|
rowHeight = requireContext().getWeeklyViewItemHeight()
|
||||||
defaultRowHeight = res.getDimension(R.dimen.weekly_view_row_height)
|
defaultRowHeight = res.getDimension(R.dimen.weekly_view_row_height)
|
||||||
weekTimestamp = requireArguments().getLong(WEEK_START_TIMESTAMP)
|
weekTimestamp = requireArguments().getLong(WEEK_START_TIMESTAMP)
|
||||||
|
weekDateTime = Formatter.getDateTimeFromTS(weekTimestamp)
|
||||||
dimPastEvents = config.dimPastEvents
|
dimPastEvents = config.dimPastEvents
|
||||||
dimCompletedTasks = config.dimCompletedTasks
|
dimCompletedTasks = config.dimCompletedTasks
|
||||||
highlightWeekends = config.highlightWeekends
|
highlightWeekends = config.highlightWeekends
|
||||||
@ -193,14 +195,14 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
binding.weekEventsColumnsHolder.removeAllViews()
|
binding.weekEventsColumnsHolder.removeAllViews()
|
||||||
(0 until config.weeklyViewDays).forEach {
|
(0 until config.weeklyViewDays).forEach {
|
||||||
val column = WeeklyViewDayColumnBinding.inflate(layoutInflater, binding.weekEventsColumnsHolder, false).root
|
val column = WeeklyViewDayColumnBinding.inflate(layoutInflater, binding.weekEventsColumnsHolder, false).root
|
||||||
column.tag = Formatter.getDayCodeFromTS(weekTimestamp + it * DAY_SECONDS)
|
column.tag = Formatter.getDayCodeFromDateTime(weekDateTime.plusDays(it))
|
||||||
binding.weekEventsColumnsHolder.addView(column)
|
binding.weekEventsColumnsHolder.addView(column)
|
||||||
dayColumns.add(column)
|
dayColumns.add(column)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupDayLabels() {
|
private fun setupDayLabels() {
|
||||||
var curDay = Formatter.getDateTimeFromTS(weekTimestamp)
|
var curDay = weekDateTime
|
||||||
val todayCode = Formatter.getDayCodeFromDateTime(DateTime())
|
val todayCode = Formatter.getDayCodeFromDateTime(DateTime())
|
||||||
val screenWidth = context?.usableScreenSize?.x ?: return
|
val screenWidth = context?.usableScreenSize?.x ?: return
|
||||||
val dayWidth = screenWidth / config.weeklyViewDays
|
val dayWidth = screenWidth / config.weeklyViewDays
|
||||||
@ -273,7 +275,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
val event = context?.eventsDB?.getEventOrTaskWithId(eventId)
|
val event = context?.eventsDB?.getEventOrTaskWithId(eventId)
|
||||||
event?.let {
|
event?.let {
|
||||||
val currentStartTime = Formatter.getDateTimeFromTS(event.startTS)
|
val currentStartTime = Formatter.getDateTimeFromTS(event.startTS)
|
||||||
val startTime = Formatter.getDateTimeFromTS(weekTimestamp + index * DAY_SECONDS)
|
val startTime = weekDateTime.plusDays(index)
|
||||||
.withTime(
|
.withTime(
|
||||||
startHour,
|
startHour,
|
||||||
currentStartTime.minuteOfHour,
|
currentStartTime.minuteOfHour,
|
||||||
@ -364,7 +366,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
applyColorFilter(primaryColor.getContrastColor())
|
applyColorFilter(primaryColor.getContrastColor())
|
||||||
|
|
||||||
setOnClickListener {
|
setOnClickListener {
|
||||||
val timestamp = Formatter.getDateTimeFromTS(weekTimestamp + index * DAY_SECONDS).withTime(hour, 0, 0, 0).seconds()
|
val timestamp = weekDateTime.plusDays(index).withTime(hour, 0, 0, 0).seconds()
|
||||||
if (config.allowCreatingTasks) {
|
if (config.allowCreatingTasks) {
|
||||||
val items = arrayListOf(
|
val items = arrayListOf(
|
||||||
RadioItem(TYPE_EVENT, getString(R.string.event)),
|
RadioItem(TYPE_EVENT, getString(R.string.event)),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user