pass the original event to addIntervalTime

This commit is contained in:
tibbi 2017-05-08 22:00:49 +02:00
parent dbf1f3dd8f
commit 6fc6514caa
2 changed files with 8 additions and 9 deletions

View File

@ -397,6 +397,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
} }
private fun getEventsRepeatingTillDateOrForever(fromTS: Int, toTS: Int, startTimes: SparseIntArray, event: Event): ArrayList<Event> { private fun getEventsRepeatingTillDateOrForever(fromTS: Int, toTS: Int, startTimes: SparseIntArray, event: Event): ArrayList<Event> {
val original = event.copy()
val events = ArrayList<Event>() val events = ArrayList<Event>()
while (event.startTS <= toTS && (event.repeatLimit == 0 || event.repeatLimit >= event.startTS)) { while (event.startTS <= toTS && (event.repeatLimit == 0 || event.repeatLimit >= event.startTS)) {
if (event.endTS >= fromTS) { if (event.endTS >= fromTS) {
@ -410,12 +411,13 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
events.add(event.copy()) events.add(event.copy())
} }
} }
event.addIntervalTime(context) event.addIntervalTime(original)
} }
return events return events
} }
private fun getEventsRepeatingXTimes(fromTS: Int, toTS: Int, startTimes: SparseIntArray, event: Event): ArrayList<Event> { private fun getEventsRepeatingXTimes(fromTS: Int, toTS: Int, startTimes: SparseIntArray, event: Event): ArrayList<Event> {
val original = event.copy()
val events = ArrayList<Event>() val events = ArrayList<Event>()
while (event.repeatLimit < 0 && event.startTS <= toTS) { while (event.repeatLimit < 0 && event.startTS <= toTS) {
if (event.repeatInterval.isXWeeklyRepetition()) { if (event.repeatInterval.isXWeeklyRepetition()) {
@ -433,7 +435,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
} }
event.repeatLimit++ event.repeatLimit++
} }
event.addIntervalTime(context) event.addIntervalTime(original)
} }
return events return events
} }

View File

@ -1,7 +1,5 @@
package com.simplemobiletools.calendar.models package com.simplemobiletools.calendar.models
import android.content.Context
import com.simplemobiletools.calendar.extensions.dbHelper
import com.simplemobiletools.calendar.extensions.seconds import com.simplemobiletools.calendar.extensions.seconds
import com.simplemobiletools.calendar.helpers.* import com.simplemobiletools.calendar.helpers.*
import com.simplemobiletools.calendar.helpers.Formatter import com.simplemobiletools.calendar.helpers.Formatter
@ -18,7 +16,7 @@ data class Event(var id: Int = 0, var startTS: Int = 0, var endTS: Int = 0, var
private val serialVersionUID = -32456795132345616L private val serialVersionUID = -32456795132345616L
} }
fun addIntervalTime(context: Context) { fun addIntervalTime(original: Event) {
val currStart = Formatter.getDateTimeFromTS(startTS) val currStart = Formatter.getDateTimeFromTS(startTS)
val newStart: DateTime val newStart: DateTime
newStart = when (repeatInterval) { newStart = when (repeatInterval) {
@ -30,7 +28,7 @@ data class Event(var id: Int = 0, var startTS: Int = 0, var endTS: Int = 0, var
if (repeatRule == REPEAT_MONTH_SAME_DAY) { if (repeatRule == REPEAT_MONTH_SAME_DAY) {
currStart.plusMonths(repeatInterval / MONTH) currStart.plusMonths(repeatInterval / MONTH)
} else if (repeatRule == REPEAT_MONTH_EVERY_XTH_DAY) { } else if (repeatRule == REPEAT_MONTH_EVERY_XTH_DAY) {
addXthDayInterval(currStart, context) addXthDayInterval(currStart, original)
} else { } else {
currStart.plusMonths(repeatInterval / MONTH).dayOfMonth().withMaximumValue() currStart.plusMonths(repeatInterval / MONTH).dayOfMonth().withMaximumValue()
} }
@ -48,7 +46,7 @@ data class Event(var id: Int = 0, var startTS: Int = 0, var endTS: Int = 0, var
endTS = newEndTS endTS = newEndTS
} }
private fun addXthDayInterval(currStart: DateTime, context: Context): DateTime { private fun addXthDayInterval(currStart: DateTime, original: Event): DateTime {
val day = currStart.dayOfWeek val day = currStart.dayOfWeek
var order = (currStart.dayOfMonth - 1) / 7 var order = (currStart.dayOfMonth - 1) / 7
val properMonth = currStart.withDayOfMonth(7).plusMonths(repeatInterval / MONTH).withDayOfWeek(day) val properMonth = currStart.withDayOfMonth(7).plusMonths(repeatInterval / MONTH).withDayOfWeek(day)
@ -58,8 +56,7 @@ data class Event(var id: Int = 0, var startTS: Int = 0, var endTS: Int = 0, var
// check if it should be for example Fourth Monday, or Last Monday // check if it should be for example Fourth Monday, or Last Monday
if (order == 3 || order == 4) { if (order == 3 || order == 4) {
val original = context.dbHelper.getEvent(id) val originalDateTime = Formatter.getDateTimeFromTS(original.startTS)
val originalDateTime = Formatter.getDateTimeFromTS(original!!.startTS)
val isLastWeekday = originalDateTime.monthOfYear != originalDateTime.plusDays(7).monthOfYear val isLastWeekday = originalDateTime.monthOfYear != originalDateTime.plusDays(7).monthOfYear
if (isLastWeekday) if (isLastWeekday)
order = -1 order = -1