add initial event fetching in Room
This commit is contained in:
parent
847db07d66
commit
427a3fa6fc
|
@ -82,11 +82,11 @@ fun Context.updateListWidget() {
|
||||||
fun Context.scheduleAllEvents() {
|
fun Context.scheduleAllEvents() {
|
||||||
val events = dbHelper.getEventsAtReboot()
|
val events = dbHelper.getEventsAtReboot()
|
||||||
events.forEach {
|
events.forEach {
|
||||||
scheduleNextEventReminder(it, dbHelper)
|
scheduleNextEventReminder(it)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Context.scheduleNextEventReminder(event: Event, dbHelper: DBHelper, activity: SimpleActivity? = null) {
|
fun Context.scheduleNextEventReminder(event: Event, activity: SimpleActivity? = null) {
|
||||||
if (event.getReminders().isEmpty()) {
|
if (event.getReminders().isEmpty()) {
|
||||||
activity?.toast(R.string.saving)
|
activity?.toast(R.string.saving)
|
||||||
return
|
return
|
||||||
|
|
|
@ -121,6 +121,8 @@ class Config(context: Context) : BaseConfig(context) {
|
||||||
|
|
||||||
fun getSyncedCalendarIdsAsList() = caldavSyncedCalendarIDs.split(",").filter { it.trim().isNotEmpty() }.map { Integer.parseInt(it) }.toMutableList() as ArrayList<Int>
|
fun getSyncedCalendarIdsAsList() = caldavSyncedCalendarIDs.split(",").filter { it.trim().isNotEmpty() }.map { Integer.parseInt(it) }.toMutableList() as ArrayList<Int>
|
||||||
|
|
||||||
|
fun getDisplayEventTypessAsList() = displayEventTypes.map { it.toLong() }.toMutableList() as ArrayList<Long>
|
||||||
|
|
||||||
fun addDisplayEventType(type: String) {
|
fun addDisplayEventType(type: String) {
|
||||||
addDisplayEventTypes(HashSet<String>(Arrays.asList(type)))
|
addDisplayEventTypes(HashSet<String>(Arrays.asList(type)))
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.simplemobiletools.calendar.pro.helpers
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import androidx.collection.LongSparseArray
|
||||||
import com.simplemobiletools.calendar.pro.activities.SimpleActivity
|
import com.simplemobiletools.calendar.pro.activities.SimpleActivity
|
||||||
import com.simplemobiletools.calendar.pro.extensions.*
|
import com.simplemobiletools.calendar.pro.extensions.*
|
||||||
import com.simplemobiletools.calendar.pro.models.Event
|
import com.simplemobiletools.calendar.pro.models.Event
|
||||||
|
@ -261,38 +262,50 @@ class EventsHelper(val context: Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getEventsSync(fromTS: Long, toTS: Long, eventId: Long = -1L, applyTypeFilter: Boolean, callback: (events: ArrayList<Event>) -> Unit) {
|
fun getEventsSync(fromTS: Long, toTS: Long, eventId: Long = -1L, applyTypeFilter: Boolean, callback: (events: ArrayList<Event>) -> Unit) {
|
||||||
/*var events = ArrayList<Event>()
|
var events: ArrayList<Event>
|
||||||
|
|
||||||
var selection = "$COL_START_TS <= ? AND $COL_END_TS >= ? AND $COL_REPEAT_INTERVAL IS NULL AND $COL_START_TS != 0"
|
//var selection = "$COL_START_TS <= ? AND $COL_END_TS >= ? AND $COL_REPEAT_INTERVAL IS NULL AND $COL_START_TS != 0"
|
||||||
var selection = "$COL_START_TS <= ? AND $COL_END_TS >= ? AND $COL_START_TS != 0"
|
|
||||||
if (eventId != -1L) {
|
|
||||||
selection += " AND $MAIN_TABLE_NAME.$COL_ID = $eventId"
|
|
||||||
}
|
|
||||||
|
|
||||||
if (applyTypeFilter) {
|
events = if (applyTypeFilter) {
|
||||||
val displayEventTypes = context.config.displayEventTypes
|
val displayEventTypes = context.config.displayEventTypes
|
||||||
if (displayEventTypes.isEmpty()) {
|
if (displayEventTypes.isEmpty()) {
|
||||||
callback(ArrayList())
|
callback(ArrayList())
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
val types = TextUtils.join(",", displayEventTypes)
|
eventsDB.getEventsFromToWithTypes(toTS, fromTS, context.config.getDisplayEventTypessAsList()).toMutableList() as ArrayList<Event>
|
||||||
selection += " AND $COL_EVENT_TYPE IN ($types)"
|
}
|
||||||
|
} else {
|
||||||
|
if (eventId == -1L) {
|
||||||
|
eventsDB.getEventsFromTo(toTS, fromTS).toMutableList() as ArrayList<Event>
|
||||||
|
} else {
|
||||||
|
eventsDB.getEventFromToWithId(eventId, toTS, fromTS).toMutableList() as ArrayList<Event>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val selectionArgs = arrayOf(toTS.toString(), fromTS.toString())
|
/*val selectionArgs = arrayOf(toTS.toString(), fromTS.toString())
|
||||||
val cursor = getEventsCursor(selection, selectionArgs)
|
val cursor = getEventsCursor(selection, selectionArgs)
|
||||||
events.addAll(fillEvents(cursor))
|
events.addAll(fillEvents(cursor))
|
||||||
|
|
||||||
events.addAll(getRepeatableEventsFor(fromTS, toTS, eventId, applyTypeFilter))
|
events.addAll(getRepeatableEventsFor(fromTS, toTS, eventId, applyTypeFilter))
|
||||||
|
|
||||||
events.addAll(getAllDayEvents(fromTS, eventId, applyTypeFilter))
|
events.addAll(getAllDayEvents(fromTS, eventId, applyTypeFilter))*/
|
||||||
|
|
||||||
events = events
|
events = events
|
||||||
.asSequence()
|
.asSequence()
|
||||||
.distinct()
|
.distinct()
|
||||||
.filterNot { context.eventsHelper.getEventRepetitionIgnoredOccurrences(it).contains(Formatter.getDayCodeFromTS(it.startTS)) }
|
.filterNot { context.eventsHelper.getEventRepetitionIgnoredOccurrences(it).contains(Formatter.getDayCodeFromTS(it.startTS)) }
|
||||||
.toMutableList() as ArrayList<Event>
|
.toMutableList() as ArrayList<Event>
|
||||||
callback(events)*/
|
|
||||||
|
val eventTypeColors = LongSparseArray<Int>()
|
||||||
|
context.eventTypesDB.getEventTypes().forEach {
|
||||||
|
eventTypeColors.put(it.id!!, it.color)
|
||||||
|
}
|
||||||
|
|
||||||
|
events.forEach {
|
||||||
|
it.updateIsPastEvent()
|
||||||
|
it.color = eventTypeColors.get(it.eventType)!!
|
||||||
|
}
|
||||||
|
|
||||||
|
callback(events)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,14 +11,23 @@ import com.simplemobiletools.calendar.pro.models.Event
|
||||||
|
|
||||||
@Dao
|
@Dao
|
||||||
interface EventsDao {
|
interface EventsDao {
|
||||||
|
@Query("SELECT * FROM events")
|
||||||
|
fun getAllEvents(): List<Event>
|
||||||
|
|
||||||
@Query("SELECT * FROM events WHERE id = :id")
|
@Query("SELECT * FROM events WHERE id = :id")
|
||||||
fun getEventWithId(id: Long): Event?
|
fun getEventWithId(id: Long): Event?
|
||||||
|
|
||||||
@Query("SELECT id FROM events")
|
@Query("SELECT id FROM events")
|
||||||
fun getEventIds(): List<Long>
|
fun getEventIds(): List<Long>
|
||||||
|
|
||||||
@Query("SELECT * FROM events WHERE start_ts <= :startTS AND end_ts >= :endTS AND start_ts != 0")
|
@Query("SELECT * FROM events WHERE start_ts <= :toTS AND end_ts >= :fromTS")
|
||||||
fun getEventsFromTo(startTS: Long, endTS: Long): List<Event>
|
fun getEventsFromTo(toTS: Long, fromTS: Long): List<Event>
|
||||||
|
|
||||||
|
@Query("SELECT * FROM events WHERE id = :id AND start_ts <= :toTS AND end_ts >= :fromTS")
|
||||||
|
fun getEventFromToWithId(id: Long, toTS: Long, fromTS: Long): List<Event>
|
||||||
|
|
||||||
|
@Query("SELECT * FROM events WHERE start_ts <= :toTS AND end_ts >= :fromTS AND start_ts != 0 AND event_type IN (:eventTypeIds)")
|
||||||
|
fun getEventsFromToWithTypes(toTS: Long, fromTS: Long, eventTypeIds: List<Long>): List<Event>
|
||||||
|
|
||||||
@Query("SELECT id FROM events WHERE import_id = :importId")
|
@Query("SELECT id FROM events WHERE import_id = :importId")
|
||||||
fun getEventIdWithImportId(importId: String): Long?
|
fun getEventIdWithImportId(importId: String): Long?
|
||||||
|
|
|
@ -34,6 +34,6 @@ class NotificationReceiver : BroadcastReceiver() {
|
||||||
if (!context.eventsHelper.getEventRepetitionIgnoredOccurrences(event).contains(Formatter.getDayCodeFromTS(event.startTS))) {
|
if (!context.eventsHelper.getEventRepetitionIgnoredOccurrences(event).contains(Formatter.getDayCodeFromTS(event.startTS))) {
|
||||||
context.notifyEvent(event)
|
context.notifyEvent(event)
|
||||||
}
|
}
|
||||||
context.scheduleNextEventReminder(event, context.dbHelper)
|
context.scheduleNextEventReminder(event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue