diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt index 44a7e245d..e3044aa8c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt @@ -1306,6 +1306,9 @@ class EventActivity : SimpleActivity() { // recreate the event if it was moved in a different CalDAV calendar if (mEvent.id != null && oldSource != newSource && oldSource != SOURCE_IMPORTED_ICS) { + if (mRepeatInterval > 0 && wasRepeatable) { + applyOriginalStartEndTimes() + } eventsHelper.deleteEvent(mEvent.id!!, true) mEvent.id = null } @@ -1386,7 +1389,7 @@ class EventActivity : SimpleActivity() { } EDIT_ALL_OCCURRENCES -> { ensureBackgroundThread { - eventsHelper.addEventRepeatLimit(mEvent.id!!, mEventOccurrenceTS) + applyOriginalStartEndTimes() eventsHelper.updateEvent(mEvent, updateAtCalDAV = true, showToasts = true) { finish() } @@ -1396,6 +1399,22 @@ class EventActivity : SimpleActivity() { } } + private fun applyOriginalStartEndTimes() { + // Shift the start and end times of the first (original) event based on the changes made + val originalEvent = eventsDB.getEventWithId(mEvent.id!!) ?: return + val originalStartTS = originalEvent.startTS + val originalEndTS = originalEvent.endTS + val oldStartTS = mOriginalStartTS + val oldEndTS = mOriginalEndTS + + mEvent.apply { + val startTSDelta = oldStartTS - startTS + val endTSDelta = oldEndTS - endTS + startTS = originalStartTS - startTSDelta + endTS = originalEndTS - endTSDelta + } + } + private fun updateStartTexts() { updateStartDateText() updateStartTimeText() diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/TaskActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/TaskActivity.kt index 9dc569daf..8479b7bf6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/TaskActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/TaskActivity.kt @@ -502,7 +502,16 @@ class TaskActivity : SimpleActivity() { } EDIT_ALL_OCCURRENCES -> { ensureBackgroundThread { - eventsHelper.addEventRepeatLimit(mTask.id!!, mTaskOccurrenceTS) + // Shift the start and end times of the first (original) event based on the changes made + val originalEvent = eventsDB.getTaskWithId(mTask.id!!) ?: return@ensureBackgroundThread + val originalStartTS = originalEvent.startTS + val oldStartTS = mOriginalStartTS + + mTask.apply { + val startTSDelta = oldStartTS - startTS + startTS = originalStartTS - startTSDelta + endTS = startTS + } eventsHelper.updateEvent(mTask, updateAtCalDAV = false, showToasts = true) { finish() }