From 8f9c27c344e568c3e1b7463d23bc9f0003110455 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 7 May 2017 21:54:18 +0200 Subject: [PATCH] couple more repetition fixes --- .../dialogs/RepeatLimitTypePickerDialog.kt | 5 ++--- .../calendar/helpers/DBHelper.kt | 15 +++++++-------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/dialogs/RepeatLimitTypePickerDialog.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/dialogs/RepeatLimitTypePickerDialog.kt index 2c853ffa6..6c577ecbf 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/dialogs/RepeatLimitTypePickerDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/dialogs/RepeatLimitTypePickerDialog.kt @@ -100,8 +100,7 @@ class RepeatLimitTypePickerDialog(val activity: Activity, var repeatLimit: Int, } else { repeatLimit = repeatLimitDateTime.seconds() } - - view.dialog_radio_view.check(R.id.repeat_type_till_date) - updateRepeatLimitText() + callback(repeatLimit) + dialog.dismiss() } } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/DBHelper.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/DBHelper.kt index 91979e0f9..33f47b9f0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/DBHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/helpers/DBHelper.kt @@ -387,7 +387,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont events.forEach { startTimes.put(it.id, it.startTS) if (it.repeatLimit >= 0) { - newEvents.addAll(getEventsRepeatingTillDate(fromTS, toTS, startTimes, getRunningEvents, it)) + newEvents.addAll(getEventsRepeatingTillDateOrForever(fromTS, toTS, startTimes, getRunningEvents, it)) } else { newEvents.addAll(getEventsRepeatingXTimes(fromTS, toTS, startTimes, it)) } @@ -396,10 +396,10 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont return newEvents } - private fun getEventsRepeatingTillDate(fromTS: Int, toTS: Int, startTimes: SparseIntArray, getRunningEvents: Boolean, event: Event): ArrayList { + private fun getEventsRepeatingTillDateOrForever(fromTS: Int, toTS: Int, startTimes: SparseIntArray, getRunningEvents: Boolean, event: Event): ArrayList { val events = ArrayList() - while (event.startTS < toTS && (event.repeatLimit == 0 || event.repeatLimit >= event.startTS)) { - if (event.startTS >= fromTS) { + while (event.startTS <= toTS && (event.repeatLimit == 0 || event.repeatLimit >= event.startTS)) { + if (event.startTS <= toTS && event.endTS >= fromTS) { if (event.repeatInterval % WEEK == 0) { if (event.startTS.isTsOnProperDay(event)) { if (isOnProperWeek(event, startTimes)) { @@ -419,7 +419,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont private fun getEventsRepeatingXTimes(fromTS: Int, toTS: Int, startTimes: SparseIntArray, event: Event): ArrayList { val events = ArrayList() - while (event.repeatLimit < 0 && event.endTS < toTS) { + while (event.repeatLimit < 0 && event.startTS <= toTS) { if (event.repeatInterval != 0 && event.repeatInterval % WEEK == 0) { if (event.startTS.isTsOnProperDay(event)) { if (isOnProperWeek(event, startTimes)) { @@ -429,14 +429,13 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont event.repeatLimit++ } } - event.addIntervalTime() } else { - if (event.startTS >= fromTS && event.startTS < toTS) { + if (event.startTS <= toTS && event.endTS >= fromTS) { events.add(event.copy()) } - event.addIntervalTime() event.repeatLimit++ } + event.addIntervalTime() } return events }